diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index f39ab8586a..89335d95e7 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -123,7 +123,8 @@ typedef struct Query CmdType commandType; /* select|insert|update|delete|merge|utility */ - QuerySource querySource; /* where did I come from? */ + /* where did I come from? */ + QuerySource querySource; /* * query identifier (can be set by plugins); ignored for equal, as it @@ -131,39 +132,58 @@ typedef struct Query */ uint64 queryId pg_node_attr(equal_ignore, read_write_ignore, read_as(0)); - bool canSetTag; /* do I set the command result tag? */ + /* do I set the command result tag? */ + bool canSetTag; Node *utilityStmt; /* non-null if commandType == CMD_UTILITY */ - int resultRelation; /* rtable index of target relation for - * INSERT/UPDATE/DELETE/MERGE; 0 for SELECT */ + /* + * rtable index of target relation for INSERT/UPDATE/DELETE/MERGE; 0 for + * SELECT. + */ + int resultRelation; - bool hasAggs; /* has aggregates in tlist or havingQual */ - bool hasWindowFuncs; /* has window functions in tlist */ - bool hasTargetSRFs; /* has set-returning functions in tlist */ - bool hasSubLinks; /* has subquery SubLink */ - bool hasDistinctOn; /* distinctClause is from DISTINCT ON */ - bool hasRecursive; /* WITH RECURSIVE was specified */ - bool hasModifyingCTE; /* has INSERT/UPDATE/DELETE in WITH */ - bool hasForUpdate; /* FOR [KEY] UPDATE/SHARE was specified */ - bool hasRowSecurity; /* rewriter has applied some RLS policy */ - - bool isReturn; /* is a RETURN statement */ + /* has aggregates in tlist or havingQual */ + bool hasAggs; + /* has window functions in tlist */ + bool hasWindowFuncs; + /* has set-returning functions in tlist */ + bool hasTargetSRFs; + /* has subquery SubLink */ + bool hasSubLinks; + /* distinctClause is from DISTINCT ON */ + bool hasDistinctOn; + /* WITH RECURSIVE was specified */ + bool hasRecursive; + /* has INSERT/UPDATE/DELETE in WITH */ + bool hasModifyingCTE; + /* FOR [KEY] UPDATE/SHARE was specified */ + bool hasForUpdate; + /* rewriter has applied some RLS policy */ + bool hasRowSecurity; + /* is a RETURN statement */ + bool isReturn; List *cteList; /* WITH list (of CommonTableExpr's) */ List *rtable; /* list of range table entries */ - List *rteperminfos; /* list of RTEPermissionInfo nodes for the - * rtable entries having perminfoindex > 0 */ + + /* + * list of RTEPermissionInfo nodes for the rtable entries having + * perminfoindex > 0 + */ + List *rteperminfos; FromExpr *jointree; /* table join tree (FROM and WHERE clauses); * also USING clause for MERGE */ List *mergeActionList; /* list of actions for MERGE (only) */ - bool mergeUseOuterJoin; /* whether to use outer join */ + /* whether to use outer join */ + bool mergeUseOuterJoin; List *targetList; /* target list (of TargetEntry) */ - OverridingKind override; /* OVERRIDING clause */ + /* OVERRIDING clause */ + OverridingKind override; OnConflictExpr *onConflict; /* ON CONFLICT DO [NOTHING | UPDATE] */ @@ -191,11 +211,14 @@ typedef struct Query Node *setOperations; /* set-operation tree if this is top level of * a UNION/INTERSECT/EXCEPT query */ - List *constraintDeps; /* a list of pg_constraint OIDs that the query - * depends on to be semantically valid */ + /* + * A list of pg_constraint OIDs that the query depends on to be + * semantically valid + */ + List *constraintDeps; - List *withCheckOptions; /* a list of WithCheckOption's (added - * during rewrite) */ + /* a list of WithCheckOption's (added during rewrite) */ + List *withCheckOptions; /* * The following two fields identify the portion of the source text string @@ -203,8 +226,10 @@ typedef struct Query * Queries, not in sub-queries. When not set, they might both be zero, or * both be -1 meaning "unknown". */ - int stmt_location; /* start location, or -1 if unknown */ - int stmt_len; /* length in bytes; 0 means "rest of string" */ + /* start location, or -1 if unknown */ + int stmt_location; + /* length in bytes; 0 means "rest of string" */ + int stmt_len; } Query; @@ -1231,14 +1256,21 @@ typedef struct RangeTblFunction NodeTag type; Node *funcexpr; /* expression tree for func call */ - int funccolcount; /* number of columns it contributes to RTE */ + /* number of columns it contributes to RTE */ + int funccolcount; /* These fields record the contents of a column definition list, if any: */ - List *funccolnames; /* column names (list of String) */ - List *funccoltypes; /* OID list of column type OIDs */ - List *funccoltypmods; /* integer list of column typmods */ - List *funccolcollations; /* OID list of column collation OIDs */ + /* column names (list of String) */ + List *funccolnames; + /* OID list of column type OIDs */ + List *funccoltypes; + /* integer list of column typmods */ + List *funccoltypmods; + /* OID list of column collation OIDs */ + List *funccolcollations; + /* This is set during planning for use by the executor: */ - Bitmapset *funcparams; /* PARAM_EXEC Param IDs affecting this func */ + /* PARAM_EXEC Param IDs affecting this func */ + Bitmapset *funcparams; } RangeTblFunction; /* @@ -1345,7 +1377,8 @@ typedef struct SortGroupClause Oid eqop; /* the equality operator ('=' op) */ Oid sortop; /* the ordering operator ('<' op), or 0 */ bool nulls_first; /* do NULLs come before normal values? */ - bool hashable; /* can eqop be implemented by hashing? */ + /* can eqop be implemented by hashing? */ + bool hashable; } SortGroupClause; /* @@ -1435,21 +1468,31 @@ typedef struct GroupingSet typedef struct WindowClause { NodeTag type; - char *name; /* window name (NULL in an OVER clause) */ - char *refname; /* referenced window name, if any */ + /* window name (NULL in an OVER clause) */ + char *name; + /* referenced window name, if any */ + char *refname; List *partitionClause; /* PARTITION BY list */ - List *orderClause; /* ORDER BY list */ + /* ORDER BY list */ + List *orderClause; int frameOptions; /* frame_clause options, see WindowDef */ Node *startOffset; /* expression for starting bound, if any */ Node *endOffset; /* expression for ending bound, if any */ - List *runCondition; /* qual to help short-circuit execution */ - Oid startInRangeFunc; /* in_range function for startOffset */ - Oid endInRangeFunc; /* in_range function for endOffset */ - Oid inRangeColl; /* collation for in_range tests */ - bool inRangeAsc; /* use ASC sort order for in_range tests? */ - bool inRangeNullsFirst; /* nulls sort first for in_range tests? */ + /* qual to help short-circuit execution */ + List *runCondition; + /* in_range function for startOffset */ + Oid startInRangeFunc; + /* in_range function for endOffset */ + Oid endInRangeFunc; + /* collation for in_range tests */ + Oid inRangeColl; + /* use ASC sort order for in_range tests? */ + bool inRangeAsc; + /* nulls sort first for in_range tests? */ + bool inRangeNullsFirst; Index winref; /* ID referenced by window functions */ - bool copiedOrder; /* did we copy orderClause from refname? */ + /* did we copy orderClause from refname? */ + bool copiedOrder; } WindowClause; /* @@ -1568,13 +1611,22 @@ typedef struct CommonTableExpr CTECycleClause *cycle_clause; int location; /* token location, or -1 if unknown */ /* These fields are set during parse analysis: */ - bool cterecursive; /* is this CTE actually recursive? */ - int cterefcount; /* number of RTEs referencing this CTE - * (excluding internal self-references) */ - List *ctecolnames; /* list of output column names */ - List *ctecoltypes; /* OID list of output column type OIDs */ - List *ctecoltypmods; /* integer list of output column typmods */ - List *ctecolcollations; /* OID list of column collation OIDs */ + /* is this CTE actually recursive? */ + bool cterecursive; + + /* + * Number of RTEs referencing this CTE (excluding internal + * self-references) + */ + int cterefcount; + /* list of output column names */ + List *ctecolnames; + /* OID list of output column type OIDs */ + List *ctecoltypes; + /* integer list of output column typmods */ + List *ctecoltypmods; + /* OID list of column collation OIDs */ + List *ctecolcollations; } CommonTableExpr; /* Convenience macro to get the output tlist of a CTE's query */ @@ -1611,10 +1663,12 @@ typedef struct MergeAction NodeTag type; bool matched; /* true=MATCHED, false=NOT MATCHED */ CmdType commandType; /* INSERT/UPDATE/DELETE/DO NOTHING */ - OverridingKind override; /* OVERRIDING clause */ + /* OVERRIDING clause */ + OverridingKind override; Node *qual; /* transformed WHEN conditions */ List *targetList; /* the target list (of TargetEntry) */ - List *updateColnos; /* target attribute numbers of an UPDATE */ + /* target attribute numbers of an UPDATE */ + List *updateColnos; } MergeAction; /* @@ -1824,10 +1878,14 @@ typedef struct SetOperationStmt /* Eventually add fields for CORRESPONDING spec here */ /* Fields derived during parse analysis: */ - List *colTypes; /* OID list of output column type OIDs */ - List *colTypmods; /* integer list of output column typmods */ - List *colCollations; /* OID list of output column collation OIDs */ - List *groupClauses; /* a list of SortGroupClause's */ + /* OID list of output column type OIDs */ + List *colTypes; + /* integer list of output column typmods */ + List *colTypmods; + /* OID list of output column collation OIDs */ + List *colCollations; + /* a list of SortGroupClause's */ + List *groupClauses; /* groupClauses is NIL if UNION ALL, but must be set otherwise */ } SetOperationStmt; diff --git a/src/include/nodes/primnodes.h b/src/include/nodes/primnodes.h index 83e40e56d3..3bdde134f4 100644 --- a/src/include/nodes/primnodes.h +++ b/src/include/nodes/primnodes.h @@ -98,19 +98,32 @@ typedef struct RangeVar typedef struct TableFunc { NodeTag type; - List *ns_uris; /* list of namespace URI expressions */ - List *ns_names; /* list of namespace names or NULL */ - Node *docexpr; /* input document expression */ - Node *rowexpr; /* row filter expression */ - List *colnames; /* column names (list of String) */ - List *coltypes; /* OID list of column type OIDs */ - List *coltypmods; /* integer list of column typmods */ - List *colcollations; /* OID list of column collation OIDs */ - List *colexprs; /* list of column filter expressions */ - List *coldefexprs; /* list of column default expressions */ - Bitmapset *notnulls; /* nullability flag for each output column */ - int ordinalitycol; /* counts from 0; -1 if none specified */ - int location; /* token location, or -1 if unknown */ + /* list of namespace URI expressions */ + List *ns_uris; + /* list of namespace names or NULL */ + List *ns_names; + /* input document expression */ + Node *docexpr; + /* row filter expression */ + Node *rowexpr; + /* column names (list of String) */ + List *colnames; + /* OID list of column type OIDs */ + List *coltypes; + /* integer list of column typmods */ + List *coltypmods; + /* OID list of column collation OIDs */ + List *colcollations; + /* list of column filter expressions */ + List *colexprs; + /* list of column default expressions */ + List *coldefexprs; + /* nullability flag for each output column */ + Bitmapset *notnulls; + /* counts from 0; -1 if none specified */ + int ordinalitycol; + /* token location, or -1 if unknown */ + int location; } TableFunc; /* @@ -256,18 +269,27 @@ typedef struct Const pg_node_attr(custom_copy_equal, custom_read_write) Expr xpr; - Oid consttype; /* pg_type OID of the constant's datatype */ - int32 consttypmod; /* typmod value, if any */ - Oid constcollid; /* OID of collation, or InvalidOid if none */ - int constlen; /* typlen of the constant's datatype */ - Datum constvalue; /* the constant's value */ - bool constisnull; /* whether the constant is null (if true, - * constvalue is undefined) */ - bool constbyval; /* whether this datatype is passed by value. - * If true, then all the information is stored - * in the Datum. If false, then the Datum - * contains a pointer to the information. */ - int location; /* token location, or -1 if unknown */ + /* pg_type OID of the constant's datatype */ + Oid consttype; + /* typmod value, if any */ + int32 consttypmod; + /* OID of collation, or InvalidOid if none */ + Oid constcollid; + /* typlen of the constant's datatype */ + int constlen; + /* the constant's value */ + Datum constvalue; + /* whether the constant is null (if true, constvalue is undefined) */ + bool constisnull; + + /* + * Whether this datatype is passed by value. If true, then all the + * information is stored in the Datum. If false, then the Datum contains + * a pointer to the information. + */ + bool constbyval; + /* token location, or -1 if unknown */ + int location; } Const; /* @@ -311,9 +333,12 @@ typedef struct Param ParamKind paramkind; /* kind of parameter. See above */ int paramid; /* numeric ID for parameter */ Oid paramtype; /* pg_type OID of parameter's datatype */ - int32 paramtypmod; /* typmod value, if known */ - Oid paramcollid; /* OID of collation, or InvalidOid if none */ - int location; /* token location, or -1 if unknown */ + /* typmod value, if known */ + int32 paramtypmod; + /* OID of collation, or InvalidOid if none */ + Oid paramcollid; + /* token location, or -1 if unknown */ + int location; } Param; /* @@ -486,16 +511,26 @@ typedef struct GroupingFunc typedef struct WindowFunc { Expr xpr; - Oid winfnoid; /* pg_proc Oid of the function */ - Oid wintype; /* type Oid of result of the window function */ - Oid wincollid; /* OID of collation of result */ - Oid inputcollid; /* OID of collation that function should use */ - List *args; /* arguments to the window function */ - Expr *aggfilter; /* FILTER expression, if any */ - Index winref; /* index of associated WindowClause */ - bool winstar; /* true if argument list was really '*' */ - bool winagg; /* is function a simple aggregate? */ - int location; /* token location, or -1 if unknown */ + /* pg_proc Oid of the function */ + Oid winfnoid; + /* type Oid of result of the window function */ + Oid wintype; + /* OID of collation of result */ + Oid wincollid; + /* OID of collation that function should use */ + Oid inputcollid; + /* arguments to the window function */ + List *args; + /* FILTER expression, if any */ + Expr *aggfilter; + /* index of associated WindowClause */ + Index winref; + /* true if argument list was really '*' */ + bool winstar; + /* is function a simple aggregate? */ + bool winagg; + /* token location, or -1 if unknown */ + int location; } WindowFunc; /* @@ -539,20 +574,28 @@ typedef struct WindowFunc typedef struct SubscriptingRef { Expr xpr; - Oid refcontainertype; /* type of the container proper */ - Oid refelemtype; /* the container type's pg_type.typelem */ - Oid refrestype; /* type of the SubscriptingRef's result */ - int32 reftypmod; /* typmod of the result */ - Oid refcollid; /* collation of result, or InvalidOid if none */ - List *refupperindexpr; /* expressions that evaluate to upper - * container indexes */ - List *reflowerindexpr; /* expressions that evaluate to lower - * container indexes, or NIL for single - * container element */ - Expr *refexpr; /* the expression that evaluates to a - * container value */ - Expr *refassgnexpr; /* expression for the source value, or NULL if - * fetch */ + /* type of the container proper */ + Oid refcontainertype; + /* the container type's pg_type.typelem */ + Oid refelemtype; + /* type of the SubscriptingRef's result */ + Oid refrestype; + /* typmod of the result */ + int32 reftypmod; + /* collation of result, or InvalidOid if none */ + Oid refcollid; + /* expressions that evaluate to upper container indexes */ + List *refupperindexpr; + + /* + * expressions that evaluate to lower container indexes, or NIL for single + * container element. + */ + List *reflowerindexpr; + /* the expression that evaluates to a container value */ + Expr *refexpr; + /* expression for the source value, or NULL if fetch */ + Expr *refassgnexpr; } SubscriptingRef; /* @@ -595,16 +638,28 @@ typedef enum CoercionForm typedef struct FuncExpr { Expr xpr; - Oid funcid; /* PG_PROC OID of the function */ - Oid funcresulttype; /* PG_TYPE OID of result value */ - bool funcretset; /* true if function returns set */ - bool funcvariadic; /* true if variadic arguments have been - * combined into an array last argument */ - CoercionForm funcformat; /* how to display this function call */ - Oid funccollid; /* OID of collation of result */ - Oid inputcollid; /* OID of collation that function should use */ - List *args; /* arguments to the function */ - int location; /* token location, or -1 if unknown */ + /* PG_PROC OID of the function */ + Oid funcid; + /* PG_TYPE OID of result value */ + Oid funcresulttype; + /* true if function returns set */ + bool funcretset; + + /* + * true if variadic arguments have been combined into an array last + * argument + */ + bool funcvariadic; + /* how to display this function call */ + CoercionForm funcformat; + /* OID of collation of result */ + Oid funccollid; + /* OID of collation that function should use */ + Oid inputcollid; + /* arguments to the function */ + List *args; + /* token location, or -1 if unknown */ + int location; } FuncExpr; /* @@ -624,10 +679,14 @@ typedef struct FuncExpr typedef struct NamedArgExpr { Expr xpr; - Expr *arg; /* the argument expression */ - char *name; /* the name */ - int argnumber; /* argument's number in positional notation */ - int location; /* argument name location, or -1 if unknown */ + /* the argument expression */ + Expr *arg; + /* the name */ + char *name; + /* argument's number in positional notation */ + int argnumber; + /* argument name location, or -1 if unknown */ + int location; } NamedArgExpr; /* @@ -838,8 +897,10 @@ typedef struct SubLink SubLinkType subLinkType; /* see above */ int subLinkId; /* ID (1..n); 0 if not MULTIEXPR */ Node *testexpr; /* outer-query test for ALL/ANY/ROWCOMPARE */ - List *operName; /* originally specified operator name */ - Node *subselect; /* subselect as Query* or raw parsetree */ + /* originally specified operator name */ + List *operName; + /* subselect as Query* or raw parsetree */ + Node *subselect; int location; /* token location, or -1 if unknown */ } SubLink; @@ -948,10 +1009,12 @@ typedef struct FieldSelect Expr xpr; Expr *arg; /* input expression */ AttrNumber fieldnum; /* attribute number of field to extract */ - Oid resulttype; /* type of the field (result type of this - * node) */ - int32 resulttypmod; /* output typmod (usually -1) */ - Oid resultcollid; /* OID of collation of the field */ + /* type of the field (result type of this node) */ + Oid resulttype; + /* output typmod (usually -1) */ + int32 resulttypmod; + /* OID of collation of the field */ + Oid resultcollid; } FieldSelect; /* ---------------- @@ -977,8 +1040,10 @@ typedef struct FieldStore Expr xpr; Expr *arg; /* input tuple value */ List *newvals; /* new value(s) for field(s) */ - List *fieldnums; /* integer list of field attnums */ - Oid resulttype; /* type of result (same as type of arg) */ + /* integer list of field attnums */ + List *fieldnums; + /* type of result (same as type of arg) */ + Oid resulttype; /* Like RowExpr, we deliberately omit a typmod and collation here */ } FieldStore; @@ -1000,9 +1065,12 @@ typedef struct RelabelType Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* output type of coercion expression */ - int32 resulttypmod; /* output typmod (usually -1) */ - Oid resultcollid; /* OID of collation, or InvalidOid if none */ - CoercionForm relabelformat; /* how to display this node */ + /* output typmod (usually -1) */ + int32 resulttypmod; + /* OID of collation, or InvalidOid if none */ + Oid resultcollid; + /* how to display this node */ + CoercionForm relabelformat; int location; /* token location, or -1 if unknown */ } RelabelType; @@ -1021,8 +1089,10 @@ typedef struct CoerceViaIO Expr *arg; /* input expression */ Oid resulttype; /* output type of coercion */ /* output typmod is not stored, but is presumed -1 */ - Oid resultcollid; /* OID of collation, or InvalidOid if none */ - CoercionForm coerceformat; /* how to display this node */ + /* OID of collation, or InvalidOid if none */ + Oid resultcollid; + /* how to display this node */ + CoercionForm coerceformat; int location; /* token location, or -1 if unknown */ } CoerceViaIO; @@ -1045,9 +1115,12 @@ typedef struct ArrayCoerceExpr Expr *arg; /* input expression (yields an array) */ Expr *elemexpr; /* expression representing per-element work */ Oid resulttype; /* output type of coercion (an array type) */ - int32 resulttypmod; /* output typmod (also element typmod) */ - Oid resultcollid; /* OID of collation, or InvalidOid if none */ - CoercionForm coerceformat; /* how to display this node */ + /* output typmod (also element typmod) */ + int32 resulttypmod; + /* OID of collation, or InvalidOid if none */ + Oid resultcollid; + /* how to display this node */ + CoercionForm coerceformat; int location; /* token location, or -1 if unknown */ } ArrayCoerceExpr; @@ -1070,7 +1143,8 @@ typedef struct ConvertRowtypeExpr Expr *arg; /* input expression */ Oid resulttype; /* output type (always a composite type) */ /* Like RowExpr, we deliberately omit a typmod and collation here */ - CoercionForm convertformat; /* how to display this node */ + /* how to display this node */ + CoercionForm convertformat; int location; /* token location, or -1 if unknown */ } ConvertRowtypeExpr; @@ -1114,8 +1188,10 @@ typedef struct CollateExpr typedef struct CaseExpr { Expr xpr; - Oid casetype; /* type of expression result */ - Oid casecollid; /* OID of collation, or InvalidOid if none */ + /* type of expression result */ + Oid casetype; + /* OID of collation, or InvalidOid if none */ + Oid casecollid; Expr *arg; /* implicit equality comparison argument */ List *args; /* the arguments (list of WHEN clauses) */ Expr *defresult; /* the default result (ELSE clause) */ @@ -1157,8 +1233,10 @@ typedef struct CaseTestExpr { Expr xpr; Oid typeId; /* type for substituted value */ - int32 typeMod; /* typemod for substituted value */ - Oid collation; /* collation for the substituted value */ + /* typemod for substituted value */ + int32 typeMod; + /* collation for the substituted value */ + Oid collation; } CaseTestExpr; /* @@ -1172,12 +1250,18 @@ typedef struct CaseTestExpr typedef struct ArrayExpr { Expr xpr; - Oid array_typeid; /* type of expression result */ - Oid array_collid; /* OID of collation, or InvalidOid if none */ - Oid element_typeid; /* common type of array elements */ - List *elements; /* the array elements or sub-arrays */ - bool multidims; /* true if elements are sub-arrays */ - int location; /* token location, or -1 if unknown */ + /* type of expression result */ + Oid array_typeid; + /* OID of collation, or InvalidOid if none */ + Oid array_collid; + /* common type of array elements */ + Oid element_typeid; + /* the array elements or sub-arrays */ + List *elements; + /* true if elements are sub-arrays */ + bool multidims; + /* token location, or -1 if unknown */ + int location; } ArrayExpr; /* @@ -1205,7 +1289,9 @@ typedef struct RowExpr { Expr xpr; List *args; /* the fields */ - Oid row_typeid; /* RECORDOID or a composite type's ID */ + + /* RECORDOID or a composite type's ID */ + Oid row_typeid; /* * row_typeid cannot be a domain over composite, only plain composite. To @@ -1219,8 +1305,13 @@ typedef struct RowExpr * We don't need to store a collation either. The result type is * necessarily composite, and composite types never have a collation. */ - CoercionForm row_format; /* how to display this node */ - List *colnames; /* list of String, or NIL */ + + /* how to display this node */ + CoercionForm row_format; + + /* list of String, or NIL */ + List *colnames; + int location; /* token location, or -1 if unknown */ } RowExpr; @@ -1252,12 +1343,19 @@ typedef enum RowCompareType typedef struct RowCompareExpr { Expr xpr; - RowCompareType rctype; /* LT LE GE or GT, never EQ or NE */ - List *opnos; /* OID list of pairwise comparison ops */ - List *opfamilies; /* OID list of containing operator families */ - List *inputcollids; /* OID list of collations for comparisons */ - List *largs; /* the left-hand input arguments */ - List *rargs; /* the right-hand input arguments */ + + /* LT LE GE or GT, never EQ or NE */ + RowCompareType rctype; + /* OID list of pairwise comparison ops */ + List *opnos; + /* OID list of containing operator families */ + List *opfamilies; + /* OID list of collations for comparisons */ + List *inputcollids; + /* the left-hand input arguments */ + List *largs; + /* the right-hand input arguments */ + List *rargs; } RowCompareExpr; /* @@ -1266,10 +1364,14 @@ typedef struct RowCompareExpr typedef struct CoalesceExpr { Expr xpr; - Oid coalescetype; /* type of expression result */ - Oid coalescecollid; /* OID of collation, or InvalidOid if none */ - List *args; /* the arguments */ - int location; /* token location, or -1 if unknown */ + /* type of expression result */ + Oid coalescetype; + /* OID of collation, or InvalidOid if none */ + Oid coalescecollid; + /* the arguments */ + List *args; + /* token location, or -1 if unknown */ + int location; } CoalesceExpr; /* @@ -1284,12 +1386,18 @@ typedef enum MinMaxOp typedef struct MinMaxExpr { Expr xpr; - Oid minmaxtype; /* common type of arguments and result */ - Oid minmaxcollid; /* OID of collation of result */ - Oid inputcollid; /* OID of collation that function should use */ - MinMaxOp op; /* function to execute */ - List *args; /* the arguments */ - int location; /* token location, or -1 if unknown */ + /* common type of arguments and result */ + Oid minmaxtype; + /* OID of collation of result */ + Oid minmaxcollid; + /* OID of collation that function should use */ + Oid inputcollid; + /* function to execute */ + MinMaxOp op; + /* the arguments */ + List *args; + /* token location, or -1 if unknown */ + int location; } MinMaxExpr; /* @@ -1324,15 +1432,23 @@ typedef enum XmlOptionType typedef struct XmlExpr { Expr xpr; - XmlExprOp op; /* xml function ID */ - char *name; /* name in xml(NAME foo ...) syntaxes */ - List *named_args; /* non-XML expressions for xml_attributes */ - List *arg_names; /* parallel list of String values */ - List *args; /* list of expressions */ - XmlOptionType xmloption; /* DOCUMENT or CONTENT */ - Oid type; /* target type/typmod for XMLSERIALIZE */ + /* xml function ID */ + XmlExprOp op; + /* name in xml(NAME foo ...) syntaxes */ + char *name; + /* non-XML expressions for xml_attributes */ + List *named_args; + /* parallel list of String values */ + List *arg_names; + /* list of expressions */ + List *args; + /* DOCUMENT or CONTENT */ + XmlOptionType xmloption; + /* target type/typmod for XMLSERIALIZE */ + Oid type; int32 typmod; - int location; /* token location, or -1 if unknown */ + /* token location, or -1 if unknown */ + int location; } XmlExpr; /* ---------------- @@ -1364,7 +1480,8 @@ typedef struct NullTest Expr xpr; Expr *arg; /* input expression */ NullTestType nulltesttype; /* IS NULL, IS NOT NULL */ - bool argisrow; /* T to perform field-by-field null checks */ + /* T to perform field-by-field null checks */ + bool argisrow; int location; /* token location, or -1 if unknown */ } NullTest; @@ -1404,9 +1521,12 @@ typedef struct CoerceToDomain Expr xpr; Expr *arg; /* input expression */ Oid resulttype; /* domain type ID (result type) */ - int32 resulttypmod; /* output typmod (currently always -1) */ - Oid resultcollid; /* OID of collation, or InvalidOid if none */ - CoercionForm coercionformat; /* how to display this node */ + /* output typmod (currently always -1) */ + int32 resulttypmod; + /* OID of collation, or InvalidOid if none */ + Oid resultcollid; + /* how to display this node */ + CoercionForm coercionformat; int location; /* token location, or -1 if unknown */ } CoerceToDomain; @@ -1422,10 +1542,14 @@ typedef struct CoerceToDomain typedef struct CoerceToDomainValue { Expr xpr; - Oid typeId; /* type for substituted value */ - int32 typeMod; /* typemod for substituted value */ - Oid collation; /* collation for the substituted value */ - int location; /* token location, or -1 if unknown */ + /* type for substituted value */ + Oid typeId; + /* typemod for substituted value */ + int32 typeMod; + /* collation for the substituted value */ + Oid collation; + /* token location, or -1 if unknown */ + int location; } CoerceToDomainValue; /* @@ -1438,10 +1562,14 @@ typedef struct CoerceToDomainValue typedef struct SetToDefault { Expr xpr; - Oid typeId; /* type for substituted value */ - int32 typeMod; /* typemod for substituted value */ - Oid collation; /* collation for the substituted value */ - int location; /* token location, or -1 if unknown */ + /* type for substituted value */ + Oid typeId; + /* typemod for substituted value */ + int32 typeMod; + /* collation for the substituted value */ + Oid collation; + /* token location, or -1 if unknown */ + int location; } SetToDefault; /* @@ -1552,15 +1680,20 @@ typedef struct InferenceElem typedef struct TargetEntry { Expr xpr; - Expr *expr; /* expression to evaluate */ - AttrNumber resno; /* attribute number (see notes above) */ - char *resname; /* name of the column (could be NULL) */ - Index ressortgroupref; /* nonzero if referenced by a sort/group - * clause */ - Oid resorigtbl; /* OID of column's source table */ - AttrNumber resorigcol; /* column's number in source table */ - bool resjunk; /* set to true to eliminate the attribute from - * final target list */ + /* expression to evaluate */ + Expr *expr; + /* attribute number (see notes above) */ + AttrNumber resno; + /* name of the column (could be NULL) */ + char *resname; + /* nonzero if referenced by a sort/group clause */ + Index ressortgroupref; + /* OID of column's source table */ + Oid resorigtbl; + /* column's number in source table */ + AttrNumber resorigcol; + /* set to true to eliminate the attribute from final target list */ + bool resjunk; } TargetEntry; @@ -1642,11 +1775,16 @@ typedef struct JoinExpr bool isNatural; /* Natural join? Will need to shape table */ Node *larg; /* left subtree */ Node *rarg; /* right subtree */ - List *usingClause; /* USING clause, if any (list of String) */ - Alias *join_using_alias; /* alias attached to USING clause, if any */ - Node *quals; /* qualifiers on join, if any */ - Alias *alias; /* user-written alias clause, if any */ - int rtindex; /* RT index assigned for join, or 0 */ + /* USING clause, if any (list of String) */ + List *usingClause; + /* alias attached to USING clause, if any */ + Alias *join_using_alias; + /* qualifiers on join, if any */ + Node *quals; + /* user-written alias clause, if any */ + Alias *alias; + /* RT index assigned for join, or 0 */ + int rtindex; } JoinExpr; /*----------