X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=src%2Finclude%2Foptimizer%2Fplanner.h;h=1e942c52a7eb2b3b2fbe9c0565f868de8f2c0c43;hb=7e04792a1cbd1763edf72474f6b1fbad2cd0ad31;hp=acd6ff5326094458eceb31def773fc70624aa80f;hpb=b81844b1738c584d92330a5ccd0fbd8b603d2886;p=postgresql diff --git a/src/include/optimizer/planner.h b/src/include/optimizer/planner.h index acd6ff5326..1e942c52a7 100644 --- a/src/include/optimizer/planner.h +++ b/src/include/optimizer/planner.h @@ -4,23 +4,46 @@ * prototypes for planner.c. * * - * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: planner.h,v 1.21 2001/10/25 05:50:06 momjian Exp $ + * src/include/optimizer/planner.h * *------------------------------------------------------------------------- */ #ifndef PLANNER_H #define PLANNER_H -#include "nodes/parsenodes.h" #include "nodes/plannodes.h" +#include "nodes/relation.h" -extern Plan *planner(Query *parse); -extern Plan *subquery_planner(Query *parse, double tuple_fraction); +/* Hook for plugins to get control in planner() */ +typedef PlannedStmt *(*planner_hook_type) (Query *parse, + int cursorOptions, + ParamListInfo boundParams); +extern PGDLLIMPORT planner_hook_type planner_hook; -extern Plan *make_sortplan(Query *parse, List *tlist, - Plan *plannode, List *sortcls); -#endif /* PLANNER_H */ + +extern PlannedStmt *planner(Query *parse, int cursorOptions, + ParamListInfo boundParams); +extern PlannedStmt *standard_planner(Query *parse, int cursorOptions, + ParamListInfo boundParams); + +extern Plan *subquery_planner(PlannerGlobal *glob, Query *parse, + PlannerInfo *parent_root, + bool hasRecursion, double tuple_fraction, + PlannerInfo **subroot); + +extern void add_tlist_costs_to_plan(PlannerInfo *root, Plan *plan, + List *tlist); + +extern bool is_dummy_plan(Plan *plan); + +extern Expr *expression_planner(Expr *expr); + +extern Expr *preprocess_phv_expression(PlannerInfo *root, Expr *expr); + +extern bool plan_cluster_use_sort(Oid tableOid, Oid indexOid); + +#endif /* PLANNER_H */