Re-export a few of createplan.c's make_xxx() functions.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 12 Mar 2016 17:12:59 +0000 (12:12 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 12 Mar 2016 17:12:59 +0000 (12:12 -0500)
CitusDB is using these and don't wish to redesign their code right now.
I am not on board with this being a good idea, or a good precedent,
but I lack the energy to fight about it.

src/backend/optimizer/plan/createplan.c
src/include/optimizer/planmain.h

index d138728e6791316cd1bf62c3e3b1ef5a589b7378..913ac844f09761e478ecd11eea5589848118b0ac 100644 (file)
@@ -242,16 +242,10 @@ static EquivalenceMember *find_ec_member_for_tle(EquivalenceClass *ec,
                                           TargetEntry *tle,
                                           Relids relids);
 static Sort *make_sort_from_pathkeys(Plan *lefttree, List *pathkeys);
-static Sort *make_sort_from_sortclauses(List *sortcls, Plan *lefttree);
 static Sort *make_sort_from_groupcols(List *groupcls,
                                                 AttrNumber *grpColIdx,
                                                 Plan *lefttree);
 static Material *make_material(Plan *lefttree);
-static Agg *make_agg(List *tlist, List *qual, AggStrategy aggstrategy,
-                bool combineStates, bool finalizeAggs,
-                int numGroupCols, AttrNumber *grpColIdx, Oid *grpOperators,
-                List *groupingSets, List *chain,
-                double dNumGroups, Plan *lefttree);
 static WindowAgg *make_windowagg(List *tlist, Index winref,
                           int partNumCols, AttrNumber *partColIdx, Oid *partOperators,
                           int ordNumCols, AttrNumber *ordColIdx, Oid *ordOperators,
@@ -269,7 +263,6 @@ static SetOp *make_setop(SetOpCmd cmd, SetOpStrategy strategy, Plan *lefttree,
                   List *distinctList, AttrNumber flagColIdx, int firstFlag,
                   long numGroups);
 static LockRows *make_lockrows(Plan *lefttree, List *rowMarks, int epqParam);
-static Limit *make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount);
 static Result *make_result(List *tlist, Node *resconstantqual, Plan *subplan);
 static ModifyTable *make_modifytable(PlannerInfo *root,
                                 CmdType operation, bool canSetTag,
@@ -5500,7 +5493,7 @@ make_sort_from_pathkeys(Plan *lefttree, List *pathkeys)
  *       'sortcls' is a list of SortGroupClauses
  *       'lefttree' is the node which yields input tuples
  */
-static Sort *
+Sort *
 make_sort_from_sortclauses(List *sortcls, Plan *lefttree)
 {
        List       *sub_tlist = lefttree->targetlist;
@@ -5635,7 +5628,7 @@ materialize_finished_plan(Plan *subplan)
        return matplan;
 }
 
-static Agg *
+Agg *
 make_agg(List *tlist, List *qual,
                 AggStrategy aggstrategy,
                 bool combineStates, bool finalizeAggs,
@@ -5973,7 +5966,7 @@ make_lockrows(Plan *lefttree, List *rowMarks, int epqParam)
  * make_limit
  *       Build a Limit plan node
  */
-static Limit *
+Limit *
 make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount)
 {
        Limit      *node = makeNode(Limit);
index cd7338a98c6b5cef918697f8c950cc9af1bc8778..596ffb3d175246099eb841fcd0d2ce70aba99347 100644 (file)
@@ -55,6 +55,14 @@ extern ForeignScan *make_foreignscan(List *qptlist, List *qpqual,
 extern Plan *materialize_finished_plan(Plan *subplan);
 extern bool is_projection_capable_path(Path *path);
 extern bool is_projection_capable_plan(Plan *plan);
+/* External use of these functions is deprecated: */
+extern Sort *make_sort_from_sortclauses(List *sortcls, Plan *lefttree);
+extern Agg *make_agg(List *tlist, List *qual, AggStrategy aggstrategy,
+                bool combineStates, bool finalizeAggs,
+                int numGroupCols, AttrNumber *grpColIdx, Oid *grpOperators,
+                List *groupingSets, List *chain,
+                double dNumGroups, Plan *lefttree);
+extern Limit *make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount);
 
 /*
  * prototypes for plan/initsplan.c