X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=src%2Finclude%2Foptimizer%2Fplanner.h;h=1e942c52a7eb2b3b2fbe9c0565f868de8f2c0c43;hb=7e04792a1cbd1763edf72474f6b1fbad2cd0ad31;hp=15440c24c4c77d833bfcb47e8c831a80d77fe451;hpb=7643bed58ecc87eedf7da1ed1938e85ed770d2f8;p=postgresql diff --git a/src/include/optimizer/planner.h b/src/include/optimizer/planner.h index 15440c24c4..1e942c52a7 100644 --- a/src/include/optimizer/planner.h +++ b/src/include/optimizer/planner.h @@ -4,25 +4,46 @@ * prototypes for planner.c. * * - * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/optimizer/planner.h,v 1.29 2004/06/11 01:09:12 tgl Exp $ + * src/include/optimizer/planner.h * *------------------------------------------------------------------------- */ #ifndef PLANNER_H #define PLANNER_H -#include "nodes/params.h" -#include "nodes/parsenodes.h" #include "nodes/plannodes.h" +#include "nodes/relation.h" -extern ParamListInfo PlannerBoundParamList; /* current boundParams */ +/* 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 *planner(Query *parse, bool isCursor, int cursorOptions, - ParamListInfo boundParams); -extern Plan *subquery_planner(Query *parse, double tuple_fraction); + +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 */