summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2015-05-25 14:42:21 +0300
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2015-05-25 14:48:29 +0300
commit12e6c5a6cae1e34da2d320390993010b6e15ba9e (patch)
treeffedf992a3a94362c4cb7b8a103d9cfbb36e601c
parent266b6984cd7391e42770ca3a9922a9e8b1d4d7d3 (diff)
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
-rw-r--r--src/backend/executor/nodeIndexscan.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c
index 7fd90415f96..c0f14dbfa9d 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);
}