Re: postgres_fdw bug in 9.6
Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
From: Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
To: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>
Cc: Jeff Janes <jeff.janes@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>,
Robert Haas <robertmhaas@gmail.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-01-11T10:55:48Z
Lists: pgsql-hackers
On 2017/01/11 19:26, Ashutosh Bapat wrote: > On Wed, Jan 11, 2017 at 3:30 PM, Etsuro Fujita > <fujita.etsuro@lab.ntt.co.jp> wrote: >> On 2017/01/11 17:51, Ashutosh Bapat wrote: >>> On Wed, Jan 11, 2017 at 1:15 PM, Etsuro Fujita >>> <fujita.etsuro@lab.ntt.co.jp> wrote: >>>> On 2017/01/11 13:40, Ashutosh Bapat wrote: >>>>> Or it can >>>>> have foreign paths in there, which will need redirection. That's not >>>>> very good. >>>> Maybe I'm missing something, but redirection isn't a problem. >>> Peformance wise it is, correctness-wise it is not. Why do we want to >>> incur a hop, when we can avoid it. >> ISTM that's solving a problem that hasn't been proven to be a problem. > A hop will consume a function call worth CPU at least. Is that a problem in practice? >>>>> 2. Fix existing code by applying patch from [1] >>>> As I said before, that might be fine for 9.6, but I don't think it's a >>>> good >>>> idea to search the pathlist because once we support parameterized foreign >>>> join paths, which is on my TODOs, we would have to traverse through the >>>> possibly-lengthy pathlist to find a local-join path, as mentioned in [3]. >>> I don't agree that pathlists will be long enough to make this a >>> non-attractive solution. For parameterized foreign join paths, with >>> the approach that this patch takes, we will require to search in two >>> such pathlists, inner and outer. >> Sorry, I don't understand this part. > A parameterized join is built if the joining paths are parameterized > as well. Thus building a parameterized local path would require one > to search suitably parameterized paths in joining relations in their > pathlists. Yeah, I'm thinking to (1) create parameterized foreign-join paths from the cheapest_parameterized_paths lists of the outer and inner rels, and (2) create a local-join paths for any parameterized foreign-join path from the component paths chosen from the lists in a similar way as CreateLocalJoinPath creates an unparameterized local-join path from the cheapest-total-cost paths of the outer and inner rels. That's the real reason why I'm proposing to replace GetExistingLocalJoinPath with CreateLocalJoinPath. Best regards, Etsuro Fujita
Commits
-
Fix test case for 'outer pathkeys do not match mergeclauses' fix.
- d397f558d555 9.6.7 landed
- 92123c6ea212 10.2 landed
- 99f6a17dd62a 11.0 landed
-
postgres_fdw: Avoid 'outer pathkeys do not match mergeclauses' error.
- 4a81c022975e 9.6.7 landed
- 3f05a30b50a7 10.2 landed
- 4bbf6edfbd5d 11.0 landed
-
postgres_fdw: Consider foreign joining and foreign sorting together.
- aa09cd242fa7 9.6.0 cited
-
Allow foreign and custom joins to handle EvalPlanQual rechecks.
- 385f337c9f39 9.6.0 cited
-
Allow FDWs to push down quals without breaking EvalPlanQual rechecks.
- 5fc4c26db512 9.6.0 cited