Re: postgres_fdw join pushdown (was Re: Custom/Foreign-Join-APIs)
От | Etsuro Fujita |
---|---|
Тема | Re: postgres_fdw join pushdown (was Re: Custom/Foreign-Join-APIs) |
Дата | |
Msg-id | 56B320DA.4080405@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: postgres_fdw join pushdown (was Re: Custom/Foreign-Join-APIs) (Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>) |
Ответы |
Re: postgres_fdw join pushdown (was Re: Custom/Foreign-Join-APIs)
|
Список | pgsql-hackers |
On 2016/02/04 17:58, Etsuro Fujita wrote: > On 2016/02/04 8:00, Robert Haas wrote: >> On Wed, Feb 3, 2016 at 5:56 PM, Robert Haas <robertmhaas@gmail.com> >> wrote: >>> On Wed, Feb 3, 2016 at 12:08 PM, Ashutosh Bapat >>> <ashutosh.bapat@enterprisedb.com> wrote: >>>> PFA patches with naming conventions similar to previous ones. >>>> pg_fdw_core_v7.patch: core changes >>>> pg_fdw_join_v7.patch: postgres_fdw changes for join pushdown >>>> pg_join_pd_v7.patch: combined patch for ease of testing. One more: I think the following in postgresGetForeignJoinPaths() is a good idea, but I think it's okay to just check whether root->rowMarks is non-NIL, because that since we have rowmarks for all base relations except the target, if we have root->parse->commandType==CMD_DELETE (or root->parse->commandType==CMD_UPDATE), then there would be at least one non-target base relation in the joinrel, which would have a rowmark. + if (root->parse->commandType == CMD_DELETE || + root->parse->commandType == CMD_UPDATE || + root->rowMarks) + { + epq_path = GetPathForEPQRecheck(joinrel); + if (!epq_path) + { + elog(DEBUG3, "could not push down foreign join because a local path suitable for EPQ checks was not found"); + return; + } + } Best regards, Etsuro Fujita
В списке pgsql-hackers по дате отправления: