diff options
Diffstat (limited to 'src/backend/executor')
-rw-r--r-- | src/backend/executor/nodeIndexscan.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index d79c1aa8ca9..79133e08b66 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -459,10 +459,16 @@ reorderqueue_pop(IndexScanState *node) { HeapTuple result; ReorderTuple *topmost; + int i; topmost = (ReorderTuple *) pairingheap_remove_first(node->iss_ReorderQueue); result = topmost->htup; + for (i = 0; i < node->iss_NumOrderByKeys; i++) + { + if (!node->iss_OrderByTypByVals[i] && !topmost->orderbynulls[i]) + pfree(DatumGetPointer(topmost->orderbyvals[i])); + } pfree(topmost->orderbyvals); pfree(topmost->orderbynulls); pfree(topmost); |