20 #define QTW_IGNORE_RT_SUBQUERIES 0x01 21 #define QTW_IGNORE_CTE_SUBQUERIES 0x02 22 #define QTW_IGNORE_RC_SUBQUERIES 0x03 23 #define QTW_IGNORE_JOINALIASES 0x04 24 #define QTW_IGNORE_RANGE_TABLE 0x08 25 #define QTW_EXAMINE_RTES_BEFORE 0x10 27 #define QTW_EXAMINE_RTES_AFTER 0x20 29 #define QTW_DONT_COPY_QUERY 0x40 30 #define QTW_EXAMINE_SORTGROUP 0x80 68 return clause != NULL &&
IsA(clause,
OpExpr);
99 return (clause != NULL &&
108 return (clause != NULL &&
117 return (clause != NULL &&
138 void *context,
int flags);
140 void *context,
int flags);
143 void *context,
int flags);
145 void *context,
int flags);
148 void *context,
int flags);
151 void *context,
int flags);
153 void *context,
int flags);
Query * query_tree_mutator(Query *query, Node *(*mutator)(), void *context, int flags)
Datum boolop(PG_FUNCTION_ARGS)
#define IsA(nodeptr, _type_)
Node * relabel_to_typmod(Node *expr, int32 typmod)
static bool is_orclause(const void *clause)
static bool is_andclause(const void *clause)
Node * expression_tree_mutator(Node *node, Node *(*mutator)(), void *context)
bool planstate_tree_walker(struct PlanState *planstate, bool(*walker)(), void *context)
static bool is_funcclause(const void *clause)
Oid exprType(const Node *expr)
Node * applyRelabelType(Node *arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat, int rlocation, bool overwrite_ok)
void fix_opfuncids(Node *node)
bool exprIsLengthCoercion(const Node *expr, int32 *coercedTypmod)
bool check_functions_in_node(Node *node, check_function_callback checker, void *context)
Node * query_or_expression_tree_mutator(Node *node, Node *(*mutator)(), void *context, int flags)
static Node * get_leftop(const void *clause)
Oid exprCollation(const Node *expr)
void set_sa_opfuncid(ScalarArrayOpExpr *opexpr)
bool raw_expression_tree_walker(Node *node, bool(*walker)(), void *context)
int32 exprTypmod(const Node *expr)
Node * strip_implicit_coercions(Node *node)
bool expression_returns_set(Node *clause)
static bool is_notclause(const void *clause)
bool query_tree_walker(Query *query, bool(*walker)(), void *context, int flags)
bool expression_tree_walker(Node *node, bool(*walker)(), void *context)
void exprSetInputCollation(Node *expr, Oid inputcollation)
Oid exprInputCollation(const Node *expr)
static Node * get_rightop(const void *clause)
List * range_table_mutator(List *rtable, Node *(*mutator)(), void *context, int flags)
int exprLocation(const Node *expr)
static Expr * get_notclausearg(const void *notclause)
bool query_or_expression_tree_walker(Node *node, bool(*walker)(), void *context, int flags)
static int list_length(const List *l)
bool(* check_function_callback)(Oid func_id, void *context)
bool range_table_entry_walker(RangeTblEntry *rte, bool(*walker)(), void *context, int flags)
void exprSetCollation(Node *expr, Oid collation)
bool range_table_walker(List *rtable, bool(*walker)(), void *context, int flags)
void set_opfuncid(OpExpr *opexpr)
static bool is_opclause(const void *clause)