diff options
author | Alexander Korotkov <akorotkov@postgresql.org> | 2022-02-14 03:26:55 +0300 |
---|---|---|
committer | Alexander Korotkov <akorotkov@postgresql.org> | 2022-02-14 03:32:39 +0300 |
commit | 7a12a9e3cc9784d5eeeb58b6b35ef2e735516a99 (patch) | |
tree | 913ba1cbb58a27a97259b335d8bbeee5250b45ca /src/backend/executor | |
parent | c9d35dc7f8a91ff494b67041e352a227e3126645 (diff) | |
download | postgresql-7a12a9e3cc9784d5eeeb58b6b35ef2e735516a99.tar.gz postgresql-7a12a9e3cc9784d5eeeb58b6b35ef2e735516a99.zip |
Fix memory leak in IndexScan node with reordering
Fix ExecReScanIndexScan() to free the referenced tuples while emptying the
priority queue. Backpatch to all supported versions.
Discussion: https://postgr.es/m/CAHqSB9gECMENBQmpbv5rvmT3HTaORmMK3Ukg73DsX5H7EJV7jw%40mail.gmail.com
Author: Aliaksandr Kalenik
Reviewed-by: Tom Lane, Alexander Korotkov
Backpatch-through: 10
Diffstat (limited to 'src/backend/executor')
-rw-r--r-- | src/backend/executor/nodeIndexscan.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index c06d07aa467..982a80a881e 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -574,8 +574,12 @@ ExecReScanIndexScan(IndexScanState *node) /* flush the reorder queue */ if (node->iss_ReorderQueue) { + HeapTuple tuple; while (!pairingheap_is_empty(node->iss_ReorderQueue)) - reorderqueue_pop(node); + { + tuple = reorderqueue_pop(node); + heap_freetuple(tuple); + } } /* reset index scan */ |