]> granicus.if.org Git - postgresql/commitdiff
Get rid of ExecAssignResultTypeFromOuterPlan() and make all plan node types
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 23 Nov 2005 20:28:05 +0000 (20:28 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 23 Nov 2005 20:28:05 +0000 (20:28 +0000)
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.

src/backend/executor/execUtils.c
src/backend/executor/nodeHash.c
src/backend/executor/nodeLimit.c
src/backend/executor/nodeMaterial.c
src/backend/executor/nodeSetOp.c
src/backend/executor/nodeSort.c
src/backend/executor/nodeUnique.c
src/include/executor/executor.h

index c7da61eeef2c11203ce57b73edfe9fd5fd3a53e8..5983249bba258fd3b764627a46ee731b72468458 100644 (file)
@@ -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 $
  *
  *-------------------------------------------------------------------------
  */
@@ -435,22 +435,6 @@ ExecAssignResultType(PlanState *planstate,
        ExecSetSlotDescriptor(slot, tupDesc, shouldFree);
 }
 
-/* ----------------
- *             ExecAssignResultTypeFromOuterPlan
- * ----------------
- */
-void
-ExecAssignResultTypeFromOuterPlan(PlanState *planstate)
-{
-       PlanState  *outerPlan;
-       TupleDesc       tupDesc;
-
-       outerPlan = outerPlanState(planstate);
-       tupDesc = ExecGetResultType(outerPlan);
-
-       ExecAssignResultType(planstate, tupDesc, false);
-}
-
 /* ----------------
  *             ExecAssignResultTypeFromTL
  * ----------------
index 320a7896c337a03d988766c0c223bd465801ae14..a40423179d14d808ca9677b9af2e7af2a7aeec9f 100644 (file)
@@ -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;
index 462db0aee9d15e09d8d6c450db4b39208978a2b8..849e953a503a8a9a5805522f84c53f90173d0581 100644 (file)
@@ -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;
index 750f355b0ee09cd81ded509ebf9f371236d4844e..8a7151e36b4d5507fbc2981e76a7034f00aca057 100644 (file)
@@ -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;
 
index a5ca58354c6a8f4b04c37421cee78c3e0a6e83e3..abfa2dfe37c055f1fbb2991af2ef02d0e4337943 100644 (file)
@@ -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;
 
        /*
index d3e4fb5e0b3eb4e5bc97263e29c1cccac0fc926a..1ed91a70765f5259abe116558c5f8abe9089495b 100644 (file)
@@ -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;
 
index 0b0ee93e4b18b3aef8f9458b4f0c724cc099bc5c..6451f9d2aa62ea379ce260c209c6bd5449e58d4d 100644 (file)
@@ -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;
 
        /*
index 31228e114ba918cd28186968e59f873776687d7a..a2c12d3202cf4988644f6565e3bc8006cc3628ed 100644 (file)
@@ -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,