52 type = ((
const Var *) expr)->vartype;
69 case T_MergeSupportFunc:
72 case T_SubscriptingRef:
90 case T_ScalarArrayOpExpr:
108 elog(
ERROR,
"cannot get type for untransformed sublink");
117 (
errcode(ERRCODE_UNDEFINED_OBJECT),
118 errmsg(
"could not find array type for data type %s",
148 (
errcode(ERRCODE_UNDEFINED_OBJECT),
149 errmsg(
"could not find array type for data type %s",
165 case T_AlternativeSubPlan:
185 case T_ArrayCoerceExpr:
188 case T_ConvertRowtypeExpr:
206 case T_RowCompareExpr:
215 case T_SQLValueFunction:
226 case T_JsonValueExpr:
233 case T_JsonConstructorExpr:
236 case T_JsonIsPredicate:
259 case T_CoerceToDomain:
262 case T_CoerceToDomainValue:
268 case T_CurrentOfExpr:
271 case T_NextValueExpr:
274 case T_InferenceElem:
281 case T_ReturningExpr:
284 case T_PlaceHolderVar:
309 return ((
const Var *) expr)->vartypmod;
311 return ((
const Const *) expr)->consttypmod;
313 return ((
const Param *) expr)->paramtypmod;
314 case T_SubscriptingRef:
322 return coercedTypmod;
350 elog(
ERROR,
"cannot get type for untransformed sublink");
373 case T_AlternativeSubPlan:
385 case T_ArrayCoerceExpr:
396 Oid casetype = cexpr->casetype;
432 if (arrayexpr->elements ==
NIL)
437 if (arrayexpr->multidims)
438 commontype = arrayexpr->array_typeid;
440 commontype = arrayexpr->element_typeid;
441 foreach(elem, arrayexpr->elements)
460 Oid coalescetype = cexpr->coalescetype;
488 Oid minmaxtype = mexpr->minmaxtype;
509 case T_SQLValueFunction:
511 case T_JsonValueExpr:
513 case T_JsonConstructorExpr:
529 case T_CoerceToDomain:
531 case T_CoerceToDomainValue:
535 case T_ReturningExpr:
537 case T_PlaceHolderVar:
559 if (coercedTypmod != NULL)
585 if (nargs < 2 || nargs > 3)
591 second_arg->constisnull)
597 if (coercedTypmod != NULL)
608 if (acoerce->resulttypmod < 0)
614 if (coercedTypmod != NULL)
615 *coercedTypmod = acoerce->resulttypmod;
655 con->consttypmod = rtypmod;
656 con->constcollid = rcollid;
674 newrelabel->resulttypmod = rtypmod;
675 newrelabel->resultcollid = rcollid;
676 newrelabel->relabelformat = rformat;
678 return (
Node *) newrelabel;
777 if (expr->funcretset)
831 coll = ((
const Var *) expr)->varcollid;
834 coll = ((
const Const *) expr)->constcollid;
837 coll = ((
const Param *) expr)->paramcollid;
840 coll = ((
const Aggref *) expr)->aggcollid;
846 coll = ((
const WindowFunc *) expr)->wincollid;
848 case T_MergeSupportFunc:
851 case T_SubscriptingRef:
855 coll = ((
const FuncExpr *) expr)->funccollid;
861 coll = ((
const OpExpr *) expr)->opcollid;
869 case T_ScalarArrayOpExpr:
889 elog(
ERROR,
"cannot get collation for untransformed sublink");
920 case T_AlternativeSubPlan:
941 case T_ArrayCoerceExpr:
944 case T_ConvertRowtypeExpr:
952 coll = ((
const CaseExpr *) expr)->casecollid;
958 coll = ((
const ArrayExpr *) expr)->array_collid;
964 case T_RowCompareExpr:
972 coll = ((
const MinMaxExpr *) expr)->minmaxcollid;
974 case T_SQLValueFunction:
977 coll = C_COLLATION_OID;
989 coll = DEFAULT_COLLATION_OID;
993 case T_JsonValueExpr:
996 case T_JsonConstructorExpr:
1006 case T_JsonIsPredicate:
1017 case T_JsonBehavior:
1035 case T_CoerceToDomain:
1038 case T_CoerceToDomainValue:
1041 case T_SetToDefault:
1044 case T_CurrentOfExpr:
1048 case T_NextValueExpr:
1052 case T_InferenceElem:
1055 case T_ReturningExpr:
1058 case T_PlaceHolderVar:
1086 coll = ((
const Aggref *) expr)->inputcollid;
1089 coll = ((
const WindowFunc *) expr)->inputcollid;
1092 coll = ((
const FuncExpr *) expr)->inputcollid;
1095 coll = ((
const OpExpr *) expr)->inputcollid;
1097 case T_DistinctExpr:
1101 coll = ((
const NullIfExpr *) expr)->inputcollid;
1103 case T_ScalarArrayOpExpr:
1107 coll = ((
const MinMaxExpr *) expr)->inputcollid;
1129 ((
Var *) expr)->varcollid = collation;
1132 ((
Const *) expr)->constcollid = collation;
1135 ((
Param *) expr)->paramcollid = collation;
1138 ((
Aggref *) expr)->aggcollid = collation;
1140 case T_GroupingFunc:
1144 ((
WindowFunc *) expr)->wincollid = collation;
1146 case T_MergeSupportFunc:
1149 case T_SubscriptingRef:
1153 ((
FuncExpr *) expr)->funccollid = collation;
1155 case T_NamedArgExpr:
1159 ((
OpExpr *) expr)->opcollid = collation;
1161 case T_DistinctExpr:
1167 case T_ScalarArrayOpExpr:
1176#ifdef USE_ASSERT_CHECKING
1188 elog(
ERROR,
"cannot set collation for untransformed sublink");
1214 case T_ArrayCoerceExpr:
1217 case T_ConvertRowtypeExpr:
1222 ((
CaseExpr *) expr)->casecollid = collation;
1225 ((
ArrayExpr *) expr)->array_collid = collation;
1231 case T_RowCompareExpr:
1235 case T_CoalesceExpr:
1239 ((
MinMaxExpr *) expr)->minmaxcollid = collation;
1241 case T_SQLValueFunction:
1243 (collation == C_COLLATION_OID) :
1248 (collation == DEFAULT_COLLATION_OID) :
1251 case T_JsonValueExpr:
1255 case T_JsonConstructorExpr:
1266 case T_JsonIsPredicate:
1276 case T_JsonBehavior:
1288 case T_CoerceToDomain:
1291 case T_CoerceToDomainValue:
1294 case T_SetToDefault:
1297 case T_CurrentOfExpr:
1301 case T_NextValueExpr:
1325 ((
Aggref *) expr)->inputcollid = inputcollation;
1328 ((
WindowFunc *) expr)->inputcollid = inputcollation;
1331 ((
FuncExpr *) expr)->inputcollid = inputcollation;
1334 ((
OpExpr *) expr)->inputcollid = inputcollation;
1336 case T_DistinctExpr:
1340 ((
NullIfExpr *) expr)->inputcollid = inputcollation;
1342 case T_ScalarArrayOpExpr:
1346 ((
MinMaxExpr *) expr)->inputcollid = inputcollation;
1393 loc = ((
const RangeVar *) expr)->location;
1396 loc = ((
const TableFunc *) expr)->location;
1399 loc = ((
const Var *) expr)->location;
1402 loc = ((
const Const *) expr)->location;
1405 loc = ((
const Param *) expr)->location;
1409 loc = ((
const Aggref *) expr)->location;
1411 case T_GroupingFunc:
1418 case T_MergeSupportFunc:
1421 case T_SubscriptingRef:
1434 case T_NamedArgExpr:
1444 case T_DistinctExpr:
1454 case T_ScalarArrayOpExpr:
1511 case T_ArrayCoerceExpr:
1520 case T_ConvertRowtypeExpr:
1535 loc = ((
const CaseExpr *) expr)->location;
1539 loc = ((
const CaseWhen *) expr)->location;
1543 loc = ((
const ArrayExpr *) expr)->location;
1547 loc = ((
const RowExpr *) expr)->location;
1549 case T_RowCompareExpr:
1553 case T_CoalesceExpr:
1561 case T_SQLValueFunction:
1577 case T_JsonValueExpr:
1580 case T_JsonConstructorExpr:
1583 case T_JsonIsPredicate:
1595 case T_JsonBehavior:
1616 case T_CoerceToDomain:
1625 case T_CoerceToDomainValue:
1628 case T_SetToDefault:
1631 case T_ReturningExpr:
1648 foreach(lc, (
const List *) expr)
1667 loc = ((
const ColumnRef *) expr)->location;
1670 loc = ((
const ParamRef *) expr)->location;
1673 loc = ((
const A_Const *) expr)->location;
1691 loc = ((
const ResTarget *) expr)->location;
1693 case T_MultiAssignRef:
1709 case T_CollateClause:
1718 loc = ((
const WindowDef *) expr)->location;
1720 case T_RangeTableSample:
1724 loc = ((
const TypeName *) expr)->location;
1727 loc = ((
const ColumnDef *) expr)->location;
1730 loc = ((
const IndexElem *) expr)->location;
1735 case T_FunctionParameter:
1738 case T_XmlSerialize:
1751 case T_OnConflictClause:
1754 case T_CTESearchClause:
1757 case T_CTECycleClause:
1760 case T_CommonTableExpr:
1763 case T_JsonKeyValue:
1767 case T_JsonObjectConstructor:
1770 case T_JsonArrayConstructor:
1773 case T_JsonArrayQueryConstructor:
1776 case T_JsonAggConstructor:
1779 case T_JsonObjectAgg:
1782 case T_JsonArrayAgg:
1785 case T_PlaceHolderVar:
1789 case T_InferenceElem:
1793 case T_PartitionElem:
1796 case T_PartitionSpec:
1799 case T_PartitionBoundSpec:
1802 case T_PartitionRangeDatum:
1826 return Min(loc1, loc2);
1918 if (checker(expr->
aggfnoid, context))
1926 if (checker(expr->
winfnoid, context))
1934 if (checker(expr->
funcid, context))
1939 case T_DistinctExpr:
1946 if (checker(expr->opfuncid, context))
1950 case T_ScalarArrayOpExpr:
1955 if (checker(expr->opfuncid, context))
1968 &iofunc, &typioparam);
1969 if (checker(iofunc, context))
1973 &iofunc, &typisvarlena);
1974 if (checker(iofunc, context))
1978 case T_RowCompareExpr:
1983 foreach(opid, rcexpr->opnos)
1987 if (checker(opfuncid, context))
2106#define WALK(n) walker((Node *) (n), context)
2108#define LIST_WALK(l) expression_tree_walker_impl((Node *) (l), walker, context)
2121 case T_CaseTestExpr:
2122 case T_SQLValueFunction:
2123 case T_CoerceToDomainValue:
2124 case T_SetToDefault:
2125 case T_CurrentOfExpr:
2126 case T_NextValueExpr:
2128 case T_SortGroupClause:
2129 case T_CTESearchClause:
2130 case T_MergeSupportFunc:
2133 case T_WithCheckOption:
2152 case T_GroupingFunc:
2169 if (
WALK(expr->runCondition))
2173 case T_WindowFuncRunCondition:
2181 case T_SubscriptingRef:
2206 case T_NamedArgExpr:
2209 case T_DistinctExpr:
2218 case T_ScalarArrayOpExpr:
2260 case T_AlternativeSubPlan:
2278 case T_ArrayCoerceExpr:
2288 case T_ConvertRowtypeExpr:
2299 foreach(temp, caseexpr->
args)
2317 case T_RowCompareExpr:
2327 case T_CoalesceExpr:
2342 case T_JsonValueExpr:
2352 case T_JsonConstructorExpr:
2364 case T_JsonIsPredicate:
2383 case T_JsonBehavior:
2395 case T_CoerceToDomain:
2402 case T_WindowClause:
2416 case T_CTECycleClause:
2426 case T_CommonTableExpr:
2437 if (
WALK(cte->search_clause))
2439 if (
WALK(cte->cycle_clause))
2443 case T_JsonKeyValue:
2453 case T_JsonObjectConstructor:
2461 case T_JsonArrayConstructor:
2469 case T_JsonArrayQueryConstructor:
2477 case T_JsonAggConstructor:
2489 case T_JsonObjectAgg:
2499 case T_JsonArrayAgg:
2510 case T_PartitionBoundSpec:
2522 case T_PartitionRangeDatum:
2531 foreach(temp, (
List *) node)
2547 case T_OnConflictExpr:
2573 case T_PartitionPruneStepOp:
2581 case T_PartitionPruneStepCombine:
2600 case T_SetOperationStmt:
2622 case T_PlaceHolderVar:
2624 case T_InferenceElem:
2626 case T_ReturningExpr:
2628 case T_AppendRelInfo:
2636 case T_PlaceHolderInfo:
2638 case T_RangeTblFunction:
2640 case T_TableSampleClause:
2654 if (
WALK(tf->ns_uris))
2662 if (
WALK(tf->coldefexprs))
2664 if (
WALK(tf->colvalexprs))
2666 if (
WALK(tf->passingvalexprs))
2671 elog(
ERROR,
"unrecognized node type: %d",
2713 if (
WALK(query->withCheckOptions))
2848 if (
WALK(rte->joinaliasvars))
2870 if (
WALK(rte->groupexprs))
2875 if (
WALK(rte->securityQuals))
2958#define FLATCOPY(newnode, node, nodetype) \
2959 ( (newnode) = palloc_object(nodetype), \
2960 memcpy((newnode), (node), sizeof(nodetype)) )
2962#define MUTATE(newfield, oldfield, fieldtype) \
2963 ( (newfield) = (fieldtype) mutator((Node *) (oldfield), context) )
2985 return (
Node *) newnode;
2995 return (
Node *) newnode;
2999 case T_CaseTestExpr:
3000 case T_SQLValueFunction:
3002 case T_CoerceToDomainValue:
3003 case T_SetToDefault:
3004 case T_CurrentOfExpr:
3005 case T_NextValueExpr:
3007 case T_SortGroupClause:
3008 case T_CTESearchClause:
3009 case T_MergeSupportFunc:
3011 case T_WithCheckOption:
3018 return (
Node *) newnode;
3027 newnode->aggargtypes =
list_copy(aggref->aggargtypes);
3033 return (
Node *) newnode;
3036 case T_GroupingFunc:
3042 MUTATE(newnode->args, grouping->args,
List *);
3053 newnode->refs =
list_copy(grouping->refs);
3054 newnode->cols =
list_copy(grouping->cols);
3056 return (
Node *) newnode;
3067 return (
Node *) newnode;
3070 case T_WindowFuncRunCondition:
3077 return (
Node *) newnode;
3080 case T_SubscriptingRef:
3095 return (
Node *) newnode;
3105 return (
Node *) newnode;
3108 case T_NamedArgExpr:
3115 return (
Node *) newnode;
3125 return (
Node *) newnode;
3128 case T_DistinctExpr:
3135 return (
Node *) newnode;
3145 return (
Node *) newnode;
3148 case T_ScalarArrayOpExpr:
3155 return (
Node *) newnode;
3165 return (
Node *) newnode;
3181 return (
Node *) newnode;
3195 return (
Node *) newnode;
3198 case T_AlternativeSubPlan:
3205 return (
Node *) newnode;
3215 return (
Node *) newnode;
3226 newnode->fieldnums =
list_copy(fstore->fieldnums);
3227 return (
Node *) newnode;
3237 return (
Node *) newnode;
3247 return (
Node *) newnode;
3250 case T_ArrayCoerceExpr:
3258 return (
Node *) newnode;
3261 case T_ConvertRowtypeExpr:
3268 return (
Node *) newnode;
3278 return (
Node *) newnode;
3290 return (
Node *) newnode;
3301 return (
Node *) newnode;
3310 MUTATE(newnode->elements, arrayexpr->elements,
List *);
3311 return (
Node *) newnode;
3322 return (
Node *) newnode;
3325 case T_RowCompareExpr:
3333 return (
Node *) newnode;
3336 case T_CoalesceExpr:
3343 return (
Node *) newnode;
3353 return (
Node *) newnode;
3365 return (
Node *) newnode;
3368 case T_JsonReturning:
3376 return (
Node *) newnode;
3378 case T_JsonValueExpr:
3388 return (
Node *) newnode;
3390 case T_JsonConstructorExpr:
3401 return (
Node *) newnode;
3403 case T_JsonIsPredicate:
3412 return (
Node *) newnode;
3426 return (
Node *) newnode;
3429 case T_JsonBehavior:
3436 return (
Node *) newnode;
3446 return (
Node *) newnode;
3456 return (
Node *) newnode;
3459 case T_CoerceToDomain:
3466 return (
Node *) newnode;
3469 case T_ReturningExpr:
3476 return (
Node *) newnode;
3486 return (
Node *) newnode;
3492 case T_WindowClause:
3502 return (
Node *) newnode;
3505 case T_CTECycleClause:
3513 return (
Node *) newnode;
3516 case T_CommonTableExpr:
3532 return (
Node *) newnode;
3535 case T_PartitionBoundSpec:
3544 return (
Node *) newnode;
3547 case T_PartitionRangeDatum:
3554 return (
Node *) newnode;
3568 foreach(temp, (
List *) node)
3570 resultlist =
lappend(resultlist,
3574 return (
Node *) resultlist;
3585 return (
Node *) newnode;
3588 case T_OnConflictExpr:
3600 return (
Node *) newnode;
3612 return (
Node *) newnode;
3615 case T_PartitionPruneStepOp:
3623 return (
Node *) newnode;
3626 case T_PartitionPruneStepCombine:
3639 return (
Node *) newnode;
3642 case T_SetOperationStmt:
3651 return (
Node *) newnode;
3662 return (
Node *) newnode;
3665 case T_PlaceHolderVar:
3671 MUTATE(newnode->phexpr, phv->phexpr,
Expr *);
3673 return (
Node *) newnode;
3676 case T_InferenceElem:
3683 return (
Node *) newnode;
3686 case T_AppendRelInfo:
3694 return (
Node *) newnode;
3697 case T_PlaceHolderInfo:
3705 return (
Node *) newnode;
3708 case T_RangeTblFunction:
3716 return (
Node *) newnode;
3719 case T_TableSampleClause:
3727 return (
Node *) newnode;
3736 MUTATE(newnode->ns_uris, tf->ns_uris,
List *);
3740 MUTATE(newnode->coldefexprs, tf->coldefexprs,
List *);
3741 MUTATE(newnode->colvalexprs, tf->colvalexprs,
List *);
3742 MUTATE(newnode->passingvalexprs, tf->passingvalexprs,
List *);
3743 return (
Node *) newnode;
3747 elog(
ERROR,
"unrecognized node type: %d",
3792 MUTATE(query->withCheckOptions, query->withCheckOptions,
List *);
3835 resultlist =
lappend(resultlist, (
Node *) newnode);
3857 mutator, context, flags);
3899 MUTATE(newrte->joinaliasvars, rte->joinaliasvars,
List *);
3903 newrte->joinaliasvars =
copyObject(rte->joinaliasvars);
3922 MUTATE(newrte->groupexprs, rte->groupexprs,
List *);
3926 newrte->groupexprs =
copyObject(rte->groupexprs);
3930 MUTATE(newrte->securityQuals, rte->securityQuals,
List *);
3931 newrt =
lappend(newrt, newrte);
3979 return mutator(node, context);
4018 case T_SetToDefault:
4019 case T_CurrentOfExpr:
4020 case T_SQLValueFunction:
4029 case T_MergeSupportFunc:
4030 case T_ReturningOption:
4038 case T_GroupingFunc:
4058 foreach(temp, caseexpr->
args)
4074 case T_CoalesceExpr:
4089 case T_JsonReturning:
4091 case T_JsonValueExpr:
4103 case T_JsonParseExpr:
4113 case T_JsonScalarExpr:
4123 case T_JsonSerializeExpr:
4133 case T_JsonConstructorExpr:
4147 case T_JsonIsPredicate:
4149 case T_JsonArgument:
4151 case T_JsonFuncExpr:
4169 case T_JsonBehavior:
4193 case T_JsonTableColumn:
4207 case T_JsonTablePathSpec:
4223 if (
WALK(join->alias))
4236 if (
WALK(into->viewQuery))
4241 foreach(temp, (
List *) node)
4317 case T_MergeWhenClause:
4329 case T_ReturningClause:
4377 case T_PLAssignStmt:
4424 case T_NamedArgExpr:
4436 case T_A_Indirection:
4458 case T_MultiAssignRef:
4470 case T_CollateClause:
4488 case T_RangeSubselect:
4498 case T_RangeFunction:
4510 case T_RangeTableSample:
4523 case T_RangeTableFunc:
4539 case T_RangeTableFuncCol:
4584 case T_LockingClause:
4586 case T_XmlSerialize:
4608 case T_OnConflictClause:
4620 case T_CommonTableExpr:
4633 case T_JsonKeyValue:
4643 case T_JsonObjectConstructor:
4653 case T_JsonArrayConstructor:
4663 case T_JsonAggConstructor:
4677 case T_JsonObjectAgg:
4687 case T_JsonArrayAgg:
4697 case T_JsonArrayQueryConstructor:
4708 elog(
ERROR,
"unrecognized node type: %d",
4730#define PSWALK(n) walker(n, context)
4780 case T_SubqueryScan:
4832 for (
int j = 0;
j < nplans;
j++)
#define OidIsValid(objectId)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define outerPlanState(node)
#define innerPlanState(node)
Assert(PointerIsAligned(start, uint64))
if(TABLE==NULL||TABLE_index==NULL)
List * lappend(List *list, void *datum)
List * list_copy(const List *oldlist)
void getTypeOutputInfo(Oid type, Oid *typOutput, bool *typIsVarlena)
RegProcedure get_opcode(Oid opno)
void getTypeInputInfo(Oid type, Oid *typInput, Oid *typIOParam)
Oid get_promoted_array_type(Oid typid)
bool query_tree_walker_impl(Query *query, tree_walker_callback walker, void *context, int flags)
#define FLATCOPY(newnode, node, nodetype)
bool raw_expression_tree_walker_impl(Node *node, tree_walker_callback walker, void *context)
Oid exprType(const Node *expr)
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)
int32 exprTypmod(const Node *expr)
static bool planstate_walk_subplans(List *plans, planstate_tree_walker_callback walker, void *context)
bool check_functions_in_node(Node *node, check_function_callback checker, void *context)
Oid exprCollation(const Node *expr)
static bool fix_opfuncids_walker(Node *node, void *context)
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)
bool range_table_walker_impl(List *rtable, tree_walker_callback walker, void *context, int flags)
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)
#define MUTATE(newfield, oldfield, fieldtype)
Node * applyRelabelType(Node *arg, Oid rtype, int32 rtypmod, Oid rcollid, CoercionForm rformat, int rlocation, bool overwrite_ok)
static int leftmostLoc(int loc1, int loc2)
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)
bool planstate_tree_walker_impl(PlanState *planstate, planstate_tree_walker_callback walker, void *context)
void fix_opfuncids(Node *node)
Node * expression_tree_mutator_impl(Node *node, tree_mutator_callback mutator, void *context)
Node * relabel_to_typmod(Node *expr, int32 typmod)
static bool expression_returns_set_walker(Node *node, void *context)
void set_sa_opfuncid(ScalarArrayOpExpr *opexpr)
static bool planstate_walk_members(PlanState **planstates, int nplans, planstate_tree_walker_callback walker, void *context)
void set_opfuncid(OpExpr *opexpr)
Node *(* tree_mutator_callback)(Node *node, void *context)
#define QTW_DONT_COPY_QUERY
#define QTW_IGNORE_CTE_SUBQUERIES
#define QTW_IGNORE_RT_SUBQUERIES
#define range_table_walker(rt, w, c, f)
#define query_tree_walker(q, w, c, f)
#define range_table_entry_walker(r, w, c, f)
#define QTW_EXAMINE_RTES_AFTER
#define QTW_EXAMINE_SORTGROUP
bool(* tree_walker_callback)(Node *node, void *context)
#define QTW_IGNORE_GROUPEXPRS
#define expression_tree_walker(n, w, c)
#define query_tree_mutator(q, m, c, f)
bool(* check_function_callback)(Oid func_id, void *context)
bool(* planstate_tree_walker_callback)(PlanState *planstate, void *context)
#define QTW_EXAMINE_RTES_BEFORE
#define range_table_mutator(rt, m, c, f)
#define QTW_IGNORE_RANGE_TABLE
#define QTW_IGNORE_JOINALIASES
#define IsA(nodeptr, _type_)
#define lfirst_node(type, lc)
static int list_length(const List *l)
#define linitial_node(type, l)
#define for_each_from(cell, lst, N)
static rewind_source * source
static int32 DatumGetInt32(Datum X)
static int fc(const char *x)
void check_stack_depth(void)
Node * cycle_mark_default
CollateClause * collClause
struct RestrictInfo * rinfo
JsonAggConstructor * constructor
JsonReturning * returning
JsonReturning * returning
JsonValueExpr * context_item
JsonAggConstructor * constructor
JsonReturning * returning
JsonTablePathSpec * pathspec
JsonValueExpr * context_item
Node * mergeJoinCondition
OnConflictExpr * onConflict
struct TableSampleClause * tablesample