Commit d5789018 authored by Tom Lane's avatar Tom Lane

Remove useless ps_OuterTupleSlot field from PlanState. I suppose this was

used long ago, but in the current code the ecxt_outertuple field of
ExprContext is doing all the work.  Spotted by Ran Tang.
parent 7356381e
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/executor/nodeHashjoin.c,v 1.95 2008/08/15 19:20:42 tgl Exp $ * $PostgreSQL: pgsql/src/backend/executor/nodeHashjoin.c,v 1.96 2008/10/23 14:34:34 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -193,7 +193,6 @@ ExecHashJoin(HashJoinState *node) ...@@ -193,7 +193,6 @@ ExecHashJoin(HashJoinState *node)
return NULL; return NULL;
} }
node->js.ps.ps_OuterTupleSlot = outerTupleSlot;
econtext->ecxt_outertuple = outerTupleSlot; econtext->ecxt_outertuple = outerTupleSlot;
node->hj_NeedNewOuter = false; node->hj_NeedNewOuter = false;
node->hj_MatchedOuter = false; node->hj_MatchedOuter = false;
...@@ -482,7 +481,6 @@ ExecInitHashJoin(HashJoin *node, EState *estate, int eflags) ...@@ -482,7 +481,6 @@ ExecInitHashJoin(HashJoin *node, EState *estate, int eflags)
/* child Hash node needs to evaluate inner hash keys, too */ /* child Hash node needs to evaluate inner hash keys, too */
((HashState *) innerPlanState(hjstate))->hashkeys = rclauses; ((HashState *) innerPlanState(hjstate))->hashkeys = rclauses;
hjstate->js.ps.ps_OuterTupleSlot = NULL;
hjstate->js.ps.ps_TupFromTlist = false; hjstate->js.ps.ps_TupFromTlist = false;
hjstate->hj_NeedNewOuter = true; hjstate->hj_NeedNewOuter = true;
hjstate->hj_MatchedOuter = false; hjstate->hj_MatchedOuter = false;
...@@ -884,7 +882,6 @@ ExecReScanHashJoin(HashJoinState *node, ExprContext *exprCtxt) ...@@ -884,7 +882,6 @@ ExecReScanHashJoin(HashJoinState *node, ExprContext *exprCtxt)
node->hj_CurBucketNo = 0; node->hj_CurBucketNo = 0;
node->hj_CurTuple = NULL; node->hj_CurTuple = NULL;
node->js.ps.ps_OuterTupleSlot = NULL;
node->js.ps.ps_TupFromTlist = false; node->js.ps.ps_TupFromTlist = false;
node->hj_NeedNewOuter = true; node->hj_NeedNewOuter = true;
node->hj_MatchedOuter = false; node->hj_MatchedOuter = false;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/executor/nodeNestloop.c,v 1.48 2008/08/15 19:20:42 tgl Exp $ * $PostgreSQL: pgsql/src/backend/executor/nodeNestloop.c,v 1.49 2008/10/23 14:34:34 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -78,12 +78,6 @@ ExecNestLoop(NestLoopState *node) ...@@ -78,12 +78,6 @@ ExecNestLoop(NestLoopState *node)
innerPlan = innerPlanState(node); innerPlan = innerPlanState(node);
econtext = node->js.ps.ps_ExprContext; econtext = node->js.ps.ps_ExprContext;
/*
* get the current outer tuple
*/
outerTupleSlot = node->js.ps.ps_OuterTupleSlot;
econtext->ecxt_outertuple = outerTupleSlot;
/* /*
* Check to see if we're still projecting out tuples from a previous join * Check to see if we're still projecting out tuples from a previous join
* tuple (because there is a function-returning-set in the projection * tuple (because there is a function-returning-set in the projection
...@@ -135,7 +129,6 @@ ExecNestLoop(NestLoopState *node) ...@@ -135,7 +129,6 @@ ExecNestLoop(NestLoopState *node)
} }
ENL1_printf("saving new outer tuple information"); ENL1_printf("saving new outer tuple information");
node->js.ps.ps_OuterTupleSlot = outerTupleSlot;
econtext->ecxt_outertuple = outerTupleSlot; econtext->ecxt_outertuple = outerTupleSlot;
node->nl_NeedNewOuter = false; node->nl_NeedNewOuter = false;
node->nl_MatchedOuter = false; node->nl_MatchedOuter = false;
...@@ -357,7 +350,6 @@ ExecInitNestLoop(NestLoop *node, EState *estate, int eflags) ...@@ -357,7 +350,6 @@ ExecInitNestLoop(NestLoop *node, EState *estate, int eflags)
/* /*
* finally, wipe the current outer tuple clean. * finally, wipe the current outer tuple clean.
*/ */
nlstate->js.ps.ps_OuterTupleSlot = NULL;
nlstate->js.ps.ps_TupFromTlist = false; nlstate->js.ps.ps_TupFromTlist = false;
nlstate->nl_NeedNewOuter = true; nlstate->nl_NeedNewOuter = true;
nlstate->nl_MatchedOuter = false; nlstate->nl_MatchedOuter = false;
...@@ -426,8 +418,6 @@ ExecReScanNestLoop(NestLoopState *node, ExprContext *exprCtxt) ...@@ -426,8 +418,6 @@ ExecReScanNestLoop(NestLoopState *node, ExprContext *exprCtxt)
if (outerPlan->chgParam == NULL) if (outerPlan->chgParam == NULL)
ExecReScan(outerPlan, exprCtxt); ExecReScan(outerPlan, exprCtxt);
/* let outerPlan to free its result tuple ... */
node->js.ps.ps_OuterTupleSlot = NULL;
node->js.ps.ps_TupFromTlist = false; node->js.ps.ps_TupFromTlist = false;
node->nl_NeedNewOuter = true; node->nl_NeedNewOuter = true;
node->nl_MatchedOuter = false; node->nl_MatchedOuter = false;
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.190 2008/10/07 19:27:04 tgl Exp $ * $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.191 2008/10/23 14:34:34 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -868,7 +868,7 @@ typedef struct PlanState ...@@ -868,7 +868,7 @@ typedef struct PlanState
Plan *plan; /* associated Plan node */ Plan *plan; /* associated Plan node */
EState *state; /* at execution time, state's of individual EState *state; /* at execution time, states of individual
* nodes point to one EState for the whole * nodes point to one EState for the whole
* top-level plan */ * top-level plan */
...@@ -896,12 +896,11 @@ typedef struct PlanState ...@@ -896,12 +896,11 @@ typedef struct PlanState
/* /*
* Other run-time state needed by most if not all node types. * Other run-time state needed by most if not all node types.
*/ */
TupleTableSlot *ps_OuterTupleSlot; /* slot for current "outer" tuple */
TupleTableSlot *ps_ResultTupleSlot; /* slot for my result tuples */ TupleTableSlot *ps_ResultTupleSlot; /* slot for my result tuples */
ExprContext *ps_ExprContext; /* node's expression-evaluation context */ ExprContext *ps_ExprContext; /* node's expression-evaluation context */
ProjectionInfo *ps_ProjInfo; /* info for doing tuple projection */ ProjectionInfo *ps_ProjInfo; /* info for doing tuple projection */
bool ps_TupFromTlist;/* state flag for processing set-valued bool ps_TupFromTlist; /* state flag for processing set-valued
* functions in targetlist */ * functions in targetlist */
} PlanState; } PlanState;
/* ---------------- /* ----------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment