Repair bug #2839: the various ExecReScan functions need to reset
Tom Lane <tgl@sss.pgh.pa.us>
Repair bug #2839: the various ExecReScan functions need to reset ps_TupFromTlist in plan nodes that make use of it. This was being done correctly in join nodes and Result nodes but not in any relation-scan nodes. Bug would lead to bogus results if a set-returning function appeared in the targetlist of a subquery that could be rescanned after partial execution, for example a subquery within EXISTS(). Bug has been around forever :-( ... surprising it wasn't reported before.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/executor/nodeBitmapHeapscan.c | modified | +5 −1 |
| src/backend/executor/nodeFunctionscan.c | modified | +2 −1 |
| src/backend/executor/nodeIndexscan.c | modified | +5 −1 |
| src/backend/executor/nodeResult.c | modified | +3 −1 |
| src/backend/executor/nodeSeqscan.c | modified | +3 −1 |
| src/backend/executor/nodeSubqueryscan.c | modified | +2 −1 |
| src/backend/executor/nodeTidscan.c | modified | +5 −1 |
| src/backend/executor/nodeValuesscan.c | modified | +2 −1 |