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