Re: search_plan_tree(): handling of non-leaf CustomScanState nodes causes segfault
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: David Geier <david@swarm64.com>
Cc: pgsql-hackers@postgresql.org
Date: 2021-01-19T16:53:02Z
Lists: pgsql-hackers
Attachments
- where-current-of-merge-append.sql (text/plain)
I wrote: > Now that I look at this, I strongly wonder whether whoever added > MergeAppend support here understood what they were doing. That > looks broken, because child nodes will typically be positioned on > tuples, whether or not the current top-level output came from them. > So I fear we could get a false-positive confirmation that some > tuple matches WHERE CURRENT OF. Urgh, indeed it's buggy. With the attached test script I get ... BEGIN DECLARE CURSOR f1 | f2 ----+----- 1 | one (1 row) UPDATE 1 UPDATE 1 UPDATE 1 COMMIT f1 | f2 ----+------------- 1 | one updated (1 row) f1 | f2 ----+------------- 2 | two updated (1 row) f1 | f2 ----+--------------- 3 | three updated (1 row) where clearly only the row with f1=1 should have updated (and if you leave off ORDER BY, so as to get a Merge not MergeAppend plan, indeed only that row updates). I shall go fix this, and try to improve the evidently-inadequate comments in search_plan_tree. regards, tom lane
Commits
-
Remove faulty support for MergeAppend plan with WHERE CURRENT OF.
- 0ab177bec1c5 9.5.25 landed
- fe8edbb8267a 9.6.21 landed
- fac54bd5e216 10.16 landed
- 794562d0770a 11.11 landed
- 6253159965d5 12.6 landed
- 188cd4f440ed 13.2 landed
- a0efda88a679 14.0 landed
-
Avoid crash with WHERE CURRENT OF and a custom scan plan.
- 33a46993f15a 9.5.25 landed
- ffbf1746354a 9.6.21 landed
- 5cd94de777e0 10.16 landed
- de622e677cfd 11.11 landed
- ba80489c66cf 12.6 landed
- f0f53195b51a 13.2 landed
- 60661bbf2dca 14.0 landed