From 12e6c5a6cae1e34da2d320390993010b6e15ba9e Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Mon, 25 May 2015 14:42:21 +0300 Subject: [PATCH] Fix rescan of IndexScan node with the new lossy GiST distance functions. Must reset the "reached end" flag and reorder queue at rescan. Per report from Regina Obe, bug #13349 --- src/backend/executor/nodeIndexscan.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index 7fd90415f9..c0f14dbfa9 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -532,10 +532,18 @@ ExecReScanIndexScan(IndexScanState *node) } node->iss_RuntimeKeysReady = true; + /* flush the reorder queue */ + if (node->iss_ReorderQueue) + { + while (!pairingheap_is_empty(node->iss_ReorderQueue)) + reorderqueue_pop(node); + } + /* reset index scan */ index_rescan(node->iss_ScanDesc, node->iss_ScanKeys, node->iss_NumScanKeys, node->iss_OrderByKeys, node->iss_NumOrderByKeys); + node->iss_ReachedEnd = false; ExecScanReScan(&node->ss); } -- 2.40.0