From: Heikki Linnakangas Date: Mon, 25 May 2015 11:42:21 +0000 (+0300) Subject: Fix rescan of IndexScan node with the new lossy GiST distance functions. X-Git-Tag: REL9_5_ALPHA1~157 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=12e6c5a6cae1e34da2d320390993010b6e15ba9e;p=postgresql 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 --- 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); }