Re: [PERFORM] postgres_fdw and column casting shippability

Поиск
Список
Период
Сортировка
От Jeff Janes
Тема Re: [PERFORM] postgres_fdw and column casting shippability
Дата
Msg-id CAMkU=1yoqZem84+xXzTa=GQnL1k+vaafO2bCBQMukyqh2SQPjA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [PERFORM] postgres_fdw and column casting shippability  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-performance
On Mon, May 15, 2017 at 3:22 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Jeff Janes <jeff.janes@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

В списке pgsql-performance по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [PERFORM] postgres_fdw and column casting shippability
Следующее
От: Adam Brusselback
Дата:
Сообщение: [PERFORM] GIN index not used if created in the same transaction as query