]> granicus.if.org Git - postgresql/blob - src/include/optimizer/paths.h
Clean up th ecompile process by centralizing the include files
[postgresql] / src / include / optimizer / paths.h
1 /*-------------------------------------------------------------------------
2  *
3  * paths.h--
4  *    prototypes for various files in optimizer/paths (were separate
5  *    header files
6  *
7  *
8  * Copyright (c) 1994, Regents of the University of California
9  *
10  * $Id: paths.h,v 1.1 1996/08/28 07:23:19 scrappy Exp $
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef PATHS_H
15 #define PATHS_H
16
17 /*
18  * allpaths.h
19  */
20 extern List *find_paths(Query *root, List *rels);
21
22 /*
23  * indxpath.h
24  *    routines to generate index paths
25  */
26 extern List *find_index_paths(Query *root, Rel *rel, List *indices,
27                               List *clauseinfo_list, 
28                               List *joininfo_list);
29
30 /*
31  * joinpath.h
32  *     routines to create join paths
33  */
34 extern void find_all_join_paths(Query *root, List *joinrels);
35                                 
36
37 /*
38  * orindxpath.h
39  */
40 extern List *create_or_index_paths(Query *root, Rel *rel, List *clauses);
41
42 /*
43  * hashutils.h
44  *    routines to deal with hash keys and clauses
45  */
46 extern List *group_clauses_by_hashop(List *clauseinfo_list,
47                                      int inner_relid);
48
49 /*
50  * joinutils.h
51  *    generic join method key/clause routines
52  */
53 extern List *match_pathkeys_joinkeys(List *pathkeys,
54                  List *joinkeys, List *joinclauses, int which_subkey,
55                  List **matchedJoinClausesPtr);              
56 extern List *extract_path_keys(List *joinkeys, List *tlist,
57                  int which_subkey);
58 extern Path *match_paths_joinkeys(List *joinkeys, PathOrder *ordering,
59                  List *paths, int which_subkey);
60 extern List *new_join_pathkeys(List *outer_pathkeys,
61                  List *join_rel_tlist, List *joinclauses);
62
63 /*
64  * mergeutils.h
65  *    routines to deal with merge keys and clauses
66  */
67 extern List *group_clauses_by_order(List *clauseinfo_list,
68                                     int inner_relid);
69 extern MInfo *match_order_mergeinfo(PathOrder *ordering,
70                                     List *mergeinfo_list);
71
72 /*
73  * joinrels.h
74  *    routines to determine which relations to join
75  */
76 extern List *find_join_rels(Query *root, List *outer_rels);
77 extern void add_new_joininfos(Query *root, List *joinrels, List *outerrels);
78 extern List *final_join_rels(List *join_rel_list);
79
80 /*
81  * prototypes for path/prune.c
82  */
83 extern List *prune_joinrels(List *rel_list);
84 extern void prune_rel_paths(List *rel_list);
85 extern Path *prune_rel_path(Rel *rel, Path *unorderedpath);
86 extern List *merge_joinrels(List *rel_list1, List *rel_list2);
87 extern List *prune_oldrels(List *old_rels);
88
89 #endif  /* PATHS_H */