Disallow empty passwords in LDAP authentication, the same way
[PostgreSQL.git] / src / include / optimizer / pathnode.h
blob0f4c52ef7c25bffd0fac58c0d052613ffcb2e462
1 /*-------------------------------------------------------------------------
3 * pathnode.h
4 * prototypes for pathnode.c, relnode.c.
7 * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
10 * $PostgreSQL$
12 *-------------------------------------------------------------------------
14 #ifndef PATHNODE_H
15 #define PATHNODE_H
17 #include "nodes/relation.h"
21 * prototypes for pathnode.c
23 extern int compare_path_costs(Path *path1, Path *path2,
24 CostSelector criterion);
25 extern int compare_fractional_path_costs(Path *path1, Path *path2,
26 double fraction);
27 extern void set_cheapest(RelOptInfo *parent_rel);
28 extern void add_path(RelOptInfo *parent_rel, Path *new_path);
30 extern Path *create_seqscan_path(PlannerInfo *root, RelOptInfo *rel);
31 extern IndexPath *create_index_path(PlannerInfo *root,
32 IndexOptInfo *index,
33 List *clause_groups,
34 List *pathkeys,
35 ScanDirection indexscandir,
36 RelOptInfo *outer_rel);
37 extern BitmapHeapPath *create_bitmap_heap_path(PlannerInfo *root,
38 RelOptInfo *rel,
39 Path *bitmapqual,
40 RelOptInfo *outer_rel);
41 extern BitmapAndPath *create_bitmap_and_path(PlannerInfo *root,
42 RelOptInfo *rel,
43 List *bitmapquals);
44 extern BitmapOrPath *create_bitmap_or_path(PlannerInfo *root,
45 RelOptInfo *rel,
46 List *bitmapquals);
47 extern TidPath *create_tidscan_path(PlannerInfo *root, RelOptInfo *rel,
48 List *tidquals);
49 extern AppendPath *create_append_path(RelOptInfo *rel, List *subpaths);
50 extern ResultPath *create_result_path(List *quals);
51 extern MaterialPath *create_material_path(RelOptInfo *rel, Path *subpath);
52 extern UniquePath *create_unique_path(PlannerInfo *root, RelOptInfo *rel,
53 Path *subpath, SpecialJoinInfo *sjinfo);
54 extern Path *create_subqueryscan_path(RelOptInfo *rel, List *pathkeys);
55 extern Path *create_functionscan_path(PlannerInfo *root, RelOptInfo *rel);
56 extern Path *create_valuesscan_path(PlannerInfo *root, RelOptInfo *rel);
57 extern Path *create_ctescan_path(PlannerInfo *root, RelOptInfo *rel);
58 extern Path *create_worktablescan_path(PlannerInfo *root, RelOptInfo *rel);
60 extern NestPath *create_nestloop_path(PlannerInfo *root,
61 RelOptInfo *joinrel,
62 JoinType jointype,
63 SpecialJoinInfo *sjinfo,
64 Path *outer_path,
65 Path *inner_path,
66 List *restrict_clauses,
67 List *pathkeys);
69 extern MergePath *create_mergejoin_path(PlannerInfo *root,
70 RelOptInfo *joinrel,
71 JoinType jointype,
72 SpecialJoinInfo *sjinfo,
73 Path *outer_path,
74 Path *inner_path,
75 List *restrict_clauses,
76 List *pathkeys,
77 List *mergeclauses,
78 List *outersortkeys,
79 List *innersortkeys);
81 extern HashPath *create_hashjoin_path(PlannerInfo *root,
82 RelOptInfo *joinrel,
83 JoinType jointype,
84 SpecialJoinInfo *sjinfo,
85 Path *outer_path,
86 Path *inner_path,
87 List *restrict_clauses,
88 List *hashclauses);
91 * prototypes for relnode.c
93 extern RelOptInfo *build_simple_rel(PlannerInfo *root, int relid,
94 RelOptKind reloptkind);
95 extern RelOptInfo *find_base_rel(PlannerInfo *root, int relid);
96 extern RelOptInfo *find_join_rel(PlannerInfo *root, Relids relids);
97 extern RelOptInfo *build_join_rel(PlannerInfo *root,
98 Relids joinrelids,
99 RelOptInfo *outer_rel,
100 RelOptInfo *inner_rel,
101 SpecialJoinInfo *sjinfo,
102 List **restrictlist_ptr);
104 #endif /* PATHNODE_H */