aboutsummaryrefslogtreecommitdiff
path: root/src/include/lib/binaryheap.h
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:21 -0400
commit8e2b71d2d0381f7acc820a2400580a1e3a6add8c (patch)
tree2e419f5090c23820a43397c391627150bf7fae41 /src/include/lib/binaryheap.h
parent9381cb5229da1f3556909585b38ada347d798161 (diff)
downloadpostgresql-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/include/lib/binaryheap.h')
-rw-r--r--src/include/lib/binaryheap.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/include/lib/binaryheap.h b/src/include/lib/binaryheap.h
index 1e99e72e515..85cafe4d4dd 100644
--- a/src/include/lib/binaryheap.h
+++ b/src/include/lib/binaryheap.h
@@ -40,6 +40,7 @@ typedef struct binaryheap
extern binaryheap *binaryheap_allocate(int capacity,
binaryheap_comparator compare,
void *arg);
+extern void binaryheap_reset(binaryheap *heap);
extern void binaryheap_free(binaryheap *heap);
extern void binaryheap_add_unordered(binaryheap *heap, Datum d);
extern void binaryheap_build(binaryheap *heap);