28 bool outerjoin_delayed,
37 bool outerjoin_delayed,
64 bool outerjoin_delayed,
111 bool outerjoin_delayed,
113 Index security_level,
120 restrictinfo->
clause = clause;
135 if (security_level > 0)
185 if (required_relids != NULL)
247 bool outerjoin_delayed,
249 Index security_level,
337 memcpy(newclause, clause,
sizeof(
OpExpr));
340 newclause->
opno = comm_op;
427 foreach(l, restrictinfo_list)
451 foreach(l, restrictinfo_list)
482 foreach(l, restrictinfo_list)
bool bms_is_subset(const Bitmapset *a, const Bitmapset *b)
bool bms_is_member(int x, const Bitmapset *a)
Bitmapset * bms_union(const Bitmapset *a, const Bitmapset *b)
bool bms_is_empty(const Bitmapset *a)
bool bms_overlap(const Bitmapset *a, const Bitmapset *b)
bool contain_leaked_vars(Node *clause)
Assert(fmt[strlen(fmt) - 1] !='\n')
List * lappend(List *list, void *datum)
Expr * make_andclause(List *andclauses)
Expr * make_orclause(List *orclauses)
static bool is_andclause(const void *clause)
static bool is_orclause(const void *clause)
static bool is_opclause(const void *clause)
static Node * get_rightop(const void *clause)
static Node * get_leftop(const void *clause)
#define castNode(_type_, nodeptr)
#define RINFO_IS_PUSHED_DOWN(rinfo, joinrelids)
#define lfirst_node(type, lc)
static int list_length(const List *l)
#define list_make2(x1, x2)
List * get_actual_clauses(List *restrictinfo_list)
bool restriction_is_or_clause(RestrictInfo *restrictinfo)
void extract_actual_join_clauses(List *restrictinfo_list, Relids joinrelids, List **joinquals, List **otherquals)
RestrictInfo * commute_restrictinfo(RestrictInfo *rinfo, Oid comm_op)
static RestrictInfo * make_restrictinfo_internal(PlannerInfo *root, Expr *clause, Expr *orclause, bool is_pushed_down, bool outerjoin_delayed, bool pseudoconstant, Index security_level, Relids required_relids, Relids outer_relids, Relids nullable_relids)
bool restriction_is_securely_promotable(RestrictInfo *restrictinfo, RelOptInfo *rel)
RestrictInfo * make_restrictinfo(PlannerInfo *root, Expr *clause, bool is_pushed_down, bool outerjoin_delayed, bool pseudoconstant, Index security_level, Relids required_relids, Relids outer_relids, Relids nullable_relids)
bool join_clause_is_movable_into(RestrictInfo *rinfo, Relids currentrelids, Relids current_and_outer)
List * extract_actual_clauses(List *restrictinfo_list, bool pseudoconstant)
bool join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel)
static Expr * make_sub_restrictinfos(PlannerInfo *root, Expr *clause, bool is_pushed_down, bool outerjoin_delayed, bool pseudoconstant, Index security_level, Relids required_relids, Relids outer_relids, Relids nullable_relids)
Relids lateral_referencers
Index baserestrict_min_security
EquivalenceClass * left_ec
Selectivity right_bucketsize
VolatileFunctionStatus has_volatile
Selectivity left_bucketsize
EquivalenceMember * left_em
EquivalenceClass * parent_ec
EquivalenceClass * right_ec
EquivalenceMember * right_em
Selectivity right_mcvfreq
Relids pull_varnos(PlannerInfo *root, Node *node)