253 ujoin->outer.elided_node,
277 ujoin->inner[
i].unrolled_join =
283 ujoin->inner[
i].elided_node,
520 *
plan = (*plan)->lefttree;
583 if (*elided_node !=
NULL)
#define Assert(condition)
#define repalloc_array(pointer, type, count)
#define palloc_array(type, count)
#define palloc0_array(type, count)
#define palloc0_object(type)
void pfree(void *pointer)
#define IsA(nodeptr, _type_)
pgpa_unrolled_join * pgpa_build_unrolled_join(pgpa_plan_walker_context *walker, pgpa_join_unroller *join_unroller)
static ElidedNode * pgpa_descend_node(PlannedStmt *pstmt, Plan **plan)
void pgpa_unroll_join(pgpa_plan_walker_context *walker, Plan *plan, bool beneath_any_gather, pgpa_join_unroller *join_unroller, pgpa_join_unroller **outer_join_unroller, pgpa_join_unroller **inner_join_unroller)
static pgpa_join_strategy pgpa_decompose_join(pgpa_plan_walker_context *walker, Plan *plan, Plan **realouter, Plan **realinner, ElidedNode **elidedrealouter, ElidedNode **elidedrealinner, bool *found_any_outer_gather, bool *found_any_inner_gather)
static ElidedNode * pgpa_descend_any_gather(PlannedStmt *pstmt, Plan **plan, bool *found_any_gather)
static bool is_sorting_plan(Plan *plan)
void pgpa_destroy_join_unroller(pgpa_join_unroller *join_unroller)
static bool pgpa_descend_any_unique(PlannedStmt *pstmt, Plan **plan, ElidedNode **elided_node)
pgpa_join_unroller * pgpa_create_join_unroller(void)
static bool is_result_node_with_child(Plan *plan)
@ JSTRAT_MERGE_JOIN_PLAIN
@ JSTRAT_NESTED_LOOP_MATERIALIZE
@ JSTRAT_NESTED_LOOP_MEMOIZE
@ JSTRAT_NESTED_LOOP_PLAIN
@ JSTRAT_MERGE_JOIN_MATERIALIZE
static bool pgpa_is_join(Plan *plan)
pgpa_scan * pgpa_build_scan(pgpa_plan_walker_context *walker, Plan *plan, ElidedNode *elided_node, bool beneath_any_gather, bool within_join_problem)
ElidedNode * pgpa_last_elided_node(PlannedStmt *pstmt, Plan *plan)
void pgpa_add_future_feature(pgpa_plan_walker_context *walker, pgpa_qf_type type, Plan *plan)
@ PGPAQF_SEMIJOIN_NON_UNIQUE
bool outer_beneath_any_gather
bool * inner_beneath_any_gather
ElidedNode * outer_elided_node
ElidedNode ** inner_elided_nodes
pgpa_join_unroller ** inner_unrollers
pgpa_join_strategy * strategy