summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2001-11-12 17:18:06 +0000
committerTom Lane2001-11-12 17:18:06 +0000
commit611afd9f4b3536b15912ead6cea5db88ea4fad35 (patch)
tree3be503e746e9e36b88b4f9b37e28a01fd5c47a70
parent0f214edeb137c6edd27b87f21e40f82a7ce2fd1c (diff)
Repair crash in EvalPlanQual of query involving nestloop with inner
index scan. Problem was that link to outer tuple wasn't being stored everyplace it needed to be.
-rw-r--r--src/backend/executor/nodeIndexscan.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c
index 318ebc6f6c9..5afee29f527 100644
--- a/src/backend/executor/nodeIndexscan.c
+++ b/src/backend/executor/nodeIndexscan.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.64 2001/10/28 06:25:43 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/executor/nodeIndexscan.c,v 1.65 2001/11/12 17:18:06 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -339,10 +339,17 @@ ExecIndexReScan(IndexScan *node, ExprContext *exprCtxt, Plan *parent)
{
/*
* If we are being passed an outer tuple, save it for runtime key
- * calc
+ * calc. We also need to link it into the "regular" per-tuple
+ * econtext, so it can be used during indexqualorig evaluations.
*/
if (exprCtxt != NULL)
+ {
+ ExprContext *stdecontext;
+
econtext->ecxt_outertuple = exprCtxt->ecxt_outertuple;
+ stdecontext = node->scan.scanstate->cstate.cs_ExprContext;
+ stdecontext->ecxt_outertuple = exprCtxt->ecxt_outertuple;
+ }
/*
* Reset the runtime-key context so we don't leak memory as each