134 if (rinfo->pseudoconstant)
175 foreach(lc, ((
BoolExpr *) or_rinfo->orclause)->args)
187 foreach(lc2, andargs)
203 subclauses =
lappend(subclauses, suborclause);
222 if (subclauses ==
NIL)
236 clauselist =
lappend(clauselist, subclause);
244 if (clauselist !=
NIL)
330 sjinfo.type = T_SpecialJoinInfo;
354 join_or_rinfo->norm_selec = orig_selec / or_selec;
356 if (join_or_rinfo->norm_selec > 1)
357 join_or_rinfo->norm_selec = 1;
bool bms_equal(const Bitmapset *a, const Bitmapset *b)
Bitmapset * bms_difference(const Bitmapset *a, const Bitmapset *b)
bool contain_volatile_functions(Node *clause)
Selectivity clause_selectivity(PlannerInfo *root, Node *clause, int varRelid, JoinType jointype, SpecialJoinInfo *sjinfo)
Assert(fmt[strlen(fmt) - 1] !='\n')
List * lappend(List *list, void *datum)
List * list_concat(List *list1, const List *list2)
Expr * make_ands_explicit(List *andclauses)
Expr * make_orclause(List *orclauses)
static bool is_andclause(const void *clause)
static bool is_orclause(const void *clause)
#define castNode(_type_, nodeptr)
void extract_restriction_or_clauses(PlannerInfo *root)
static void consider_new_or_clause(PlannerInfo *root, RelOptInfo *rel, Expr *orclause, RestrictInfo *join_or_rinfo)
static Expr * extract_or_clause(RestrictInfo *or_rinfo, RelOptInfo *rel)
static bool is_safe_restriction_clause_for(RestrictInfo *rinfo, RelOptInfo *rel)
#define lfirst_node(type, lc)
bool restriction_is_or_clause(RestrictInfo *restrictinfo)
RestrictInfo * make_restrictinfo(PlannerInfo *root, Expr *clause, bool is_pushed_down, bool has_clone, bool is_clone, bool pseudoconstant, Index security_level, Relids required_relids, Relids incompatible_relids, Relids outer_relids)
bool join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel)
int simple_rel_array_size
Index baserestrict_min_security