PostgreSQL Source Code: src/include/nodes/nodeFuncs.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef NODEFUNCS_H
14#define NODEFUNCS_H
15
17
18struct PlanState;
19
20
21
22#define QTW_IGNORE_RT_SUBQUERIES 0x01
23#define QTW_IGNORE_CTE_SUBQUERIES 0x02
24#define QTW_IGNORE_RC_SUBQUERIES 0x03
25#define QTW_IGNORE_JOINALIASES 0x04
26#define QTW_IGNORE_RANGE_TABLE 0x08
27#define QTW_EXAMINE_RTES_BEFORE 0x10
29#define QTW_EXAMINE_RTES_AFTER 0x20
31#define QTW_DONT_COPY_QUERY 0x40
32#define QTW_EXAMINE_SORTGROUP 0x80
33
34#define QTW_IGNORE_GROUPEXPRS 0x100
36
42 void *context);
44
45typedef Node *(*tree_mutator_callback) (Node *node, void *context);
46
47
53 bool overwrite_ok);
57
62
64
68
70static inline bool
72{
73 return clause != NULL && IsA(clause, FuncExpr);
74}
75
77static inline bool
79{
80 return clause != NULL && IsA(clause, OpExpr);
81}
82
84static inline Node *
86{
88
91 else
92 return NULL;
93}
94
96static inline Node *
98{
100
103 else
104 return NULL;
105}
106
108static inline bool
110{
111 return (clause != NULL &&
114}
115
117static inline bool
119{
120 return (clause != NULL &&
123}
124
126static inline bool
128{
129 return (clause != NULL &&
132}
133
135static inline Expr *
137{
139}
140
142 void *context);
143
144
145
146
147
148
149
150
151
152
154
155#define expression_tree_walker(n, w, c) \
156 expression_tree_walker_impl(n, (tree_walker_callback) (w), c)
157#define expression_tree_mutator(n, m, c) \
158 expression_tree_mutator_impl(n, (tree_mutator_callback) (m), c)
159
160#define query_tree_walker(q, w, c, f) \
161 query_tree_walker_impl(q, (tree_walker_callback) (w), c, f)
162#define query_tree_mutator(q, m, c, f) \
163 query_tree_mutator_impl(q, (tree_mutator_callback) (m), c, f)
164
165#define range_table_walker(rt, w, c, f) \
166 range_table_walker_impl(rt, (tree_walker_callback) (w), c, f)
167#define range_table_mutator(rt, m, c, f) \
168 range_table_mutator_impl(rt, (tree_mutator_callback) (m), c, f)
169
170#define range_table_entry_walker(r, w, c, f) \
171 range_table_entry_walker_impl(r, (tree_walker_callback) (w), c, f)
172
173#define query_or_expression_tree_walker(n, w, c, f) \
174 query_or_expression_tree_walker_impl(n, (tree_walker_callback) (w), c, f)
175#define query_or_expression_tree_mutator(n, m, c, f) \
176 query_or_expression_tree_mutator_impl(n, (tree_mutator_callback) (m), c, f)
177
178#define raw_expression_tree_walker(n, w, c) \
179 raw_expression_tree_walker_impl(n, (tree_walker_callback) (w), c)
180
181#define planstate_tree_walker(ps, w, c) \
182 planstate_tree_walker_impl(ps, (planstate_tree_walker_callback) (w), c)
183
186 void *context);
189 void *context);
190
193 void *context, int flags);
196 void *context, int flags);
197
200 void *context, int flags);
203 void *context, int flags);
204
207 void *context, int flags);
208
211 void *context, int flags);
214 void *context, int flags);
215
218 void *context);
219
222 void *context);
223
224#endif
Datum boolop(PG_FUNCTION_ARGS)
bool query_tree_walker_impl(Query *query, tree_walker_callback walker, void *context, int flags)
static bool is_andclause(const void *clause)
bool raw_expression_tree_walker_impl(Node *node, tree_walker_callback walker, void *context)
static bool is_orclause(const void *clause)
Node *(* tree_mutator_callback)(Node *node, void *context)
static Node * get_rightop(const void *clause)
Oid exprType(const Node *expr)
bool(* planstate_tree_walker_callback)(struct PlanState *planstate, void *context)
bool planstate_tree_walker_impl(struct PlanState *planstate, planstate_tree_walker_callback walker, void *context)
bool range_table_entry_walker_impl(RangeTblEntry *rte, tree_walker_callback walker, void *context, int flags)
bool exprIsLengthCoercion(const Node *expr, int32 *coercedTypmod)
void exprSetCollation(Node *expr, Oid collation)
Oid exprInputCollation(const Node *expr)
static bool is_opclause(const void *clause)
bool(* tree_walker_callback)(Node *node, void *context)
int32 exprTypmod(const Node *expr)
bool check_functions_in_node(Node *node, check_function_callback checker, void *context)
Oid exprCollation(const Node *expr)
void exprSetInputCollation(Node *expr, Oid inputcollation)
bool query_or_expression_tree_walker_impl(Node *node, tree_walker_callback walker, void *context, int flags)
bool expression_tree_walker_impl(Node *node, tree_walker_callback walker, void *context)
static bool is_funcclause(const void *clause)
bool range_table_walker_impl(List *rtable, tree_walker_callback walker, void *context, int flags)
static bool is_notclause(const void *clause)
bool(* check_function_callback)(Oid func_id, void *context)
Node * query_or_expression_tree_mutator_impl(Node *node, tree_mutator_callback mutator, void *context, int flags)
Query * query_tree_mutator_impl(Query *query, tree_mutator_callback mutator, void *context, int flags)
Node * applyRelabelType(Node *arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat, int rlocation, bool overwrite_ok)
static Expr * get_notclausearg(const void *notclause)
Node * strip_implicit_coercions(Node *node)
int exprLocation(const Node *expr)
List * range_table_mutator_impl(List *rtable, tree_mutator_callback mutator, void *context, int flags)
bool expression_returns_set(Node *clause)
void fix_opfuncids(Node *node)
static Node * get_leftop(const void *clause)
Node * expression_tree_mutator_impl(Node *node, tree_mutator_callback mutator, void *context)
Node * relabel_to_typmod(Node *expr, int32 typmod)
void set_sa_opfuncid(ScalarArrayOpExpr *opexpr)
void set_opfuncid(OpExpr *opexpr)
#define IsA(nodeptr, _type_)
static int list_length(const List *l)