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-2024, 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, false, false, 0, \
23  NULL, NULL, NULL)
24 
26  Expr *clause,
27  bool is_pushed_down,
28  bool has_clone,
29  bool is_clone,
30  bool pseudoconstant,
31  Index security_level,
32  Relids required_relids,
33  Relids incompatible_relids,
34  Relids outer_relids);
35 extern RestrictInfo *commute_restrictinfo(RestrictInfo *rinfo, Oid comm_op);
36 extern bool restriction_is_or_clause(RestrictInfo *restrictinfo);
37 extern bool restriction_is_securely_promotable(RestrictInfo *restrictinfo,
38  RelOptInfo *rel);
39 extern List *get_actual_clauses(List *restrictinfo_list);
40 extern List *extract_actual_clauses(List *restrictinfo_list,
41  bool pseudoconstant);
42 extern void extract_actual_join_clauses(List *restrictinfo_list,
43  Relids joinrelids,
44  List **joinquals,
45  List **otherquals);
46 extern bool join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel);
47 extern bool join_clause_is_movable_into(RestrictInfo *rinfo,
48  Relids currentrelids,
49  Relids current_and_outer);
50 
51 #endif /* RESTRICTINFO_H */
unsigned int Index
Definition: c.h:614
unsigned int Oid
Definition: postgres_ext.h:31
tree ctl root
Definition: radixtree.h:1884
List * get_actual_clauses(List *restrictinfo_list)
Definition: restrictinfo.c:469
bool restriction_is_or_clause(RestrictInfo *restrictinfo)
Definition: restrictinfo.c:416
void extract_actual_join_clauses(List *restrictinfo_list, Relids joinrelids, List **joinquals, List **otherquals)
Definition: restrictinfo.c:522
RestrictInfo * commute_restrictinfo(RestrictInfo *rinfo, Oid comm_op)
Definition: restrictinfo.c:359
bool restriction_is_securely_promotable(RestrictInfo *restrictinfo, RelOptInfo *rel)
Definition: restrictinfo.c:431
bool join_clause_is_movable_into(RestrictInfo *rinfo, Relids currentrelids, Relids current_and_outer)
Definition: restrictinfo.c:670
List * extract_actual_clauses(List *restrictinfo_list, bool pseudoconstant)
Definition: restrictinfo.c:494
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)
Definition: restrictinfo.c:63
bool join_clause_is_movable_to(RestrictInfo *rinfo, RelOptInfo *baserel)
Definition: restrictinfo.c:584
Definition: pg_list.h:54