|
- /*-------------------------------------------------------------------------
- *
- * planner.h
- * prototypes for planner.c.
- *
- * Note that the primary entry points for planner.c are declared in
- * optimizer/optimizer.h, because they're intended to be called from
- * non-planner code. Declarations here are meant for use by other
- * planner modules.
- *
- * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * src/include/optimizer/planner.h
- *
- *-------------------------------------------------------------------------
- */
- #ifndef PLANNER_H
- #define PLANNER_H
-
- #include "nodes/pathnodes.h"
- #include "nodes/plannodes.h"
-
-
- /* 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;
-
- /* Hook for plugins to get control when grouping_planner() plans upper rels */
- typedef void (*create_upper_paths_hook_type) (PlannerInfo *root,
- UpperRelationKind stage,
- RelOptInfo *input_rel,
- RelOptInfo *output_rel,
- void *extra);
- extern PGDLLIMPORT create_upper_paths_hook_type create_upper_paths_hook;
-
-
- extern PlannedStmt *standard_planner(Query *parse, int cursorOptions,
- ParamListInfo boundParams);
-
- extern PlannerInfo *subquery_planner(PlannerGlobal *glob, Query *parse,
- PlannerInfo *parent_root,
- bool hasRecursion, double tuple_fraction);
-
- extern RowMarkType select_rowmark_type(RangeTblEntry *rte,
- LockClauseStrength strength);
-
- extern bool limit_needed(Query *parse);
-
- extern void mark_partial_aggref(Aggref *agg, AggSplit aggsplit);
-
- extern Path *get_cheapest_fractional_path(RelOptInfo *rel,
- double tuple_fraction);
-
- extern Expr *preprocess_phv_expression(PlannerInfo *root, Expr *expr);
-
- #endif /* PLANNER_H */
|