diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2013-08-30 19:15:21 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2013-08-30 19:15:21 -0400 |
commit | 8e2b71d2d0381f7acc820a2400580a1e3a6add8c (patch) | |
tree | 2e419f5090c23820a43397c391627150bf7fae41 /src/backend/executor/nodeMergeAppend.c | |
parent | 9381cb5229da1f3556909585b38ada347d798161 (diff) | |
download | postgresql-8e2b71d2d0381f7acc820a2400580a1e3a6add8c.tar.gz postgresql-8e2b71d2d0381f7acc820a2400580a1e3a6add8c.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.c | 1 |
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; } |