diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2015-05-25 14:42:21 +0300 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2015-05-25 14:48:29 +0300 |
commit | 12e6c5a6cae1e34da2d320390993010b6e15ba9e (patch) | |
tree | ffedf992a3a94362c4cb7b8a103d9cfbb36e601c /src/backend/executor/nodeIndexscan.c | |
parent | 266b6984cd7391e42770ca3a9922a9e8b1d4d7d3 (diff) | |
download | postgresql-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.c | 8 |
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); } |