From 12e6c5a6cae1e34da2d320390993010b6e15ba9e Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
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 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);
 }
-- 
GitLab