diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-11-23 20:28:05 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-11-23 20:28:05 +0000 |
commit | fd3ac58b686895f6b68771e568c2e0b770946abf (patch) | |
tree | bb55dcbc38cba9172bf472154ea510a34b8bb0b4 | |
parent | f1e08506e9f98ba46cf4feb904edbe0afe2c4b93 (diff) | |
download | postgresql-fd3ac58b686895f6b68771e568c2e0b770946abf.tar.gz postgresql-fd3ac58b686895f6b68771e568c2e0b770946abf.zip |
Get rid of ExecAssignResultTypeFromOuterPlan() and make all plan node types
generate their output tuple descriptors from their target lists (ie, using
ExecAssignResultTypeFromTL()). We long ago fixed things so that all node
types have minimally valid tlists, so there's no longer any good reason to
have two different ways of doing it. This change is needed to fix bug
reported by Hayden James: the fix of 2005-11-03 to emit the correct column
names after optimizing away a SubqueryScan node didn't work if the new
top-level plan node used ExecAssignResultTypeFromOuterPlan to generate its
tupdesc, since the next plan node down won't have the correct column labels.
-rw-r--r-- | src/backend/executor/execUtils.c | 18 | ||||
-rw-r--r-- | src/backend/executor/nodeHash.c | 4 | ||||
-rw-r--r-- | src/backend/executor/nodeLimit.c | 4 | ||||
-rw-r--r-- | src/backend/executor/nodeMaterial.c | 4 | ||||
-rw-r--r-- | src/backend/executor/nodeSetOp.c | 4 | ||||
-rw-r--r-- | src/backend/executor/nodeSort.c | 4 | ||||
-rw-r--r-- | src/backend/executor/nodeUnique.c | 4 | ||||
-rw-r--r-- | src/include/executor/executor.h | 3 |
8 files changed, 14 insertions, 31 deletions
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index c7da61eeef2..5983249bba2 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/execUtils.c,v 1.126.2.2 2005/11/22 18:23:08 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/execUtils.c,v 1.126.2.3 2005/11/23 20:28:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -436,22 +436,6 @@ ExecAssignResultType(PlanState *planstate, } /* ---------------- - * ExecAssignResultTypeFromOuterPlan - * ---------------- - */ -void -ExecAssignResultTypeFromOuterPlan(PlanState *planstate) -{ - PlanState *outerPlan; - TupleDesc tupDesc; - - outerPlan = outerPlanState(planstate); - tupDesc = ExecGetResultType(outerPlan); - - ExecAssignResultType(planstate, tupDesc, false); -} - -/* ---------------- * ExecAssignResultTypeFromTL * ---------------- */ diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c index 320a7896c33..a40423179d1 100644 --- a/src/backend/executor/nodeHash.c +++ b/src/backend/executor/nodeHash.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeHash.c,v 1.96.2.1 2005/11/22 18:23:09 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeHash.c,v 1.96.2.2 2005/11/23 20:28:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -164,7 +164,7 @@ ExecInitHash(Hash *node, EState *estate) * initialize tuple type. no need to initialize projection info because * this node doesn't do projections */ - ExecAssignResultTypeFromOuterPlan(&hashstate->ps); + ExecAssignResultTypeFromTL(&hashstate->ps); hashstate->ps.ps_ProjInfo = NULL; return hashstate; diff --git a/src/backend/executor/nodeLimit.c b/src/backend/executor/nodeLimit.c index 462db0aee9d..849e953a503 100644 --- a/src/backend/executor/nodeLimit.c +++ b/src/backend/executor/nodeLimit.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeLimit.c,v 1.22 2005/10/15 02:49:17 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeLimit.c,v 1.22.2.1 2005/11/23 20:28:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -327,7 +327,7 @@ ExecInitLimit(Limit *node, EState *estate) * limit nodes do no projections, so initialize projection info for this * node appropriately */ - ExecAssignResultTypeFromOuterPlan(&limitstate->ps); + ExecAssignResultTypeFromTL(&limitstate->ps); limitstate->ps.ps_ProjInfo = NULL; return limitstate; diff --git a/src/backend/executor/nodeMaterial.c b/src/backend/executor/nodeMaterial.c index 750f355b0ee..8a7151e36b4 100644 --- a/src/backend/executor/nodeMaterial.c +++ b/src/backend/executor/nodeMaterial.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeMaterial.c,v 1.50 2005/10/15 02:49:17 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeMaterial.c,v 1.50.2.1 2005/11/23 20:28:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -195,7 +195,7 @@ ExecInitMaterial(Material *node, EState *estate) * initialize tuple type. no need to initialize projection info because * this node doesn't do projections. */ - ExecAssignResultTypeFromOuterPlan(&matstate->ss.ps); + ExecAssignResultTypeFromTL(&matstate->ss.ps); ExecAssignScanTypeFromOuterPlan(&matstate->ss); matstate->ss.ps.ps_ProjInfo = NULL; diff --git a/src/backend/executor/nodeSetOp.c b/src/backend/executor/nodeSetOp.c index a5ca58354c6..abfa2dfe37c 100644 --- a/src/backend/executor/nodeSetOp.c +++ b/src/backend/executor/nodeSetOp.c @@ -21,7 +21,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeSetOp.c,v 1.18 2005/10/15 02:49:17 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeSetOp.c,v 1.18.2.1 2005/11/23 20:28:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -258,7 +258,7 @@ ExecInitSetOp(SetOp *node, EState *estate) * setop nodes do no projections, so initialize projection info for this * node appropriately */ - ExecAssignResultTypeFromOuterPlan(&setopstate->ps); + ExecAssignResultTypeFromTL(&setopstate->ps); setopstate->ps.ps_ProjInfo = NULL; /* diff --git a/src/backend/executor/nodeSort.c b/src/backend/executor/nodeSort.c index d3e4fb5e0b3..1ed91a70765 100644 --- a/src/backend/executor/nodeSort.c +++ b/src/backend/executor/nodeSort.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeSort.c,v 1.51 2005/10/15 02:49:17 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeSort.c,v 1.51.2.1 2005/11/23 20:28:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -193,7 +193,7 @@ ExecInitSort(Sort *node, EState *estate) * initialize tuple type. no need to initialize projection info because * this node doesn't do projections. */ - ExecAssignResultTypeFromOuterPlan(&sortstate->ss.ps); + ExecAssignResultTypeFromTL(&sortstate->ss.ps); ExecAssignScanTypeFromOuterPlan(&sortstate->ss); sortstate->ss.ps.ps_ProjInfo = NULL; diff --git a/src/backend/executor/nodeUnique.c b/src/backend/executor/nodeUnique.c index 0b0ee93e4b1..6451f9d2aa6 100644 --- a/src/backend/executor/nodeUnique.c +++ b/src/backend/executor/nodeUnique.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeUnique.c,v 1.48.2.1 2005/11/22 18:23:09 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeUnique.c,v 1.48.2.2 2005/11/23 20:28:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -150,7 +150,7 @@ ExecInitUnique(Unique *node, EState *estate) * unique nodes do no projections, so initialize projection info for this * node appropriately */ - ExecAssignResultTypeFromOuterPlan(&uniquestate->ps); + ExecAssignResultTypeFromTL(&uniquestate->ps); uniquestate->ps.ps_ProjInfo = NULL; /* diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index 31228e114ba..a2c12d3202c 100644 --- a/src/include/executor/executor.h +++ b/src/include/executor/executor.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/executor/executor.h,v 1.120 2005/10/15 02:49:44 momjian Exp $ + * $PostgreSQL: pgsql/src/include/executor/executor.h,v 1.120.2.1 2005/11/23 20:28:05 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -218,7 +218,6 @@ extern ExprContext *MakePerTupleExprContext(EState *estate); extern void ExecAssignExprContext(EState *estate, PlanState *planstate); extern void ExecAssignResultType(PlanState *planstate, TupleDesc tupDesc, bool shouldFree); -extern void ExecAssignResultTypeFromOuterPlan(PlanState *planstate); extern void ExecAssignResultTypeFromTL(PlanState *planstate); extern TupleDesc ExecGetResultType(PlanState *planstate); extern ProjectionInfo *ExecBuildProjectionInfo(List *targetList, |