diff options
Diffstat (limited to 'src/include/optimizer')
| -rw-r--r-- | src/include/optimizer/clauses.h | 5 | ||||
| -rw-r--r-- | src/include/optimizer/cost.h | 19 | ||||
| -rw-r--r-- | src/include/optimizer/pathnode.h | 9 | ||||
| -rw-r--r-- | src/include/optimizer/paths.h | 7 | ||||
| -rw-r--r-- | src/include/optimizer/planmain.h | 3 | ||||
| -rw-r--r-- | src/include/optimizer/prep.h | 4 | ||||
| -rw-r--r-- | src/include/optimizer/subselect.h | 6 |
7 files changed, 32 insertions, 21 deletions
diff --git a/src/include/optimizer/clauses.h b/src/include/optimizer/clauses.h index 69a4f4c774..41e52d909a 100644 --- a/src/include/optimizer/clauses.h +++ b/src/include/optimizer/clauses.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/optimizer/clauses.h,v 1.91 2008/08/02 21:32:01 tgl Exp $ + * $PostgreSQL: pgsql/src/include/optimizer/clauses.h,v 1.92 2008/08/14 18:48:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -59,6 +59,9 @@ extern bool contain_mutable_functions(Node *clause); extern bool contain_volatile_functions(Node *clause); extern bool contain_nonstrict_functions(Node *clause); extern Relids find_nonnullable_rels(Node *clause); +extern List *find_nonnullable_vars(Node *clause); +extern List *find_forced_null_vars(Node *clause); +extern Var *find_forced_null_var(Node *clause); extern bool is_pseudo_constant_clause(Node *clause); extern bool is_pseudo_constant_clause_relids(Node *clause, Relids relids); diff --git a/src/include/optimizer/cost.h b/src/include/optimizer/cost.h index 6780846cb0..17caeb4ee4 100644 --- a/src/include/optimizer/cost.h +++ b/src/include/optimizer/cost.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/optimizer/cost.h,v 1.90 2008/01/01 19:45:58 momjian Exp $ + * $PostgreSQL: pgsql/src/include/optimizer/cost.h,v 1.91 2008/08/14 18:48:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -87,9 +87,12 @@ extern void cost_group(Path *path, PlannerInfo *root, int numGroupCols, double numGroups, Cost input_startup_cost, Cost input_total_cost, double input_tuples); -extern void cost_nestloop(NestPath *path, PlannerInfo *root); -extern void cost_mergejoin(MergePath *path, PlannerInfo *root); -extern void cost_hashjoin(HashPath *path, PlannerInfo *root); +extern void cost_nestloop(NestPath *path, PlannerInfo *root, + SpecialJoinInfo *sjinfo); +extern void cost_mergejoin(MergePath *path, PlannerInfo *root, + SpecialJoinInfo *sjinfo); +extern void cost_hashjoin(HashPath *path, PlannerInfo *root, + SpecialJoinInfo *sjinfo); extern void cost_qual_eval(QualCost *cost, List *quals, PlannerInfo *root); extern void cost_qual_eval_node(QualCost *cost, Node *qual, PlannerInfo *root); extern Cost get_initplan_cost(PlannerInfo *root, SubPlan *subplan); @@ -97,7 +100,7 @@ extern void set_baserel_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_joinrel_size_estimates(PlannerInfo *root, RelOptInfo *rel, RelOptInfo *outer_rel, RelOptInfo *inner_rel, - JoinType jointype, + SpecialJoinInfo *sjinfo, List *restrictlist); extern void set_function_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern void set_values_size_estimates(PlannerInfo *root, RelOptInfo *rel); @@ -109,10 +112,12 @@ extern void set_values_size_estimates(PlannerInfo *root, RelOptInfo *rel); extern Selectivity clauselist_selectivity(PlannerInfo *root, List *clauses, int varRelid, - JoinType jointype); + JoinType jointype, + SpecialJoinInfo *sjinfo); extern Selectivity clause_selectivity(PlannerInfo *root, Node *clause, int varRelid, - JoinType jointype); + JoinType jointype, + SpecialJoinInfo *sjinfo); #endif /* COST_H */ diff --git a/src/include/optimizer/pathnode.h b/src/include/optimizer/pathnode.h index c5a1f93c34..1db1674e12 100644 --- a/src/include/optimizer/pathnode.h +++ b/src/include/optimizer/pathnode.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/optimizer/pathnode.h,v 1.77 2008/01/01 19:45:58 momjian Exp $ + * $PostgreSQL: pgsql/src/include/optimizer/pathnode.h,v 1.78 2008/08/14 18:48:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -50,7 +50,7 @@ extern AppendPath *create_append_path(RelOptInfo *rel, List *subpaths); extern ResultPath *create_result_path(List *quals); extern MaterialPath *create_material_path(RelOptInfo *rel, Path *subpath); extern UniquePath *create_unique_path(PlannerInfo *root, RelOptInfo *rel, - Path *subpath); + Path *subpath, SpecialJoinInfo *sjinfo); extern Path *create_subqueryscan_path(RelOptInfo *rel, List *pathkeys); extern Path *create_functionscan_path(PlannerInfo *root, RelOptInfo *rel); extern Path *create_valuesscan_path(PlannerInfo *root, RelOptInfo *rel); @@ -58,6 +58,7 @@ extern Path *create_valuesscan_path(PlannerInfo *root, RelOptInfo *rel); extern NestPath *create_nestloop_path(PlannerInfo *root, RelOptInfo *joinrel, JoinType jointype, + SpecialJoinInfo *sjinfo, Path *outer_path, Path *inner_path, List *restrict_clauses, @@ -66,6 +67,7 @@ extern NestPath *create_nestloop_path(PlannerInfo *root, extern MergePath *create_mergejoin_path(PlannerInfo *root, RelOptInfo *joinrel, JoinType jointype, + SpecialJoinInfo *sjinfo, Path *outer_path, Path *inner_path, List *restrict_clauses, @@ -77,6 +79,7 @@ extern MergePath *create_mergejoin_path(PlannerInfo *root, extern HashPath *create_hashjoin_path(PlannerInfo *root, RelOptInfo *joinrel, JoinType jointype, + SpecialJoinInfo *sjinfo, Path *outer_path, Path *inner_path, List *restrict_clauses, @@ -93,7 +96,7 @@ extern RelOptInfo *build_join_rel(PlannerInfo *root, Relids joinrelids, RelOptInfo *outer_rel, RelOptInfo *inner_rel, - JoinType jointype, + SpecialJoinInfo *sjinfo, List **restrictlist_ptr); #endif /* PATHNODE_H */ diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h index 81e8089df1..455745e2fa 100644 --- a/src/include/optimizer/paths.h +++ b/src/include/optimizer/paths.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/optimizer/paths.h,v 1.104 2008/03/31 16:59:26 tgl Exp $ + * $PostgreSQL: pgsql/src/include/optimizer/paths.h,v 1.105 2008/08/14 18:48:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -89,9 +89,8 @@ extern void create_tidscan_paths(PlannerInfo *root, RelOptInfo *rel); * routines to create join paths */ extern void add_paths_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel, - RelOptInfo *outerrel, - RelOptInfo *innerrel, - JoinType jointype, + RelOptInfo *outerrel, RelOptInfo *innerrel, + JoinType jointype, SpecialJoinInfo *sjinfo, List *restrictlist); /* diff --git a/src/include/optimizer/planmain.h b/src/include/optimizer/planmain.h index 0aa1d32f94..1f15eda941 100644 --- a/src/include/optimizer/planmain.h +++ b/src/include/optimizer/planmain.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/optimizer/planmain.h,v 1.110 2008/08/07 19:35:02 tgl Exp $ + * $PostgreSQL: pgsql/src/include/optimizer/planmain.h,v 1.111 2008/08/14 18:48:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -76,7 +76,6 @@ extern int join_collapse_limit; extern void add_base_rels_to_query(PlannerInfo *root, Node *jtnode); extern void build_base_rel_tlists(PlannerInfo *root, List *final_tlist); -extern void add_IN_vars_to_tlists(PlannerInfo *root); extern void add_vars_to_targetlist(PlannerInfo *root, List *vars, Relids where_needed); extern List *deconstruct_jointree(PlannerInfo *root); diff --git a/src/include/optimizer/prep.h b/src/include/optimizer/prep.h index 80fa3b5152..1a90a13208 100644 --- a/src/include/optimizer/prep.h +++ b/src/include/optimizer/prep.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/optimizer/prep.h,v 1.60 2008/03/18 22:04:14 tgl Exp $ + * $PostgreSQL: pgsql/src/include/optimizer/prep.h,v 1.61 2008/08/14 18:48:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -21,7 +21,7 @@ /* * prototypes for prepjointree.c */ -extern Node *pull_up_IN_clauses(PlannerInfo *root, Node *node); +extern Node *pull_up_sublinks(PlannerInfo *root, Node *node); extern void inline_set_returning_functions(PlannerInfo *root); extern Node *pull_up_subqueries(PlannerInfo *root, Node *jtnode, bool below_outer_join, bool append_rel_member); diff --git a/src/include/optimizer/subselect.h b/src/include/optimizer/subselect.h index bb60aac9d4..b9bd76b07f 100644 --- a/src/include/optimizer/subselect.h +++ b/src/include/optimizer/subselect.h @@ -5,7 +5,7 @@ * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/optimizer/subselect.h,v 1.31 2008/07/10 02:14:03 tgl Exp $ + * $PostgreSQL: pgsql/src/include/optimizer/subselect.h,v 1.32 2008/08/14 18:48:00 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -15,7 +15,9 @@ #include "nodes/plannodes.h" #include "nodes/relation.h" -extern Node *convert_IN_to_join(PlannerInfo *root, SubLink *sublink); +extern Node *convert_ANY_sublink_to_join(PlannerInfo *root, SubLink *sublink); +extern Node *convert_EXISTS_sublink_to_join(PlannerInfo *root, + SubLink *sublink, bool under_not); extern Node *SS_replace_correlation_vars(PlannerInfo *root, Node *expr); extern Node *SS_process_sublinks(PlannerInfo *root, Node *expr, bool isQual); extern void SS_finalize_plan(PlannerInfo *root, Plan *plan, |
