1 /*-------------------------------------------------------------------------
4 * prototypes for various files in optimizer/paths (were separate
8 * Copyright (c) 1994, Regents of the University of California
10 * $Id: paths.h,v 1.1 1996/08/28 07:23:19 scrappy Exp $
12 *-------------------------------------------------------------------------
20 extern List *find_paths(Query *root, List *rels);
24 * routines to generate index paths
26 extern List *find_index_paths(Query *root, Rel *rel, List *indices,
27 List *clauseinfo_list,
32 * routines to create join paths
34 extern void find_all_join_paths(Query *root, List *joinrels);
40 extern List *create_or_index_paths(Query *root, Rel *rel, List *clauses);
44 * routines to deal with hash keys and clauses
46 extern List *group_clauses_by_hashop(List *clauseinfo_list,
51 * generic join method key/clause routines
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,
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);
65 * routines to deal with merge keys and clauses
67 extern List *group_clauses_by_order(List *clauseinfo_list,
69 extern MInfo *match_order_mergeinfo(PathOrder *ordering,
70 List *mergeinfo_list);
74 * routines to determine which relations to join
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);
81 * prototypes for path/prune.c
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);