aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeMergeAppend.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2013-08-30 19:15:21 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2013-08-30 19:15:32 -0400
commit16e8e36cebba8909ec01ca259f32e8dd40090657 (patch)
treea47835e60a8ebc11c675e30cbe40b380f3a27951 /src/backend/executor/nodeMergeAppend.c
parentdfed97b744a4706d7c7b410667c0c5bc92d0eb8d (diff)
downloadpostgresql-16e8e36cebba8909ec01ca259f32e8dd40090657.tar.gz
postgresql-16e8e36cebba8909ec01ca259f32e8dd40090657.zip
Reset the binary heap in MergeAppend rescans.
Failing to do so can cause queries to return wrong data, error out or crash. This requires adding a new binaryheap_reset() method to binaryheap.c, but that probably should have been there anyway. Per bug #8410 from Terje Elde. Diagnosis and patch by Andres Freund.
Diffstat (limited to 'src/backend/executor/nodeMergeAppend.c')
-rw-r--r--src/backend/executor/nodeMergeAppend.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/backend/executor/nodeMergeAppend.c b/src/backend/executor/nodeMergeAppend.c
index 5a48f7ab13b..c3edd618591 100644
--- a/src/backend/executor/nodeMergeAppend.c
+++ b/src/backend/executor/nodeMergeAppend.c
@@ -297,5 +297,6 @@ ExecReScanMergeAppend(MergeAppendState *node)
if (subnode->chgParam == NULL)
ExecReScan(subnode);
}
+ binaryheap_reset(node->ms_heap);
node->ms_initialized = false;
}