43 int num_gene,
bool force);
64 struct HTAB *savehash;
96 savehash =
root->join_rel_hash;
99 root->join_rel_hash = NULL;
126 root->join_rel_hash = savehash;
182 for (rel_count = 0; rel_count < num_gene; rel_count++)
189 cur_rel_index = (int) tour[rel_count];
305 if (clumps ==
NIL || new_clump->
size == 1)
306 return lappend(clumps, new_clump);
313 if (new_clump->
size > old_clump->
size)
void generate_partitionwise_join_paths(PlannerInfo *root, RelOptInfo *rel)
void generate_useful_gather_paths(PlannerInfo *root, RelOptInfo *rel, bool override_rows)
bool bms_equal(const Bitmapset *a, const Bitmapset *b)
#define Assert(condition)
static bool desirable_join(PlannerInfo *root, RelOptInfo *outer_rel, RelOptInfo *inner_rel)
Cost geqo_eval(PlannerInfo *root, Gene *tour, int num_gene)
static List * merge_clump(PlannerInfo *root, List *clumps, Clump *new_clump, int num_gene, bool force)
RelOptInfo * gimme_tree(PlannerInfo *root, Gene *tour, int num_gene)
bool have_relevant_joinclause(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2)
RelOptInfo * make_join_rel(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2)
bool have_join_order_restriction(PlannerInfo *root, RelOptInfo *rel1, RelOptInfo *rel2)
List * list_insert_nth(List *list, int pos, void *datum)
List * list_truncate(List *list, int new_size)
List * lappend(List *list, void *datum)
void pfree(void *pointer)
MemoryContext CurrentMemoryContext
void MemoryContextDelete(MemoryContext context)
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
void set_cheapest(RelOptInfo *parent_rel)
static int list_length(const List *l)
#define foreach_delete_current(lst, var_or_cell)
static void * list_nth(const List *list, int n)
MemoryContextSwitchTo(old_ctx)
struct Path * cheapest_total_path