aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeSeqscan.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/nodeSeqscan.c')
-rw-r--r--src/backend/executor/nodeSeqscan.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/backend/executor/nodeSeqscan.c b/src/backend/executor/nodeSeqscan.c
index f5a284a26bf..fab526f399c 100644
--- a/src/backend/executor/nodeSeqscan.c
+++ b/src/backend/executor/nodeSeqscan.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/executor/nodeSeqscan.c,v 1.52 2005/03/16 21:38:07 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/executor/nodeSeqscan.c,v 1.53 2005/05/15 21:19:55 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -342,9 +342,8 @@ ExecSeqReScan(SeqScanState *node, ExprContext *exprCtxt)
void
ExecSeqMarkPos(SeqScanState *node)
{
- HeapScanDesc scan;
+ HeapScanDesc scan = node->ss_currentScanDesc;
- scan = node->ss_currentScanDesc;
heap_markpos(scan);
}
@@ -357,8 +356,15 @@ ExecSeqMarkPos(SeqScanState *node)
void
ExecSeqRestrPos(SeqScanState *node)
{
- HeapScanDesc scan;
+ HeapScanDesc scan = node->ss_currentScanDesc;
+
+ /*
+ * Clear any reference to the previously returned tuple. This is
+ * needed because the slot is simply pointing at scan->rs_cbuf, which
+ * heap_restrpos will change; we'd have an internally inconsistent
+ * slot if we didn't do this.
+ */
+ ExecClearTuple(node->ss_ScanTupleSlot);
- scan = node->ss_currentScanDesc;
heap_restrpos(scan);
}