aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeIndexscan.c
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 /src/backend/executor/nodeIndexscan.c
parent266b6984cd7391e42770ca3a9922a9e8b1d4d7d3 (diff)
downloadpostgresql-12e6c5a6cae1e34da2d320390993010b6e15ba9e.tar.gz
postgresql-12e6c5a6cae1e34da2d320390993010b6e15ba9e.zip
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
Diffstat (limited to 'src/backend/executor/nodeIndexscan.c')
-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);
}