PostgreSQL Source Code  git master
restrictinfo.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * restrictinfo.h
4  * prototypes for restrictinfo.c.
5  *
6  *
7  * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/optimizer/restrictinfo.h
11  *
12  *-------------------------------------------------------------------------
13  */
14 #ifndef RESTRICTINFO_H
15 #define RESTRICTINFO_H
16 
17 #include "nodes/pathnodes.h"
18 
19 
20 /* Convenience macro for the common case of a valid-everywhere qual */
21 #define make_simple_restrictinfo(root, clause) \
22  make_restrictinfo(root, clause, true, false, 0, NULL, NULL)
23 
25  Expr *clause,
26  bool is_pushed_down,
27  bool pseudoconstant,
28  Index security_level,
29  Relids required_relids,
30  Relids outer_relids);
31 extern RestrictInfo *commute_restrictinfo(RestrictInfo *rinfo, Oid comm_op);
32 extern bool restriction_is_or_clause(RestrictInfo *restrictinfo);
33 extern bool restriction_is_securely_promotable(RestrictInfo *restrictinfo,
34  RelOptInfo *rel);
35 extern List *get_actual_clauses(List *restrictinfo_list);
36 extern List *extract_actual_clauses(List *restrictinfo_list,
37  bool pseudoconstant);
38 extern void extract_actual_join_clauses(List *restrictinfo_list,
39  Relids joinrelids,
40  List **joinquals,
41  List **otherquals);
42 extern bool clause_is_computable_at(PlannerInfo *root,
43  Relids clause_relids,
44  Relids eval_relids);
45 extern bool join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel);
46 extern bool join_clause_is_movable_into(RestrictInfo *rinfo,
47  Relids currentrelids,
48  Relids current_and_outer);
49 
50 #endif /* RESTRICTINFO_H */
unsigned int Index
Definition: c.h:598
unsigned int Oid
Definition: postgres_ext.h:31
List * get_actual_clauses(List *restrictinfo_list)
Definition: restrictinfo.c:439
bool restriction_is_or_clause(RestrictInfo *restrictinfo)
Definition: restrictinfo.c:386
void extract_actual_join_clauses(List *restrictinfo_list, Relids joinrelids, List **joinquals, List **otherquals)
Definition: restrictinfo.c:492
RestrictInfo * commute_restrictinfo(RestrictInfo *rinfo, Oid comm_op)
Definition: restrictinfo.c:329
bool restriction_is_securely_promotable(RestrictInfo *restrictinfo, RelOptInfo *rel)
Definition: restrictinfo.c:401
bool join_clause_is_movable_into(RestrictInfo *rinfo, Relids currentrelids, Relids current_and_outer)
Definition: restrictinfo.c:693
List * extract_actual_clauses(List *restrictinfo_list, bool pseudoconstant)
Definition: restrictinfo.c:464
RestrictInfo * make_restrictinfo(PlannerInfo *root, Expr *clause, bool is_pushed_down, bool pseudoconstant, Index security_level, Relids required_relids, Relids outer_relids)
Definition: restrictinfo.c:61
bool join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel)
Definition: restrictinfo.c:607
bool clause_is_computable_at(PlannerInfo *root, Relids clause_relids, Relids eval_relids)
Definition: restrictinfo.c:543
Definition: pg_list.h:54