69 root->join_rel_hash = NULL;
70 root->join_rel_level = NULL;
78 root->placeholder_array = NULL;
79 root->placeholder_array_size = 0;
81 root->initial_rels =
NIL;
155 (*qp_callback) (root, qp_extra);
210 (*qp_callback) (root, qp_extra);
286 elog(
ERROR,
"failed to construct the join relation");
RelOptInfo * make_one_rel(PlannerInfo *root, List *joinlist)
List * remove_useless_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)
elog(ERROR, "%s: %s", p2, msg)
void generate_base_implied_equalities(PlannerInfo *root)
void reconsider_outer_join_clauses(PlannerInfo *root)
List * deconstruct_jointree(PlannerInfo *root)
void match_foreign_keys_to_quals(PlannerInfo *root)
void find_lateral_references(PlannerInfo *root)
void add_base_rels_to_query(PlannerInfo *root, Node *jtnode)
void build_base_rel_tlists(PlannerInfo *root, List *final_tlist)
void add_other_rels_to_query(PlannerInfo *root)
void create_lateral_join_info(PlannerInfo *root)
Assert(fmt[strlen(fmt) - 1] !='\n')
#define IsA(nodeptr, _type_)
void extract_restriction_or_clauses(PlannerInfo *root)
GroupResultPath * create_group_result_path(PlannerInfo *root, RelOptInfo *rel, PathTarget *target, List *havingqual)
void set_cheapest(RelOptInfo *parent_rel)
void add_path(RelOptInfo *parent_rel, Path *new_path)
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)
List * right_join_clauses
struct PathTarget * reltarget
struct Path * cheapest_total_path