aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-11-23 20:27:58 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-11-23 20:27:58 +0000
commit4dd2048a47712732b60f45fd49f4080bfeec95a0 (patch)
tree831248d517aed80c52fa6f7b0bd45b72c2009f68
parent19ff959bff054574be094e9633b69fc65c6c6a3c (diff)
downloadpostgresql-4dd2048a47712732b60f45fd49f4080bfeec95a0.tar.gz
postgresql-4dd2048a47712732b60f45fd49f4080bfeec95a0.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.c18
-rw-r--r--src/backend/executor/nodeHash.c4
-rw-r--r--src/backend/executor/nodeLimit.c4
-rw-r--r--src/backend/executor/nodeMaterial.c4
-rw-r--r--src/backend/executor/nodeSetOp.c4
-rw-r--r--src/backend/executor/nodeSort.c4
-rw-r--r--src/backend/executor/nodeUnique.c4
-rw-r--r--src/include/executor/executor.h3
8 files changed, 14 insertions, 31 deletions
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index 5ab4a5e98fc..5221624fc7d 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.128 2005/11/22 18:17:10 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/executor/execUtils.c,v 1.129 2005/11/23 20:27:57 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 c843c2448c0..82f05855e66 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.98 2005/11/22 18:17:10 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/executor/nodeHash.c,v 1.99 2005/11/23 20:27:57 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..f9397dc475c 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.23 2005/11/23 20:27:57 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..558797c380d 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.51 2005/11/23 20:27:57 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..2a7d2542870 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.19 2005/11/23 20:27:57 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..a67326c60b2 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.52 2005/11/23 20:27:57 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 47cc4afe558..0c033502c39 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.49 2005/11/22 18:17:10 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/executor/nodeUnique.c,v 1.50 2005/11/23 20:27:57 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..39c76c60aa5 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.121 2005/11/23 20:27:58 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,