68 root->join_rel_hash = NULL;
69 root->join_rel_level = NULL;
70 root->join_cur_level = 0;
77 root->placeholder_array = NULL;
78 root->placeholder_array_size = 0;
122 if (
root->glob->parallelModeOK &&
123 (
root->query_level > 1 ||
148 root->ec_merging_done =
true;
154 (*qp_callback) (
root, qp_extra);
212 (*qp_callback) (
root, qp_extra);
293 elog(
ERROR,
"failed to construct the join relation");
RelOptInfo * make_one_rel(PlannerInfo *root, List *joinlist)
List * remove_useless_joins(PlannerInfo *root, List *joinlist)
List * remove_useless_self_joins(PlannerInfo *root, List *joinlist)
void reduce_unique_semijoins(PlannerInfo *root)
void distribute_row_identity_vars(PlannerInfo *root)
bool is_parallel_safe(PlannerInfo *root, Node *node)
void generate_base_implied_equalities(PlannerInfo *root)
void reconsider_outer_join_clauses(PlannerInfo *root)
Assert(PointerIsAligned(start, uint64))
void match_foreign_keys_to_quals(PlannerInfo *root)
void find_lateral_references(PlannerInfo *root)
void remove_useless_groupby_columns(PlannerInfo *root)
void add_base_rels_to_query(PlannerInfo *root, Node *jtnode)
void build_base_rel_tlists(PlannerInfo *root, List *final_tlist)
List * deconstruct_jointree(PlannerInfo *root)
void add_other_rels_to_query(PlannerInfo *root)
void create_lateral_join_info(PlannerInfo *root)
#define IsA(nodeptr, _type_)
void extract_restriction_or_clauses(PlannerInfo *root)
void set_cheapest(RelOptInfo *parent_rel)
void add_path(RelOptInfo *parent_rel, Path *new_path)
GroupResultPath * create_group_result_path(PlannerInfo *root, RelOptInfo *rel, PathTarget *target, List *havingqual)
static int list_length(const List *l)
void add_placeholders_to_base_rels(PlannerInfo *root)
void fix_placeholder_input_needed_levels(PlannerInfo *root)
void find_placeholders_in_jointree(PlannerInfo *root)
RelOptInfo * query_planner(PlannerInfo *root, query_pathkeys_callback qp_callback, void *qp_extra)
void(* query_pathkeys_callback)(PlannerInfo *root, void *extra)
static struct subre * parse(struct vars *v, int stopper, int type, struct state *init, struct state *final)
void setup_simple_rel_arrays(PlannerInfo *root)
RelOptInfo * build_simple_rel(PlannerInfo *root, int relid, RelOptInfo *parent)
struct PathTarget * reltarget
struct Path * cheapest_total_path