1 /*-------------------------------------------------------------------------
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
12 *-------------------------------------------------------------------------
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
,
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
,
35 ScanDirection indexscandir
,
36 RelOptInfo
*outer_rel
);
37 extern BitmapHeapPath
*create_bitmap_heap_path(PlannerInfo
*root
,
40 RelOptInfo
*outer_rel
);
41 extern BitmapAndPath
*create_bitmap_and_path(PlannerInfo
*root
,
44 extern BitmapOrPath
*create_bitmap_or_path(PlannerInfo
*root
,
47 extern TidPath
*create_tidscan_path(PlannerInfo
*root
, RelOptInfo
*rel
,
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
,
63 SpecialJoinInfo
*sjinfo
,
66 List
*restrict_clauses
,
69 extern MergePath
*create_mergejoin_path(PlannerInfo
*root
,
72 SpecialJoinInfo
*sjinfo
,
75 List
*restrict_clauses
,
81 extern HashPath
*create_hashjoin_path(PlannerInfo
*root
,
84 SpecialJoinInfo
*sjinfo
,
87 List
*restrict_clauses
,
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
,
99 RelOptInfo
*outer_rel
,
100 RelOptInfo
*inner_rel
,
101 SpecialJoinInfo
*sjinfo
,
102 List
**restrictlist_ptr
);
104 #endif /* PATHNODE_H */