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.
This commit is contained in:
parent
7356381ef5
commit
d5789018c7
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* 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)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
node->js.ps.ps_OuterTupleSlot = outerTupleSlot;
|
||||
econtext->ecxt_outertuple = outerTupleSlot;
|
||||
node->hj_NeedNewOuter = false;
|
||||
node->hj_MatchedOuter = false;
|
||||
@ -482,7 +481,6 @@ ExecInitHashJoin(HashJoin *node, EState *estate, int eflags)
|
||||
/* child Hash node needs to evaluate inner hash keys, too */
|
||||
((HashState *) innerPlanState(hjstate))->hashkeys = rclauses;
|
||||
|
||||
hjstate->js.ps.ps_OuterTupleSlot = NULL;
|
||||
hjstate->js.ps.ps_TupFromTlist = false;
|
||||
hjstate->hj_NeedNewOuter = true;
|
||||
hjstate->hj_MatchedOuter = false;
|
||||
@ -884,7 +882,6 @@ ExecReScanHashJoin(HashJoinState *node, ExprContext *exprCtxt)
|
||||
node->hj_CurBucketNo = 0;
|
||||
node->hj_CurTuple = NULL;
|
||||
|
||||
node->js.ps.ps_OuterTupleSlot = NULL;
|
||||
node->js.ps.ps_TupFromTlist = false;
|
||||
node->hj_NeedNewOuter = true;
|
||||
node->hj_MatchedOuter = false;
|
||||
|
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* 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)
|
||||
innerPlan = innerPlanState(node);
|
||||
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
|
||||
* tuple (because there is a function-returning-set in the projection
|
||||
@ -135,7 +129,6 @@ ExecNestLoop(NestLoopState *node)
|
||||
}
|
||||
|
||||
ENL1_printf("saving new outer tuple information");
|
||||
node->js.ps.ps_OuterTupleSlot = outerTupleSlot;
|
||||
econtext->ecxt_outertuple = outerTupleSlot;
|
||||
node->nl_NeedNewOuter = false;
|
||||
node->nl_MatchedOuter = false;
|
||||
@ -357,7 +350,6 @@ ExecInitNestLoop(NestLoop *node, EState *estate, int eflags)
|
||||
/*
|
||||
* finally, wipe the current outer tuple clean.
|
||||
*/
|
||||
nlstate->js.ps.ps_OuterTupleSlot = NULL;
|
||||
nlstate->js.ps.ps_TupFromTlist = false;
|
||||
nlstate->nl_NeedNewOuter = true;
|
||||
nlstate->nl_MatchedOuter = false;
|
||||
@ -426,8 +418,6 @@ ExecReScanNestLoop(NestLoopState *node, ExprContext *exprCtxt)
|
||||
if (outerPlan->chgParam == NULL)
|
||||
ExecReScan(outerPlan, exprCtxt);
|
||||
|
||||
/* let outerPlan to free its result tuple ... */
|
||||
node->js.ps.ps_OuterTupleSlot = NULL;
|
||||
node->js.ps.ps_TupFromTlist = false;
|
||||
node->nl_NeedNewOuter = true;
|
||||
node->nl_MatchedOuter = false;
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
|
||||
* 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
|
||||
|
||||
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
|
||||
* top-level plan */
|
||||
|
||||
@ -896,12 +896,11 @@ typedef struct PlanState
|
||||
/*
|
||||
* 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 */
|
||||
ExprContext *ps_ExprContext; /* node's expression-evaluation context */
|
||||
ProjectionInfo *ps_ProjInfo; /* info for doing tuple projection */
|
||||
bool ps_TupFromTlist;/* state flag for processing set-valued
|
||||
* functions in targetlist */
|
||||
bool ps_TupFromTlist; /* state flag for processing set-valued
|
||||
* functions in targetlist */
|
||||
} PlanState;
|
||||
|
||||
/* ----------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user