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_PlaceHolderVar:
306 return ((
const Var *) expr)->vartypmod;
308 return ((
const Const *) expr)->consttypmod;
310 return ((
const Param *) expr)->paramtypmod;
311 case T_SubscriptingRef:
319 return coercedTypmod;
347 elog(
ERROR,
"cannot get type for untransformed sublink");
370 case T_AlternativeSubPlan:
382 case T_ArrayCoerceExpr:
393 Oid casetype = cexpr->casetype;
434 if (arrayexpr->multidims)
435 commontype = arrayexpr->array_typeid;
437 commontype = arrayexpr->element_typeid;
457 Oid coalescetype = cexpr->coalescetype;
485 Oid minmaxtype = mexpr->minmaxtype;
506 case T_SQLValueFunction:
508 case T_JsonValueExpr:
510 case T_JsonConstructorExpr:
526 case T_CoerceToDomain:
528 case T_CoerceToDomainValue:
532 case T_PlaceHolderVar:
554 if (coercedTypmod != NULL)
580 if (nargs < 2 || nargs > 3)
586 second_arg->constisnull)
592 if (coercedTypmod != NULL)
603 if (acoerce->resulttypmod < 0)
609 if (coercedTypmod != NULL)
610 *coercedTypmod = acoerce->resulttypmod;
650 con->consttypmod = rtypmod;
651 con->constcollid = rcollid;
669 newrelabel->resulttypmod = rtypmod;
670 newrelabel->resultcollid = rcollid;
671 newrelabel->relabelformat = rformat;
673 return (
Node *) newrelabel;
772 if (expr->funcretset)
826 coll = ((
const Var *) expr)->varcollid;
829 coll = ((
const Const *) expr)->constcollid;
832 coll = ((
const Param *) expr)->paramcollid;
835 coll = ((
const Aggref *) expr)->aggcollid;
841 coll = ((
const WindowFunc *) expr)->wincollid;
843 case T_MergeSupportFunc:
846 case T_SubscriptingRef:
850 coll = ((
const FuncExpr *) expr)->funccollid;
856 coll = ((
const OpExpr *) expr)->opcollid;
864 case T_ScalarArrayOpExpr:
884 elog(
ERROR,
"cannot get collation for untransformed sublink");
915 case T_AlternativeSubPlan:
936 case T_ArrayCoerceExpr:
939 case T_ConvertRowtypeExpr:
947 coll = ((
const CaseExpr *) expr)->casecollid;
953 coll = ((
const ArrayExpr *) expr)->array_collid;
959 case T_RowCompareExpr:
967 coll = ((
const MinMaxExpr *) expr)->minmaxcollid;
969 case T_SQLValueFunction:
972 coll = C_COLLATION_OID;
984 coll = DEFAULT_COLLATION_OID;
988 case T_JsonValueExpr:
991 case T_JsonConstructorExpr:
1001 case T_JsonIsPredicate:
1012 case T_JsonBehavior:
1030 case T_CoerceToDomain:
1033 case T_CoerceToDomainValue:
1036 case T_SetToDefault:
1039 case T_CurrentOfExpr:
1043 case T_NextValueExpr:
1047 case T_InferenceElem:
1050 case T_PlaceHolderVar:
1078 coll = ((
const Aggref *) expr)->inputcollid;
1081 coll = ((
const WindowFunc *) expr)->inputcollid;
1084 coll = ((
const FuncExpr *) expr)->inputcollid;
1087 coll = ((
const OpExpr *) expr)->inputcollid;
1089 case T_DistinctExpr:
1093 coll = ((
const NullIfExpr *) expr)->inputcollid;
1095 case T_ScalarArrayOpExpr:
1099 coll = ((
const MinMaxExpr *) expr)->inputcollid;
1121 ((
Var *) expr)->varcollid = collation;
1124 ((
Const *) expr)->constcollid = collation;
1127 ((
Param *) expr)->paramcollid = collation;
1130 ((
Aggref *) expr)->aggcollid = collation;
1132 case T_GroupingFunc:
1136 ((
WindowFunc *) expr)->wincollid = collation;
1138 case T_MergeSupportFunc:
1141 case T_SubscriptingRef:
1145 ((
FuncExpr *) expr)->funccollid = collation;
1147 case T_NamedArgExpr:
1151 ((
OpExpr *) expr)->opcollid = collation;
1153 case T_DistinctExpr:
1159 case T_ScalarArrayOpExpr:
1168 #ifdef USE_ASSERT_CHECKING
1180 elog(
ERROR,
"cannot set collation for untransformed sublink");
1206 case T_ArrayCoerceExpr:
1209 case T_ConvertRowtypeExpr:
1214 ((
CaseExpr *) expr)->casecollid = collation;
1217 ((
ArrayExpr *) expr)->array_collid = collation;
1223 case T_RowCompareExpr:
1227 case T_CoalesceExpr:
1231 ((
MinMaxExpr *) expr)->minmaxcollid = collation;
1233 case T_SQLValueFunction:
1235 (collation == C_COLLATION_OID) :
1240 (collation == DEFAULT_COLLATION_OID) :
1243 case T_JsonValueExpr:
1247 case T_JsonConstructorExpr:
1258 case T_JsonIsPredicate:
1268 case T_JsonBehavior:
1284 case T_CoerceToDomain:
1287 case T_CoerceToDomainValue:
1290 case T_SetToDefault:
1293 case T_CurrentOfExpr:
1297 case T_NextValueExpr:
1321 ((
Aggref *) expr)->inputcollid = inputcollation;
1324 ((
WindowFunc *) expr)->inputcollid = inputcollation;
1327 ((
FuncExpr *) expr)->inputcollid = inputcollation;
1330 ((
OpExpr *) expr)->inputcollid = inputcollation;
1332 case T_DistinctExpr:
1336 ((
NullIfExpr *) expr)->inputcollid = inputcollation;
1338 case T_ScalarArrayOpExpr:
1342 ((
MinMaxExpr *) expr)->inputcollid = inputcollation;
1389 loc = ((
const RangeVar *) expr)->location;
1392 loc = ((
const TableFunc *) expr)->location;
1395 loc = ((
const Var *) expr)->location;
1398 loc = ((
const Const *) expr)->location;
1401 loc = ((
const Param *) expr)->location;
1405 loc = ((
const Aggref *) expr)->location;
1407 case T_GroupingFunc:
1414 case T_MergeSupportFunc:
1417 case T_SubscriptingRef:
1430 case T_NamedArgExpr:
1440 case T_DistinctExpr:
1450 case T_ScalarArrayOpExpr:
1507 case T_ArrayCoerceExpr:
1516 case T_ConvertRowtypeExpr:
1531 loc = ((
const CaseExpr *) expr)->location;
1535 loc = ((
const CaseWhen *) expr)->location;
1539 loc = ((
const ArrayExpr *) expr)->location;
1543 loc = ((
const RowExpr *) expr)->location;
1545 case T_RowCompareExpr:
1549 case T_CoalesceExpr:
1557 case T_SQLValueFunction:
1573 case T_JsonValueExpr:
1576 case T_JsonConstructorExpr:
1579 case T_JsonIsPredicate:
1591 case T_JsonBehavior:
1612 case T_CoerceToDomain:
1621 case T_CoerceToDomainValue:
1624 case T_SetToDefault:
1641 foreach(lc, (
const List *) expr)
1660 loc = ((
const ColumnRef *) expr)->location;
1663 loc = ((
const ParamRef *) expr)->location;
1666 loc = ((
const A_Const *) expr)->location;
1684 loc = ((
const ResTarget *) expr)->location;
1686 case T_MultiAssignRef:
1702 case T_CollateClause:
1711 loc = ((
const WindowDef *) expr)->location;
1713 case T_RangeTableSample:
1717 loc = ((
const TypeName *) expr)->location;
1720 loc = ((
const ColumnDef *) expr)->location;
1725 case T_FunctionParameter:
1729 case T_XmlSerialize:
1742 case T_OnConflictClause:
1745 case T_CTESearchClause:
1748 case T_CTECycleClause:
1751 case T_CommonTableExpr:
1754 case T_JsonKeyValue:
1758 case T_JsonObjectConstructor:
1761 case T_JsonArrayConstructor:
1764 case T_JsonArrayQueryConstructor:
1767 case T_JsonAggConstructor:
1770 case T_JsonObjectAgg:
1773 case T_JsonArrayAgg:
1776 case T_PlaceHolderVar:
1780 case T_InferenceElem:
1784 case T_PartitionElem:
1787 case T_PartitionSpec:
1790 case T_PartitionBoundSpec:
1793 case T_PartitionRangeDatum:
1817 return Min(loc1, loc2);
1930 case T_DistinctExpr:
1937 if (checker(expr->opfuncid,
context))
1941 case T_ScalarArrayOpExpr:
1946 if (checker(expr->opfuncid,
context))
1959 &iofunc, &typioparam);
1964 &iofunc, &typisvarlena);
1969 case T_RowCompareExpr:
1974 foreach(opid, rcexpr->opnos)
1978 if (checker(opfuncid,
context))
2097 #define WALK(n) walker((Node *) (n), context)
2099 #define LIST_WALK(l) expression_tree_walker_impl((Node *) (l), walker, context)
2112 case T_CaseTestExpr:
2113 case T_SQLValueFunction:
2114 case T_CoerceToDomainValue:
2115 case T_SetToDefault:
2116 case T_CurrentOfExpr:
2117 case T_NextValueExpr:
2119 case T_SortGroupClause:
2120 case T_CTESearchClause:
2121 case T_MergeSupportFunc:
2124 case T_WithCheckOption:
2143 case T_GroupingFunc:
2160 if (
WALK(expr->runCondition))
2164 case T_WindowFuncRunCondition:
2172 case T_SubscriptingRef:
2197 case T_NamedArgExpr:
2200 case T_DistinctExpr:
2209 case T_ScalarArrayOpExpr:
2251 case T_AlternativeSubPlan:
2269 case T_ArrayCoerceExpr:
2279 case T_ConvertRowtypeExpr:
2290 foreach(temp, caseexpr->
args)
2308 case T_RowCompareExpr:
2318 case T_CoalesceExpr:
2333 case T_JsonValueExpr:
2343 case T_JsonConstructorExpr:
2355 case T_JsonIsPredicate:
2374 case T_JsonBehavior:
2386 case T_CoerceToDomain:
2393 case T_WindowClause:
2407 case T_CTECycleClause:
2417 case T_CommonTableExpr:
2428 if (
WALK(cte->search_clause))
2430 if (
WALK(cte->cycle_clause))
2434 case T_JsonKeyValue:
2444 case T_JsonObjectConstructor:
2452 case T_JsonArrayConstructor:
2460 case T_JsonArrayQueryConstructor:
2468 case T_JsonAggConstructor:
2480 case T_JsonObjectAgg:
2490 case T_JsonArrayAgg:
2501 case T_PartitionBoundSpec:
2513 case T_PartitionRangeDatum:
2522 foreach(temp, (
List *) node)
2538 case T_OnConflictExpr:
2564 case T_PartitionPruneStepOp:
2572 case T_PartitionPruneStepCombine:
2591 case T_SetOperationStmt:
2613 case T_PlaceHolderVar:
2615 case T_InferenceElem:
2617 case T_AppendRelInfo:
2625 case T_PlaceHolderInfo:
2627 case T_RangeTblFunction:
2629 case T_TableSampleClause:
2643 if (
WALK(tf->ns_uris))
2651 if (
WALK(tf->coldefexprs))
2653 if (
WALK(tf->colvalexprs))
2655 if (
WALK(tf->passingvalexprs))
2660 elog(
ERROR,
"unrecognized node type: %d",
2702 if (
WALK(query->withCheckOptions))
2837 if (
WALK(rte->joinaliasvars))
2859 if (
WALK(rte->groupexprs))
2864 if (
WALK(rte->securityQuals))
2947 #define FLATCOPY(newnode, node, nodetype) \
2948 ( (newnode) = (nodetype *) palloc(sizeof(nodetype)), \
2949 memcpy((newnode), (node), sizeof(nodetype)) )
2951 #define MUTATE(newfield, oldfield, fieldtype) \
2952 ( (newfield) = (fieldtype) mutator((Node *) (oldfield), context) )
2974 return (
Node *) newnode;
2984 return (
Node *) newnode;
2988 case T_CaseTestExpr:
2989 case T_SQLValueFunction:
2991 case T_CoerceToDomainValue:
2992 case T_SetToDefault:
2993 case T_CurrentOfExpr:
2994 case T_NextValueExpr:
2996 case T_SortGroupClause:
2997 case T_CTESearchClause:
2998 case T_MergeSupportFunc:
3000 case T_WithCheckOption:
3007 return (
Node *) newnode;
3016 newnode->aggargtypes =
list_copy(aggref->aggargtypes);
3022 return (
Node *) newnode;
3025 case T_GroupingFunc:
3031 MUTATE(newnode->args, grouping->args,
List *);
3042 newnode->refs =
list_copy(grouping->refs);
3043 newnode->cols =
list_copy(grouping->cols);
3045 return (
Node *) newnode;
3056 return (
Node *) newnode;
3059 case T_WindowFuncRunCondition:
3066 return (
Node *) newnode;
3069 case T_SubscriptingRef:
3084 return (
Node *) newnode;
3094 return (
Node *) newnode;
3097 case T_NamedArgExpr:
3104 return (
Node *) newnode;
3114 return (
Node *) newnode;
3117 case T_DistinctExpr:
3124 return (
Node *) newnode;
3134 return (
Node *) newnode;
3137 case T_ScalarArrayOpExpr:
3144 return (
Node *) newnode;
3154 return (
Node *) newnode;
3170 return (
Node *) newnode;
3184 return (
Node *) newnode;
3187 case T_AlternativeSubPlan:
3194 return (
Node *) newnode;
3204 return (
Node *) newnode;
3215 newnode->fieldnums =
list_copy(fstore->fieldnums);
3216 return (
Node *) newnode;
3226 return (
Node *) newnode;
3236 return (
Node *) newnode;
3239 case T_ArrayCoerceExpr:
3247 return (
Node *) newnode;
3250 case T_ConvertRowtypeExpr:
3257 return (
Node *) newnode;
3267 return (
Node *) newnode;
3279 return (
Node *) newnode;
3290 return (
Node *) newnode;
3300 return (
Node *) newnode;
3311 return (
Node *) newnode;
3314 case T_RowCompareExpr:
3322 return (
Node *) newnode;
3325 case T_CoalesceExpr:
3332 return (
Node *) newnode;
3342 return (
Node *) newnode;
3354 return (
Node *) newnode;
3357 case T_JsonReturning:
3365 return (
Node *) newnode;
3367 case T_JsonValueExpr:
3377 return (
Node *) newnode;
3379 case T_JsonConstructorExpr:
3390 return (
Node *) newnode;
3392 case T_JsonIsPredicate:
3401 return (
Node *) newnode;
3415 return (
Node *) newnode;
3418 case T_JsonBehavior:
3425 return (
Node *) newnode;
3435 return (
Node *) newnode;
3445 return (
Node *) newnode;
3448 case T_CoerceToDomain:
3455 return (
Node *) newnode;
3465 return (
Node *) newnode;
3471 case T_WindowClause:
3481 return (
Node *) newnode;
3484 case T_CTECycleClause:
3492 return (
Node *) newnode;
3495 case T_CommonTableExpr:
3511 return (
Node *) newnode;
3514 case T_PartitionBoundSpec:
3523 return (
Node *) newnode;
3526 case T_PartitionRangeDatum:
3533 return (
Node *) newnode;
3547 foreach(temp, (
List *) node)
3549 resultlist =
lappend(resultlist,
3553 return (
Node *) resultlist;
3564 return (
Node *) newnode;
3567 case T_OnConflictExpr:
3579 return (
Node *) newnode;
3591 return (
Node *) newnode;
3594 case T_PartitionPruneStepOp:
3602 return (
Node *) newnode;
3605 case T_PartitionPruneStepCombine:
3618 return (
Node *) newnode;
3621 case T_SetOperationStmt:
3630 return (
Node *) newnode;
3641 return (
Node *) newnode;
3644 case T_PlaceHolderVar:
3650 MUTATE(newnode->phexpr, phv->phexpr,
Expr *);
3652 return (
Node *) newnode;
3655 case T_InferenceElem:
3662 return (
Node *) newnode;
3665 case T_AppendRelInfo:
3673 return (
Node *) newnode;
3676 case T_PlaceHolderInfo:
3684 return (
Node *) newnode;
3687 case T_RangeTblFunction:
3695 return (
Node *) newnode;
3698 case T_TableSampleClause:
3706 return (
Node *) newnode;
3715 MUTATE(newnode->ns_uris, tf->ns_uris,
List *);
3719 MUTATE(newnode->coldefexprs, tf->coldefexprs,
List *);
3720 MUTATE(newnode->colvalexprs, tf->colvalexprs,
List *);
3721 MUTATE(newnode->passingvalexprs, tf->passingvalexprs,
List *);
3722 return (
Node *) newnode;
3726 elog(
ERROR,
"unrecognized node type: %d",
3771 MUTATE(query->withCheckOptions, query->withCheckOptions,
List *);
3814 resultlist =
lappend(resultlist, (
Node *) newnode);
3878 MUTATE(newrte->joinaliasvars, rte->joinaliasvars,
List *);
3882 newrte->joinaliasvars =
copyObject(rte->joinaliasvars);
3901 MUTATE(newrte->groupexprs, rte->groupexprs,
List *);
3905 newrte->groupexprs =
copyObject(rte->groupexprs);
3909 MUTATE(newrte->securityQuals, rte->securityQuals,
List *);
3910 newrt =
lappend(newrt, newrte);
3958 return mutator(node,
context);
3997 case T_SetToDefault:
3998 case T_CurrentOfExpr:
3999 case T_SQLValueFunction:
4008 case T_MergeSupportFunc:
4016 case T_GroupingFunc:
4036 foreach(temp, caseexpr->
args)
4052 case T_CoalesceExpr:
4067 case T_JsonReturning:
4069 case T_JsonValueExpr:
4081 case T_JsonParseExpr:
4091 case T_JsonScalarExpr:
4101 case T_JsonSerializeExpr:
4111 case T_JsonConstructorExpr:
4125 case T_JsonIsPredicate:
4127 case T_JsonArgument:
4129 case T_JsonFuncExpr:
4147 case T_JsonBehavior:
4171 case T_JsonTableColumn:
4185 case T_JsonTablePathSpec:
4201 if (
WALK(join->alias))
4214 if (
WALK(into->viewQuery))
4219 foreach(temp, (
List *) node)
4295 case T_MergeWhenClause:
4345 case T_PLAssignStmt:
4392 case T_NamedArgExpr:
4404 case T_A_Indirection:
4426 case T_MultiAssignRef:
4438 case T_CollateClause:
4456 case T_RangeSubselect:
4466 case T_RangeFunction:
4478 case T_RangeTableSample:
4491 case T_RangeTableFunc:
4507 case T_RangeTableFuncCol:
4552 case T_LockingClause:
4554 case T_XmlSerialize:
4576 case T_OnConflictClause:
4588 case T_CommonTableExpr:
4601 case T_JsonKeyValue:
4611 case T_JsonObjectConstructor:
4621 case T_JsonArrayConstructor:
4631 case T_JsonAggConstructor:
4645 case T_JsonObjectAgg:
4655 case T_JsonArrayAgg:
4665 case T_JsonArrayQueryConstructor:
4676 elog(
ERROR,
"unrecognized node type: %d",
4698 #define PSWALK(n) walker(n, context)
4748 case T_SubqueryScan:
4802 for (
j = 0;
j < nplans;
j++)
#define Assert(condition)
#define OidIsValid(objectId)
int errcode(int sqlerrcode)
int errmsg(const char *fmt,...)
#define ereport(elevel,...)
#define outerPlanState(node)
#define innerPlanState(node)
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)
Node * query_or_expression_tree_mutator_impl(Node *node, tree_mutator_callback mutator, void *context, int flags)
Oid exprType(const Node *expr)
bool range_table_entry_walker_impl(RangeTblEntry *rte, tree_walker_callback walker, void *context, int flags)
Query * query_tree_mutator_impl(Query *query, tree_mutator_callback mutator, void *context, int flags)
bool exprIsLengthCoercion(const Node *expr, int32 *coercedTypmod)
void exprSetCollation(Node *expr, Oid collation)
Oid exprInputCollation(const Node *expr)
Node * expression_tree_mutator_impl(Node *node, tree_mutator_callback mutator, void *context)
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)
List * range_table_mutator_impl(List *rtable, 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)
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)
#define MUTATE(newfield, oldfield, fieldtype)
static int leftmostLoc(int loc1, int loc2)
Node * relabel_to_typmod(Node *expr, int32 typmod)
int exprLocation(const Node *expr)
Node * strip_implicit_coercions(Node *node)
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)
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)
#define QTW_DONT_COPY_QUERY
#define QTW_IGNORE_CTE_SUBQUERIES
#define QTW_IGNORE_RT_SUBQUERIES
#define range_table_walker(rt, w, c, f)
bool(* planstate_tree_walker_callback)(struct PlanState *planstate, void *context)
#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)
Node *(* tree_mutator_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)
#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
void check_stack_depth(void)
static int32 DatumGetInt32(Datum X)
static int fc(const char *x)
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