32 Relids incompatible_relids,
60 Relids incompatible_relids,
110 Index security_level,
112 Relids incompatible_relids,
126 restrictinfo->incompatible_relids = incompatible_relids;
134 if (security_level > 0)
184 if (required_relids !=
NULL)
199 root->outer_join_rels);
268 Index security_level,
270 Relids incompatible_relids,
379 result->left_relids = rinfo->right_relids;
380 result->right_relids = rinfo->left_relids;
382 result->left_ec = rinfo->right_ec;
383 result->right_ec = rinfo->left_ec;
384 result->left_em = rinfo->right_em;
385 result->right_em = rinfo->left_em;
386 result->scansel_cache =
NIL;
387 if (rinfo->hashjoinoperator == clause->
opno)
388 result->hashjoinoperator =
comm_op;
391 result->left_bucketsize = rinfo->right_bucketsize;
392 result->right_bucketsize = rinfo->left_bucketsize;
393 result->left_mcvfreq = rinfo->right_mcvfreq;
394 result->right_mcvfreq = rinfo->left_mcvfreq;
469 Assert(!rinfo->pseudoconstant);
529 if (!rinfo->pseudoconstant &&
536 Assert(!rinfo->pseudoconstant);
Bitmapset * bms_difference(const Bitmapset *a, const Bitmapset *b)
bool bms_is_subset(const Bitmapset *a, const Bitmapset *b)
void bms_free(Bitmapset *a)
int bms_num_members(const Bitmapset *a)
bool bms_is_member(int x, const Bitmapset *a)
Bitmapset * bms_union(const Bitmapset *a, const Bitmapset *b)
bool bms_overlap(const Bitmapset *a, const Bitmapset *b)
#define Assert(condition)
bool contain_leaked_vars(Node *clause)
List * lappend(List *list, void *datum)
Expr * make_orclause(List *orclauses)
Expr * make_andclause(List *andclauses)
static bool is_andclause(const void *clause)
static bool is_orclause(const void *clause)
static Node * get_rightop(const void *clause)
static bool is_opclause(const void *clause)
static Node * get_leftop(const void *clause)
#define IsA(nodeptr, _type_)
#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)
static bool DatumGetBool(Datum X)
bool restriction_is_or_clause(RestrictInfo *restrictinfo)
List * extract_actual_clauses(List *restrictinfo_list, bool pseudoconstant)
void extract_actual_join_clauses(List *restrictinfo_list, Relids joinrelids, List **joinquals, List **otherquals)
bool restriction_is_securely_promotable(RestrictInfo *restrictinfo, RelOptInfo *rel)
RestrictInfo * make_plain_restrictinfo(PlannerInfo *root, Expr *clause, Expr *orclause, bool is_pushed_down, bool has_clone, bool is_clone, bool pseudoconstant, Index security_level, Relids required_relids, Relids incompatible_relids, Relids outer_relids)
List * get_actual_clauses(List *restrictinfo_list)
static Expr * make_sub_restrictinfos(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_into(RestrictInfo *rinfo, Relids currentrelids, Relids current_and_outer)
bool join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel)
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)
RestrictInfo * commute_restrictinfo(RestrictInfo *rinfo, Oid comm_op)
static bool rinfo_is_constant_true(RestrictInfo *rinfo)
Index baserestrict_min_security
Relids pull_varnos(PlannerInfo *root, Node *node)