On Mon, May 15, 2017 at 3:22 PM, Tom Lane <t...@sss.pgh.pa.us> wrote:

> Jeff Janes <jeff.ja...@gmail.com> writes:
> > I've tried versions 9.6.3 and 10dev, and neither do what I expected.  It
> > doesn't seem to be a planning problem where it thinks the fast plan is
> > slower, it just doesn't seem to consider the faster plans as being
> options
> > at all.  Is there some setting to make it realize the cast is shippable?
>
> AFAICS, postgres_fdw doesn't have any knowledge of CoerceViaIO parse
> nodes, so it's never going to consider this type of brute-force cast
> as shippable.  Normal casts would presumably be shippable if the
> underlying function is considered safe.
>

So then, the secret is to write it like this:

explain analyze select data from remote2 join remote1 on (int8in(textout(
remote2.id))  = remote1.id)
   where cutoff > 0.9999;

This works to have the join pushed to the foreign side in 9.6, but not
before that.

Thanks,

Jeff

Reply via email to