]> granicus.if.org Git - postgresql/commitdiff
Repair crash in EvalPlanQual of query involving nestloop with inner
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 12 Nov 2001 17:18:06 +0000 (17:18 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 12 Nov 2001 17:18:06 +0000 (17:18 +0000)
index scan.  Problem was that link to outer tuple wasn't being stored
everyplace it needed to be.

src/backend/executor/nodeIndexscan.c

index 318ebc6f6c9ff749a00d7084026d83f497d7eaf2..5afee29f5271130d2ffdd33d293ac2298b2994e6 100644 (file)
@@ -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