aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2018-02-27 15:56:51 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2018-02-27 15:56:51 -0500
commitb9dac4a6eb41479d991249affe537e9861698271 (patch)
treed6123734a2e40289cb40f83bad0b1fb474af6b30 /src/backend/executor
parentd6ff2e30395bf9e68e083b2a4ba178732115531b (diff)
downloadpostgresql-b9dac4a6eb41479d991249affe537e9861698271.tar.gz
postgresql-b9dac4a6eb41479d991249affe537e9861698271.zip
Use the correct tuplestore read pointer in a NamedTuplestoreScan.
Tom Kazimiers reported that transition tables don't work correctly when they are scanned by more than one executor node. That's because commit 18ce3a4ab allocated separate read pointers for each executor node, as it must, but failed to make them active at the appropriate times. Repair. Thomas Munro Discussion: https://postgr.es/m/20180224034748.bixarv6632vbxgeb%40dewberry.localdomain
Diffstat (limited to 'src/backend/executor')
-rw-r--r--src/backend/executor/nodeNamedtuplestorescan.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/backend/executor/nodeNamedtuplestorescan.c b/src/backend/executor/nodeNamedtuplestorescan.c
index 3a65b9f5dc9..feb681390f3 100644
--- a/src/backend/executor/nodeNamedtuplestorescan.c
+++ b/src/backend/executor/nodeNamedtuplestorescan.c
@@ -40,6 +40,7 @@ NamedTuplestoreScanNext(NamedTuplestoreScanState *node)
* Get the next tuple from tuplestore. Return NULL if no more tuples.
*/
slot = node->ss.ss_ScanTupleSlot;
+ tuplestore_select_read_pointer(node->relation, node->readptr);
(void) tuplestore_gettupleslot(node->relation, true, false, slot);
return slot;
}
@@ -116,6 +117,7 @@ ExecInitNamedTuplestoreScan(NamedTuplestoreScan *node, EState *estate, int eflag
* The new read pointer copies its position from read pointer 0, which
* could be anywhere, so explicitly rewind it.
*/
+ tuplestore_select_read_pointer(scanstate->relation, scanstate->readptr);
tuplestore_rescan(scanstate->relation);
/*