00001 /*------------------------------------------------------------------------- 00002 * 00003 * prep.h 00004 * prototypes for files in optimizer/prep/ 00005 * 00006 * 00007 * Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group 00008 * Portions Copyright (c) 1994, Regents of the University of California 00009 * 00010 * src/include/optimizer/prep.h 00011 * 00012 *------------------------------------------------------------------------- 00013 */ 00014 #ifndef PREP_H 00015 #define PREP_H 00016 00017 #include "nodes/plannodes.h" 00018 #include "nodes/relation.h" 00019 00020 00021 /* 00022 * prototypes for prepjointree.c 00023 */ 00024 extern void pull_up_sublinks(PlannerInfo *root); 00025 extern void inline_set_returning_functions(PlannerInfo *root); 00026 extern Node *pull_up_subqueries(PlannerInfo *root, Node *jtnode); 00027 extern void flatten_simple_union_all(PlannerInfo *root); 00028 extern void reduce_outer_joins(PlannerInfo *root); 00029 extern Relids get_relids_in_jointree(Node *jtnode, bool include_joins); 00030 extern Relids get_relids_for_join(PlannerInfo *root, int joinrelid); 00031 00032 /* 00033 * prototypes for prepqual.c 00034 */ 00035 extern Node *negate_clause(Node *node); 00036 extern Expr *canonicalize_qual(Expr *qual); 00037 00038 /* 00039 * prototypes for preptlist.c 00040 */ 00041 extern List *preprocess_targetlist(PlannerInfo *root, List *tlist); 00042 00043 extern PlanRowMark *get_plan_rowmark(List *rowmarks, Index rtindex); 00044 00045 /* 00046 * prototypes for prepunion.c 00047 */ 00048 extern Plan *plan_set_operations(PlannerInfo *root, double tuple_fraction, 00049 List **sortClauses); 00050 00051 extern void expand_inherited_tables(PlannerInfo *root); 00052 00053 extern Node *adjust_appendrel_attrs(PlannerInfo *root, Node *node, 00054 AppendRelInfo *appinfo); 00055 00056 #endif /* PREP_H */