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

28

29#define QTW_EXAMINE_RTES_AFTER 0x20

30

31#define QTW_DONT_COPY_QUERY 0x40

32#define QTW_EXAMINE_SORTGROUP 0x80

33

34#define QTW_IGNORE_GROUPEXPRS 0x100

36

39

42 void *context);

44

45typedef Node *(*tree_mutator_callback) (Node *node, void *context);

46

47

53 bool overwrite_ok);

57

62

64

68

69

70static inline bool

72{

73 return clause != NULL && IsA(clause, FuncExpr);

74}

75

76

77static inline bool

79{

80 return clause != NULL && IsA(clause, OpExpr);

81}

82

83

84static inline Node *

86{

88

91 else

92 return NULL;

93}

94

95

96static inline Node *

98{

100

103 else

104 return NULL;

105}

106

107

108static inline bool

110{

111 return (clause != NULL &&

114}

115

116

117static inline bool

119{

120 return (clause != NULL &&

123}

124

125

126static inline bool

128{

129 return (clause != NULL &&

132}

133

134

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)