]> granicus.if.org Git - postgresql/blobdiff - src/backend/executor/nodeSubplan.c
Make some small planner API cleanups.
[postgresql] / src / backend / executor / nodeSubplan.c
index 63de981034d544a5e3a13cc19d7dce8686607034..152696035cd5307c32241c7e581a86ac19bdc178 100644 (file)
@@ -11,7 +11,7 @@
  * subplans, which are re-evaluated every time their result is required.
  *
  *
- * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group
+ * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
@@ -33,8 +33,8 @@
 #include "executor/executor.h"
 #include "executor/nodeSubplan.h"
 #include "nodes/makefuncs.h"
+#include "nodes/nodeFuncs.h"
 #include "miscadmin.h"
-#include "optimizer/clauses.h"
 #include "utils/array.h"
 #include "utils/lsyscache.h"
 #include "utils/memutils.h"
@@ -357,7 +357,7 @@ ExecScanSubPlan(SubPlanState *node,
                         */
                        if (node->curTuple)
                                heap_freetuple(node->curTuple);
-                       node->curTuple = ExecCopySlotTuple(slot);
+                       node->curTuple = ExecCopySlotHeapTuple(slot);
 
                        result = heap_getattr(node->curTuple, 1, tdesc, isNull);
                        /* keep scanning subplan to make sure there's only one tuple */
@@ -888,7 +888,7 @@ ExecInitSubPlan(SubPlan *subplan, PlanState *parent)
                        /* single combining operator */
                        oplist = list_make1(subplan->testexpr);
                }
-               else if (and_clause((Node *) subplan->testexpr))
+               else if (is_andclause(subplan->testexpr))
                {
                        /* multiple combining operators */
                        oplist = castNode(BoolExpr, subplan->testexpr)->args;
@@ -967,16 +967,16 @@ ExecInitSubPlan(SubPlan *subplan, PlanState *parent)
                 * (hack alert!).  The righthand expressions will be evaluated in our
                 * own innerecontext.
                 */
-               tupDescLeft = ExecTypeFromTL(lefttlist, false);
-               slot = ExecInitExtraTupleSlot(estate, tupDescLeft);
+               tupDescLeft = ExecTypeFromTL(lefttlist);
+               slot = ExecInitExtraTupleSlot(estate, tupDescLeft, &TTSOpsVirtual);
                sstate->projLeft = ExecBuildProjectionInfo(lefttlist,
                                                                                                   NULL,
                                                                                                   slot,
                                                                                                   parent,
                                                                                                   NULL);
 
-               sstate->descRight = tupDescRight = ExecTypeFromTL(righttlist, false);
-               slot = ExecInitExtraTupleSlot(estate, tupDescRight);
+               sstate->descRight = tupDescRight = ExecTypeFromTL(righttlist);
+               slot = ExecInitExtraTupleSlot(estate, tupDescRight, &TTSOpsVirtual);
                sstate->projRight = ExecBuildProjectionInfo(righttlist,
                                                                                                        sstate->innerecontext,
                                                                                                        slot,
@@ -988,6 +988,7 @@ ExecInitSubPlan(SubPlan *subplan, PlanState *parent)
                 * across-type comparison).
                 */
                sstate->cur_eq_comp = ExecBuildGroupingEqual(tupDescLeft, tupDescRight,
+                                                                                                        &TTSOpsVirtual, &TTSOpsMinimalTuple,
                                                                                                         ncols,
                                                                                                         sstate->keyColIdx,
                                                                                                         sstate->tab_eq_funcoids,
@@ -1136,7 +1137,7 @@ ExecSetParamPlan(SubPlanState *node, ExprContext *econtext)
                 */
                if (node->curTuple)
                        heap_freetuple(node->curTuple);
-               node->curTuple = ExecCopySlotTuple(slot);
+               node->curTuple = ExecCopySlotHeapTuple(slot);
 
                /*
                 * Now set all the setParam params from the columns of the tuple