summaryrefslogtreecommitdiff
path: root/src/include/optimizer/paths.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-06-05 22:32:58 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-06-05 22:32:58 +0000
commit9ab4d98168407c3436d3f0e02d32720b0d9075a0 (patch)
tree3572d316a54a99512277ead2ad757032998b2839 /src/include/optimizer/paths.h
parent22dbd540478517ff6c55381ae7ce07a3a2e64474 (diff)
Remove planner's private fields from Query struct, and put them into
a new PlannerInfo struct, which is passed around instead of the bare Query in all the planning code. This commit is essentially just a code-beautification exercise, but it does open the door to making larger changes to the planner data structures without having to muck with the widely-known Query struct.
Diffstat (limited to 'src/include/optimizer/paths.h')
-rw-r--r--src/include/optimizer/paths.h59
1 files changed, 29 insertions, 30 deletions
diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h
index 3b90cd7f7c8..f0c2e64599f 100644
--- a/src/include/optimizer/paths.h
+++ b/src/include/optimizer/paths.h
@@ -1,14 +1,13 @@
/*-------------------------------------------------------------------------
*
* paths.h
- * prototypes for various files in optimizer/path (were separate
- * header files)
+ * prototypes for various files in optimizer/path
*
*
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/optimizer/paths.h,v 1.83 2005/04/25 01:30:14 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/paths.h,v 1.84 2005/06/05 22:32:58 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -24,23 +23,23 @@
extern bool enable_geqo;
extern int geqo_threshold;
-extern RelOptInfo *make_one_rel(Query *root);
-extern RelOptInfo *make_fromexpr_rel(Query *root, FromExpr *from);
+extern RelOptInfo *make_one_rel(PlannerInfo *root);
+extern RelOptInfo *make_fromexpr_rel(PlannerInfo *root, FromExpr *from);
#ifdef OPTIMIZER_DEBUG
-extern void debug_print_rel(Query *root, RelOptInfo *rel);
+extern void debug_print_rel(PlannerInfo *root, RelOptInfo *rel);
#endif
/*
* indxpath.c
* routines to generate index paths
*/
-extern void create_index_paths(Query *root, RelOptInfo *rel);
-extern List *generate_bitmap_or_paths(Query *root, RelOptInfo *rel,
+extern void create_index_paths(PlannerInfo *root, RelOptInfo *rel);
+extern List *generate_bitmap_or_paths(PlannerInfo *root, RelOptInfo *rel,
List *clauses, List *outer_clauses,
bool isjoininner,
Relids outer_relids);
-extern Path *best_inner_indexscan(Query *root, RelOptInfo *rel,
+extern Path *best_inner_indexscan(PlannerInfo *root, RelOptInfo *rel,
Relids outer_relids, JoinType jointype);
extern List *group_clauses_by_indexkey(IndexOptInfo *index,
List *clauses, List *outer_clauses,
@@ -49,7 +48,7 @@ extern bool match_index_to_operand(Node *operand, int indexcol,
IndexOptInfo *index);
extern List *expand_indexqual_conditions(IndexOptInfo *index,
List *clausegroups);
-extern void check_partial_indexes(Query *root, RelOptInfo *rel);
+extern void check_partial_indexes(PlannerInfo *root, RelOptInfo *rel);
extern bool pred_test(List *predicate_list, List *restrictinfo_list);
extern List *flatten_clausegroups_list(List *clausegroups);
@@ -57,19 +56,19 @@ extern List *flatten_clausegroups_list(List *clausegroups);
* orindxpath.c
* additional routines for indexable OR clauses
*/
-extern bool create_or_index_quals(Query *root, RelOptInfo *rel);
+extern bool create_or_index_quals(PlannerInfo *root, RelOptInfo *rel);
/*
* tidpath.h
* routines to generate tid paths
*/
-extern void create_tidscan_paths(Query *root, RelOptInfo *rel);
+extern void create_tidscan_paths(PlannerInfo *root, RelOptInfo *rel);
/*
* joinpath.c
* routines to create join paths
*/
-extern void add_paths_to_joinrel(Query *root, RelOptInfo *joinrel,
+extern void add_paths_to_joinrel(PlannerInfo *root, RelOptInfo *joinrel,
RelOptInfo *outerrel,
RelOptInfo *innerrel,
JoinType jointype,
@@ -79,9 +78,9 @@ extern void add_paths_to_joinrel(Query *root, RelOptInfo *joinrel,
* joinrels.c
* routines to determine which relations to join
*/
-extern List *make_rels_by_joins(Query *root, int level, List **joinrels);
-extern RelOptInfo *make_jointree_rel(Query *root, Node *jtnode);
-extern RelOptInfo *make_join_rel(Query *root,
+extern List *make_rels_by_joins(PlannerInfo *root, int level, List **joinrels);
+extern RelOptInfo *make_jointree_rel(PlannerInfo *root, Node *jtnode);
+extern RelOptInfo *make_join_rel(PlannerInfo *root,
RelOptInfo *rel1, RelOptInfo *rel2,
JoinType jointype);
@@ -97,10 +96,10 @@ typedef enum
PATHKEYS_DIFFERENT /* neither pathkey includes the other */
} PathKeysComparison;
-extern void add_equijoined_keys(Query *root, RestrictInfo *restrictinfo);
-extern bool exprs_known_equal(Query *root, Node *item1, Node *item2);
-extern void generate_implied_equalities(Query *root);
-extern List *canonicalize_pathkeys(Query *root, List *pathkeys);
+extern void add_equijoined_keys(PlannerInfo *root, RestrictInfo *restrictinfo);
+extern bool exprs_known_equal(PlannerInfo *root, Node *item1, Node *item2);
+extern void generate_implied_equalities(PlannerInfo *root);
+extern List *canonicalize_pathkeys(PlannerInfo *root, List *pathkeys);
extern PathKeysComparison compare_pathkeys(List *keys1, List *keys2);
extern bool pathkeys_contained_in(List *keys1, List *keys2);
extern PathKeysComparison compare_noncanonical_pathkeys(List *keys1,
@@ -111,29 +110,29 @@ extern Path *get_cheapest_path_for_pathkeys(List *paths, List *pathkeys,
extern Path *get_cheapest_fractional_path_for_pathkeys(List *paths,
List *pathkeys,
double fraction);
-extern List *build_index_pathkeys(Query *root, IndexOptInfo *index,
+extern List *build_index_pathkeys(PlannerInfo *root, IndexOptInfo *index,
ScanDirection scandir);
-extern List *build_subquery_pathkeys(Query *root, RelOptInfo *rel,
- Query *subquery);
-extern List *build_join_pathkeys(Query *root,
+extern List *convert_subquery_pathkeys(PlannerInfo *root, RelOptInfo *rel,
+ List *subquery_pathkeys);
+extern List *build_join_pathkeys(PlannerInfo *root,
RelOptInfo *joinrel,
JoinType jointype,
List *outer_pathkeys);
extern List *make_pathkeys_for_sortclauses(List *sortclauses,
List *tlist);
-extern void cache_mergeclause_pathkeys(Query *root,
+extern void cache_mergeclause_pathkeys(PlannerInfo *root,
RestrictInfo *restrictinfo);
-extern List *find_mergeclauses_for_pathkeys(Query *root,
+extern List *find_mergeclauses_for_pathkeys(PlannerInfo *root,
List *pathkeys,
List *restrictinfos);
-extern List *make_pathkeys_for_mergeclauses(Query *root,
+extern List *make_pathkeys_for_mergeclauses(PlannerInfo *root,
List *mergeclauses,
RelOptInfo *rel);
-extern int pathkeys_useful_for_merging(Query *root,
+extern int pathkeys_useful_for_merging(PlannerInfo *root,
RelOptInfo *rel,
List *pathkeys);
-extern int pathkeys_useful_for_ordering(Query *root, List *pathkeys);
-extern List *truncate_useless_pathkeys(Query *root,
+extern int pathkeys_useful_for_ordering(PlannerInfo *root, List *pathkeys);
+extern List *truncate_useless_pathkeys(PlannerInfo *root,
RelOptInfo *rel,
List *pathkeys);