Re: [HACKERS] postgres_fdw bug in 9.6
Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
From: Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>,
Robert Haas <robertmhaas@gmail.com>,
Jeff Janes <jeff.janes@gmail.com>,
David Steele <david@pgmasters.net>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-11-30T12:55:51Z
Lists: pgsql-hackers
(2017/11/30 7:32), Tom Lane wrote: > AFAICT, [1] just demonstrates that nobody had thought about the scenario > up to that point, not that the subsequently chosen solution was a good > one. In that example, > > LockRows (cost=100.00..101.18 rows=4 width=70) > Output: tab.a, tab.b, tab.ctid, foo.*, bar.* > -> Nested Loop (cost=100.00..101.14 rows=4 width=70) > Output: tab.a, tab.b, tab.ctid, foo.*, bar.* > Join Filter: (foo.a = tab.a) > -> Seq Scan on public.tab (cost=0.00..1.01 rows=1 width=14) > Output: tab.a, tab.b, tab.ctid > -> Foreign Scan (cost=100.00..100.08 rows=4 width=64) > Output: foo.*, foo.a, bar.*, bar.a > Relations: (public.foo) INNER JOIN (public.bar) > Remote SQL: SELECT l.a1, l.a2, r.a1, r.a2 FROM (SELECT ROW(l.a9), l.a9 FROM (SELECT a a9 FROM public.foo FOR UPDATE) l) l (a1, a2) INNER JOIN (SELECT ROW(r.a9), r.a9 FROM (SELECT a a9 FROM public.bar FOR UPDATE) r) r (a1, a2) ON ((l.a2 = r.a2)) > > the output of the foreign join cannot change during EPQ, since the remote > server already locked the rows before returning them. The only thing that > can change is the output of the local scan on public.tab. Yes, we then > need to re-verify that foo.a = tab.a ... but in this example, that's the > responsibility of the NestLoop plan node, not the foreign join. That's right, but is that true when the FDW uses late row locking? 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