v4-0003-gen_node_support.pl-Mark-location-fields-as-type-.patch
application/octet-stream
Filename: v4-0003-gen_node_support.pl-Mark-location-fields-as-type-.patch
Type: application/octet-stream
Part: 4
Patch
Format: format-patch
Series: patch v4-0003
Subject: gen_node_support.pl: Mark location fields as type alias Location
| File | + | − |
|---|---|---|
| src/backend/nodes/gen_node_support.pl | 3 | 3 |
| src/include/nodes/parsenodes.h | 46 | 46 |
| src/include/nodes/primnodes.h | 37 | 35 |
From 4c0159875ed1633796f2e7d64624ba5857154bc8 Mon Sep 17 00:00:00 2001
From: Matthias van de Meent <boekewurm+postgres@gmail.com>
Date: Thu, 8 Feb 2024 17:15:22 +0100
Subject: [PATCH v4 3/7] gen_node_support.pl: Mark location fields as type
alias Location
Instead of the rather ugly type=int + name ~= location$, we now have a
special type for offset pointers or sizes that are only relevant when a
query text is included, which decreases the complexity required in
gen_node_support.pl for handling these values.
---
src/backend/nodes/gen_node_support.pl | 6 +-
src/include/nodes/parsenodes.h | 92 +++++++++++++--------------
src/include/nodes/primnodes.h | 72 +++++++++++----------
3 files changed, 86 insertions(+), 84 deletions(-)
diff --git a/src/backend/nodes/gen_node_support.pl b/src/backend/nodes/gen_node_support.pl
index 487f6f7728..ec850c3484 100644
--- a/src/backend/nodes/gen_node_support.pl
+++ b/src/backend/nodes/gen_node_support.pl
@@ -777,7 +777,7 @@ _equal${n}(const $n *a, const $n *b)
print $eff "\tCOMPARE_BITMAPSET_FIELD($f);\n"
unless $equal_ignore;
}
- elsif ($t eq 'int' && $f =~ 'location$')
+ elsif ($t eq 'Location')
{
print $cff "\tCOPY_LOCATION_FIELD($f);\n" unless $copy_ignore;
print $eff "\tCOMPARE_LOCATION_FIELD($f);\n" unless $equal_ignore;
@@ -1010,7 +1010,7 @@ _read${n}(void)
print $off "\tWRITE_BOOL_FIELD($f);\n";
print $rff "\tREAD_BOOL_FIELD($f);\n" unless $no_read;
}
- elsif ($t eq 'int' && $f =~ 'location$')
+ elsif ($t eq 'Location')
{
print $off "\tWRITE_LOCATION_FIELD($f);\n";
print $rff "\tREAD_LOCATION_FIELD($f);\n" unless $no_read;
@@ -1303,7 +1303,7 @@ _jumble${n}(JumbleState *jstate, Node *node)
print $jff "\tJUMBLE_NODE($f);\n"
unless $query_jumble_ignore;
}
- elsif ($t eq 'int' && $f =~ 'location$')
+ elsif ($t eq 'Location')
{
# Track the node's location only if directly requested.
if ($query_jumble_location)
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index 476d55dd24..dd8aa30aaf 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -225,9 +225,9 @@ typedef struct Query
* both be -1 meaning "unknown".
*/
/* start location, or -1 if unknown */
- int stmt_location;
+ Location stmt_location;
/* length in bytes; 0 means "rest of string" */
- int stmt_len pg_node_attr(query_jumble_ignore);
+ Location stmt_len pg_node_attr(query_jumble_ignore);
} Query;
@@ -262,7 +262,7 @@ typedef struct TypeName
List *typmods; /* type modifier expression(s) */
int32 typemod; /* prespecified type modifier */
List *arrayBounds; /* array bounds */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} TypeName;
/*
@@ -282,7 +282,7 @@ typedef struct ColumnRef
{
NodeTag type;
List *fields; /* field names (String nodes) or A_Star */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} ColumnRef;
/*
@@ -292,7 +292,7 @@ typedef struct ParamRef
{
NodeTag type;
int number; /* the number of the parameter */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} ParamRef;
/*
@@ -325,7 +325,7 @@ typedef struct A_Expr
List *name; /* possibly-qualified name of operator */
Node *lexpr; /* left argument, or NULL if none */
Node *rexpr; /* right argument, or NULL if none */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} A_Expr;
/*
@@ -351,7 +351,7 @@ typedef struct A_Const
NodeTag type;
union ValUnion val;
bool isnull; /* SQL NULL constant */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} A_Const;
/*
@@ -362,7 +362,7 @@ typedef struct TypeCast
NodeTag type;
Node *arg; /* the expression being casted */
TypeName *typeName; /* the target type */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} TypeCast;
/*
@@ -373,7 +373,7 @@ typedef struct CollateClause
NodeTag type;
Node *arg; /* input expression */
List *collname; /* possibly-qualified collation name */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} CollateClause;
/*
@@ -393,7 +393,7 @@ typedef struct RoleSpec
NodeTag type;
RoleSpecType roletype; /* Type of this rolespec */
char *rolename; /* filled only for ROLESPEC_CSTRING */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} RoleSpec;
/*
@@ -423,7 +423,7 @@ typedef struct FuncCall
bool agg_distinct; /* arguments were labeled DISTINCT */
bool func_variadic; /* last argument was labeled VARIADIC */
CoercionForm funcformat; /* how to display this node */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} FuncCall;
/*
@@ -480,7 +480,7 @@ typedef struct A_ArrayExpr
{
NodeTag type;
List *elements; /* array element expressions */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} A_ArrayExpr;
/*
@@ -507,7 +507,7 @@ typedef struct ResTarget
char *name; /* column name or NULL */
List *indirection; /* subscripts, field names, and '*', or NIL */
Node *val; /* the value expression to compute or assign */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} ResTarget;
/*
@@ -537,7 +537,7 @@ typedef struct SortBy
SortByDir sortby_dir; /* ASC/DESC/USING/default */
SortByNulls sortby_nulls; /* NULLS FIRST/LAST */
List *useOp; /* name of op to use, if SORTBY_USING */
- int location; /* operator location, or -1 if none/unknown */
+ Location location; /* operator location, or -1 if none/unknown */
} SortBy;
/*
@@ -558,7 +558,7 @@ typedef struct WindowDef
int frameOptions; /* frame_clause options, see below */
Node *startOffset; /* expression for starting bound, if any */
Node *endOffset; /* expression for ending bound, if any */
- int location; /* parse location, or -1 if none/unknown */
+ Location location; /* parse location, or -1 if none/unknown */
} WindowDef;
/*
@@ -648,7 +648,7 @@ typedef struct RangeTableFunc
List *namespaces; /* list of namespaces as ResTarget */
List *columns; /* list of RangeTableFuncCol */
Alias *alias; /* table alias & optional column aliases */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} RangeTableFunc;
/*
@@ -666,7 +666,7 @@ typedef struct RangeTableFuncCol
bool is_not_null; /* does it have NOT NULL? */
Node *colexpr; /* column filter expression */
Node *coldefexpr; /* column default value expression */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} RangeTableFuncCol;
/*
@@ -686,7 +686,7 @@ typedef struct RangeTableSample
List *method; /* sampling method name (possibly qualified) */
List *args; /* argument(s) for sampling method */
Node *repeatable; /* REPEATABLE expression, or NULL if none */
- int location; /* method name location, or -1 if unknown */
+ Location location; /* method name location, or -1 if unknown */
} RangeTableSample;
/*
@@ -729,7 +729,7 @@ typedef struct ColumnDef
Oid collOid; /* collation OID (InvalidOid if not set) */
List *constraints; /* other constraints on column */
List *fdwoptions; /* per-column FDW options */
- int location; /* parse location, or -1 if none/unknown */
+ Location location; /* parse location, or -1 if none/unknown */
} ColumnDef;
/*
@@ -803,7 +803,7 @@ typedef struct DefElem
Node *arg; /* typically Integer, Float, String, or
* TypeName */
DefElemAction defaction; /* unspecified action, or SET/ADD/DROP */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} DefElem;
/*
@@ -833,7 +833,7 @@ typedef struct XmlSerialize
Node *expr;
TypeName *typeName;
bool indent; /* [NO] INDENT */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} XmlSerialize;
/* Partitioning related definitions */
@@ -851,7 +851,7 @@ typedef struct PartitionElem
Node *expr; /* expression to partition on, or NULL */
List *collation; /* name of collation; NIL = default */
List *opclass; /* name of desired opclass; NIL = default */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} PartitionElem;
typedef enum PartitionStrategy
@@ -871,7 +871,7 @@ typedef struct PartitionSpec
NodeTag type;
PartitionStrategy strategy;
List *partParams; /* List of PartitionElems */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} PartitionSpec;
/*
@@ -898,7 +898,7 @@ struct PartitionBoundSpec
List *lowerdatums; /* List of PartitionRangeDatums */
List *upperdatums; /* List of PartitionRangeDatums */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
};
/*
@@ -921,7 +921,7 @@ typedef struct PartitionRangeDatum
Node *value; /* Const (or A_Const in raw tree), if kind is
* PARTITION_RANGE_DATUM_VALUE, else NULL */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} PartitionRangeDatum;
/*
@@ -1454,7 +1454,7 @@ typedef struct GroupingSet
NodeTag type;
GroupingSetKind kind pg_node_attr(query_jumble_ignore);
List *content;
- int location;
+ Location location;
} GroupingSet;
/*
@@ -1542,7 +1542,7 @@ typedef struct WithClause
NodeTag type;
List *ctes; /* list of CommonTableExprs */
bool recursive; /* true = WITH RECURSIVE */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} WithClause;
/*
@@ -1557,7 +1557,7 @@ typedef struct InferClause
List *indexElems; /* IndexElems to infer unique index */
Node *whereClause; /* qualification (partial-index predicate) */
char *conname; /* Constraint name, or NULL if unnamed */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} InferClause;
/*
@@ -1573,7 +1573,7 @@ typedef struct OnConflictClause
InferClause *infer; /* Optional index inference clause */
List *targetList; /* the target list (of ResTarget) */
Node *whereClause; /* qualifications */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} OnConflictClause;
/*
@@ -1594,7 +1594,7 @@ typedef struct CTESearchClause
List *search_col_list;
bool search_breadth_first;
char *search_seq_column;
- int location;
+ Location location;
} CTESearchClause;
typedef struct CTECycleClause
@@ -1605,7 +1605,7 @@ typedef struct CTECycleClause
Node *cycle_mark_value;
Node *cycle_mark_default;
char *cycle_path_column;
- int location;
+ Location location;
/* These fields are set during parse analysis: */
Oid cycle_mark_type; /* common type of _value and _default */
int cycle_mark_typmod;
@@ -1629,7 +1629,7 @@ typedef struct CommonTableExpr
Node *ctequery; /* the CTE's subquery */
CTESearchClause *search_clause pg_node_attr(query_jumble_ignore);
CTECycleClause *cycle_clause pg_node_attr(query_jumble_ignore);
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
/* These fields are set during parse analysis: */
/* is this CTE actually recursive? */
bool cterecursive pg_node_attr(query_jumble_ignore);
@@ -1725,7 +1725,7 @@ typedef struct JsonParseExpr
JsonValueExpr *expr; /* string expression */
JsonOutput *output; /* RETURNING clause, if specified */
bool unique_keys; /* WITH UNIQUE KEYS? */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} JsonParseExpr;
/*
@@ -1737,7 +1737,7 @@ typedef struct JsonScalarExpr
NodeTag type;
Expr *expr; /* scalar expression */
JsonOutput *output; /* RETURNING clause, if specified */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} JsonScalarExpr;
/*
@@ -1749,7 +1749,7 @@ typedef struct JsonSerializeExpr
NodeTag type;
JsonValueExpr *expr; /* json value expression */
JsonOutput *output; /* RETURNING clause, if specified */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} JsonSerializeExpr;
/*
@@ -1763,7 +1763,7 @@ typedef struct JsonObjectConstructor
JsonOutput *output; /* RETURNING clause, if specified */
bool absent_on_null; /* skip NULL values? */
bool unique; /* check key uniqueness? */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} JsonObjectConstructor;
/*
@@ -1776,7 +1776,7 @@ typedef struct JsonArrayConstructor
List *exprs; /* list of JsonValueExpr elements */
JsonOutput *output; /* RETURNING clause, if specified */
bool absent_on_null; /* skip NULL elements? */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} JsonArrayConstructor;
/*
@@ -1790,7 +1790,7 @@ typedef struct JsonArrayQueryConstructor
JsonOutput *output; /* RETURNING clause, if specified */
JsonFormat *format; /* FORMAT clause for subquery, if specified */
bool absent_on_null; /* skip NULL elements? */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} JsonArrayQueryConstructor;
/*
@@ -1805,7 +1805,7 @@ typedef struct JsonAggConstructor
Node *agg_filter; /* FILTER clause, if any */
List *agg_order; /* ORDER BY clause, if any */
struct WindowDef *over; /* OVER clause, if any */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} JsonAggConstructor;
/*
@@ -1859,8 +1859,8 @@ typedef struct RawStmt
NodeTag type;
Node *stmt; /* raw parse tree */
- int stmt_location; /* start location, or -1 if unknown */
- int stmt_len; /* length in bytes; 0 means "rest of string" */
+ Location stmt_location; /* start location, or -1 if unknown */
+ Location stmt_len; /* length in bytes; 0 means "rest of string" */
} RawStmt;
/*****************************************************************************
@@ -2067,7 +2067,7 @@ typedef struct PLAssignStmt
List *indirection; /* subscripts and field names, if any */
int nnames; /* number of names to use in ColumnRef */
SelectStmt *val; /* the PL/pgSQL expression to assign */
- int location; /* name's token location, or -1 if unknown */
+ Location location; /* name's token location, or -1 if unknown */
} PLAssignStmt;
@@ -2575,7 +2575,7 @@ typedef struct Constraint
char *conname; /* Constraint name, or NULL if unnamed */
bool deferrable; /* DEFERRABLE? */
bool initdeferred; /* INITIALLY DEFERRED? */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
/* Fields used for constraints with expressions (CHECK and DEFAULT): */
bool is_no_inherit; /* is constraint non-inheritable? */
@@ -3528,7 +3528,7 @@ typedef struct TransactionStmt
char *gid pg_node_attr(query_jumble_ignore);
bool chain; /* AND CHAIN option */
/* token location, or -1 if unknown */
- int location pg_node_attr(query_jumble_location);
+ Location location pg_node_attr(query_jumble_location);
} TransactionStmt;
/* ----------------------
@@ -3914,7 +3914,7 @@ typedef struct DeallocateStmt
/* true if DEALLOCATE ALL */
bool isall;
/* token location, or -1 if unknown */
- int location pg_node_attr(query_jumble_location);
+ Location location pg_node_attr(query_jumble_location);
} DeallocateStmt;
/*
@@ -4002,7 +4002,7 @@ typedef struct PublicationObjSpec
PublicationObjSpecType pubobjtype; /* type of this publication object */
char *name;
PublicationTable *pubtable;
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} PublicationObjSpec;
typedef struct CreatePublicationStmt
diff --git a/src/include/nodes/primnodes.h b/src/include/nodes/primnodes.h
index 4a154606d2..557be05657 100644
--- a/src/include/nodes/primnodes.h
+++ b/src/include/nodes/primnodes.h
@@ -30,6 +30,8 @@ typedef enum OverridingKind
} OverridingKind;
+#define Location int
+
/* ----------------------------------------------------------------
* node definitions
* ----------------------------------------------------------------
@@ -91,7 +93,7 @@ typedef struct RangeVar
Alias *alias;
/* token location, or -1 if unknown */
- int location;
+ Location location;
} RangeVar;
/*
@@ -128,7 +130,7 @@ typedef struct TableFunc
/* counts from 0; -1 if none specified */
int ordinalitycol pg_node_attr(query_jumble_ignore);
/* token location, or -1 if unknown */
- int location;
+ Location location;
} TableFunc;
/*
@@ -276,7 +278,7 @@ typedef struct Var
AttrNumber varattnosyn pg_node_attr(equal_ignore, query_jumble_ignore);
/* token location, or -1 if unknown */
- int location;
+ Location location;
} Var;
/*
@@ -318,7 +320,7 @@ typedef struct Const
* token location, or -1 if unknown. All constants are tracked as
* locations in query jumbling, to be marked as parameters.
*/
- int location pg_node_attr(query_jumble_location);
+ Location location pg_node_attr(query_jumble_location);
} Const;
/*
@@ -367,7 +369,7 @@ typedef struct Param
/* OID of collation, or InvalidOid if none */
Oid paramcollid pg_node_attr(query_jumble_ignore);
/* token location, or -1 if unknown */
- int location;
+ Location location;
} Param;
/*
@@ -490,7 +492,7 @@ typedef struct Aggref
int aggtransno pg_node_attr(query_jumble_ignore);
/* token location, or -1 if unknown */
- int location;
+ Location location;
} Aggref;
/*
@@ -537,7 +539,7 @@ typedef struct GroupingFunc
Index agglevelsup;
/* token location */
- int location;
+ Location location;
} GroupingFunc;
/*
@@ -568,7 +570,7 @@ typedef struct WindowFunc
/* is function a simple aggregate? */
bool winagg pg_node_attr(query_jumble_ignore);
/* token location, or -1 if unknown */
- int location;
+ Location location;
} WindowFunc;
/*
@@ -702,7 +704,7 @@ typedef struct FuncExpr
/* arguments to the function */
List *args;
/* token location, or -1 if unknown */
- int location;
+ Location location;
} FuncExpr;
/*
@@ -729,7 +731,7 @@ typedef struct NamedArgExpr
/* argument's number in positional notation */
int argnumber;
/* argument name location, or -1 if unknown */
- int location;
+ Location location;
} NamedArgExpr;
/*
@@ -771,7 +773,7 @@ typedef struct OpExpr
List *args;
/* token location, or -1 if unknown */
- int location;
+ Location location;
} OpExpr;
/*
@@ -851,7 +853,7 @@ typedef struct ScalarArrayOpExpr
List *args;
/* token location, or -1 if unknown */
- int location;
+ Location location;
} ScalarArrayOpExpr;
/*
@@ -873,7 +875,7 @@ typedef struct BoolExpr
Expr xpr;
BoolExprType boolop;
List *args; /* arguments to this expression */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} BoolExpr;
/*
@@ -950,7 +952,7 @@ typedef struct SubLink
List *operName pg_node_attr(query_jumble_ignore);
/* subselect as Query* or raw parsetree */
Node *subselect;
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} SubLink;
/*
@@ -1124,7 +1126,7 @@ typedef struct RelabelType
Oid resultcollid pg_node_attr(query_jumble_ignore);
/* how to display this node */
CoercionForm relabelformat pg_node_attr(query_jumble_ignore);
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} RelabelType;
/* ----------------
@@ -1146,7 +1148,7 @@ typedef struct CoerceViaIO
Oid resultcollid pg_node_attr(query_jumble_ignore);
/* how to display this node */
CoercionForm coerceformat pg_node_attr(query_jumble_ignore);
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} CoerceViaIO;
/* ----------------
@@ -1174,7 +1176,7 @@ typedef struct ArrayCoerceExpr
Oid resultcollid pg_node_attr(query_jumble_ignore);
/* how to display this node */
CoercionForm coerceformat pg_node_attr(query_jumble_ignore);
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} ArrayCoerceExpr;
/* ----------------
@@ -1198,7 +1200,7 @@ typedef struct ConvertRowtypeExpr
/* Like RowExpr, we deliberately omit a typmod and collation here */
/* how to display this node */
CoercionForm convertformat pg_node_attr(query_jumble_ignore);
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} ConvertRowtypeExpr;
/*----------
@@ -1213,7 +1215,7 @@ typedef struct CollateExpr
Expr xpr;
Expr *arg; /* input expression */
Oid collOid; /* collation's OID */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} CollateExpr;
/*----------
@@ -1248,7 +1250,7 @@ typedef struct CaseExpr
Expr *arg; /* implicit equality comparison argument */
List *args; /* the arguments (list of WHEN clauses) */
Expr *defresult; /* the default result (ELSE clause) */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} CaseExpr;
/*
@@ -1259,7 +1261,7 @@ typedef struct CaseWhen
Expr xpr;
Expr *expr; /* condition expression */
Expr *result; /* substitution result */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} CaseWhen;
/*
@@ -1316,7 +1318,7 @@ typedef struct ArrayExpr
/* true if elements are sub-arrays */
bool multidims pg_node_attr(query_jumble_ignore);
/* token location, or -1 if unknown */
- int location;
+ Location location;
} ArrayExpr;
/*
@@ -1367,7 +1369,7 @@ typedef struct RowExpr
/* list of String, or NIL */
List *colnames pg_node_attr(query_jumble_ignore);
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} RowExpr;
/*
@@ -1426,7 +1428,7 @@ typedef struct CoalesceExpr
/* the arguments */
List *args;
/* token location, or -1 if unknown */
- int location;
+ Location location;
} CoalesceExpr;
/*
@@ -1452,7 +1454,7 @@ typedef struct MinMaxExpr
/* the arguments */
List *args;
/* token location, or -1 if unknown */
- int location;
+ Location location;
} MinMaxExpr;
/*
@@ -1496,7 +1498,7 @@ typedef struct SQLValueFunction
*/
Oid type pg_node_attr(query_jumble_ignore);
int32 typmod;
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} SQLValueFunction;
/*
@@ -1549,7 +1551,7 @@ typedef struct XmlExpr
Oid type pg_node_attr(query_jumble_ignore);
int32 typmod pg_node_attr(query_jumble_ignore);
/* token location, or -1 if unknown */
- int location;
+ Location location;
} XmlExpr;
/*
@@ -1585,7 +1587,7 @@ typedef struct JsonFormat
NodeTag type;
JsonFormatType format_type; /* format type */
JsonEncoding encoding; /* JSON encoding */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} JsonFormat;
/*
@@ -1641,7 +1643,7 @@ typedef struct JsonConstructorExpr
JsonReturning *returning; /* RETURNING clause */
bool absent_on_null; /* ABSENT ON NULL? */
bool unique; /* WITH UNIQUE KEYS? (JSON_OBJECT[AGG] only) */
- int location;
+ Location location;
} JsonConstructorExpr;
/*
@@ -1667,7 +1669,7 @@ typedef struct JsonIsPredicate
JsonFormat *format; /* FORMAT clause, if specified */
JsonValueType item_type; /* JSON item type */
bool unique_keys; /* check key uniqueness? */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} JsonIsPredicate;
/* ----------------
@@ -1701,7 +1703,7 @@ typedef struct NullTest
NullTestType nulltesttype; /* IS NULL, IS NOT NULL */
/* T to perform field-by-field null checks */
bool argisrow pg_node_attr(query_jumble_ignore);
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} NullTest;
/*
@@ -1723,7 +1725,7 @@ typedef struct BooleanTest
Expr xpr;
Expr *arg; /* input expression */
BoolTestType booltesttype; /* test type */
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} BooleanTest;
@@ -1765,7 +1767,7 @@ typedef struct CoerceToDomain
Oid resultcollid pg_node_attr(query_jumble_ignore);
/* how to display this node */
CoercionForm coercionformat pg_node_attr(query_jumble_ignore);
- int location; /* token location, or -1 if unknown */
+ Location location; /* token location, or -1 if unknown */
} CoerceToDomain;
/*
@@ -1787,7 +1789,7 @@ typedef struct CoerceToDomainValue
/* collation for the substituted value */
Oid collation pg_node_attr(query_jumble_ignore);
/* token location, or -1 if unknown */
- int location;
+ Location location;
} CoerceToDomainValue;
/*
@@ -1807,7 +1809,7 @@ typedef struct SetToDefault
/* collation for the substituted value */
Oid collation pg_node_attr(query_jumble_ignore);
/* token location, or -1 if unknown */
- int location;
+ Location location;
} SetToDefault;
/*
--
2.40.1