diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2024-03-19 16:55:00 +0100 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2024-03-19 16:56:44 +0100 |
commit | 605721f819f5b603db6bc1405ef414747d182116 (patch) | |
tree | 3d6bcb38620e4debf2ded3443aaf1a062702ea1d /src/include/nodes/parsenodes.h | |
parent | 347758b1206364e3bec5ad6cd649b4ba9fe1be7b (diff) | |
download | postgresql-605721f819f5b603db6bc1405ef414747d182116.tar.gz postgresql-605721f819f5b603db6bc1405ef414747d182116.zip |
gen_node_support.pl: Mark location fields as type alias ParseLoc
Instead of the rather ugly type=int + name ~= location$, we now have a
marker 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.
Author: Matthias van de Meent <boekewurm+postgres@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/CAEze2WgrCiR3JZmWyB0YTc8HV7ewRdx13j0CqD6mVkYAW+SFGQ@mail.gmail.com
Diffstat (limited to 'src/include/nodes/parsenodes.h')
-rw-r--r-- | src/include/nodes/parsenodes.h | 92 |
1 files changed, 46 insertions, 46 deletions
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 7b57fddf2d0..1e2e898851f 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -234,9 +234,9 @@ typedef struct Query * both be -1 meaning "unknown". */ /* start location, or -1 if unknown */ - int stmt_location; + ParseLoc stmt_location; /* length in bytes; 0 means "rest of string" */ - int stmt_len pg_node_attr(query_jumble_ignore); + ParseLoc stmt_len pg_node_attr(query_jumble_ignore); } Query; @@ -271,7 +271,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } TypeName; /* @@ -291,7 +291,7 @@ typedef struct ColumnRef { NodeTag type; List *fields; /* field names (String nodes) or A_Star */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } ColumnRef; /* @@ -301,7 +301,7 @@ typedef struct ParamRef { NodeTag type; int number; /* the number of the parameter */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } ParamRef; /* @@ -334,7 +334,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } A_Expr; /* @@ -360,7 +360,7 @@ typedef struct A_Const NodeTag type; union ValUnion val; bool isnull; /* SQL NULL constant */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } A_Const; /* @@ -371,7 +371,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } TypeCast; /* @@ -382,7 +382,7 @@ typedef struct CollateClause NodeTag type; Node *arg; /* input expression */ List *collname; /* possibly-qualified collation name */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } CollateClause; /* @@ -402,7 +402,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } RoleSpec; /* @@ -432,7 +432,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } FuncCall; /* @@ -489,7 +489,7 @@ typedef struct A_ArrayExpr { NodeTag type; List *elements; /* array element expressions */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } A_ArrayExpr; /* @@ -516,7 +516,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } ResTarget; /* @@ -546,7 +546,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 */ + ParseLoc location; /* operator location, or -1 if none/unknown */ } SortBy; /* @@ -567,7 +567,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 */ + ParseLoc location; /* parse location, or -1 if none/unknown */ } WindowDef; /* @@ -657,7 +657,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } RangeTableFunc; /* @@ -675,7 +675,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } RangeTableFuncCol; /* @@ -695,7 +695,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 */ + ParseLoc location; /* method name location, or -1 if unknown */ } RangeTableSample; /* @@ -738,7 +738,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 */ + ParseLoc location; /* parse location, or -1 if none/unknown */ } ColumnDef; /* @@ -812,7 +812,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } DefElem; /* @@ -842,7 +842,7 @@ typedef struct XmlSerialize Node *expr; TypeName *typeName; bool indent; /* [NO] INDENT */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } XmlSerialize; /* Partitioning related definitions */ @@ -860,7 +860,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } PartitionElem; typedef enum PartitionStrategy @@ -880,7 +880,7 @@ typedef struct PartitionSpec NodeTag type; PartitionStrategy strategy; List *partParams; /* List of PartitionElems */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } PartitionSpec; /* @@ -907,7 +907,7 @@ struct PartitionBoundSpec List *lowerdatums; /* List of PartitionRangeDatums */ List *upperdatums; /* List of PartitionRangeDatums */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ }; /* @@ -930,7 +930,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } PartitionRangeDatum; /* @@ -1466,7 +1466,7 @@ typedef struct GroupingSet NodeTag type; GroupingSetKind kind pg_node_attr(query_jumble_ignore); List *content; - int location; + ParseLoc location; } GroupingSet; /* @@ -1554,7 +1554,7 @@ typedef struct WithClause NodeTag type; List *ctes; /* list of CommonTableExprs */ bool recursive; /* true = WITH RECURSIVE */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } WithClause; /* @@ -1569,7 +1569,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } InferClause; /* @@ -1585,7 +1585,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } OnConflictClause; /* @@ -1606,7 +1606,7 @@ typedef struct CTESearchClause List *search_col_list; bool search_breadth_first; char *search_seq_column; - int location; + ParseLoc location; } CTESearchClause; typedef struct CTECycleClause @@ -1617,7 +1617,7 @@ typedef struct CTECycleClause Node *cycle_mark_value; Node *cycle_mark_default; char *cycle_path_column; - int location; + ParseLoc location; /* These fields are set during parse analysis: */ Oid cycle_mark_type; /* common type of _value and _default */ int cycle_mark_typmod; @@ -1641,7 +1641,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 */ + ParseLoc 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); @@ -1737,7 +1737,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } JsonParseExpr; /* @@ -1749,7 +1749,7 @@ typedef struct JsonScalarExpr NodeTag type; Expr *expr; /* scalar expression */ JsonOutput *output; /* RETURNING clause, if specified */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } JsonScalarExpr; /* @@ -1761,7 +1761,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } JsonSerializeExpr; /* @@ -1775,7 +1775,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } JsonObjectConstructor; /* @@ -1788,7 +1788,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } JsonArrayConstructor; /* @@ -1802,7 +1802,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } JsonArrayQueryConstructor; /* @@ -1817,7 +1817,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 */ + ParseLoc location; /* token location, or -1 if unknown */ } JsonAggConstructor; /* @@ -1871,8 +1871,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" */ + ParseLoc stmt_location; /* start location, or -1 if unknown */ + ParseLoc stmt_len; /* length in bytes; 0 means "rest of string" */ } RawStmt; /***************************************************************************** @@ -2080,7 +2080,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 */ + ParseLoc location; /* name's token location, or -1 if unknown */ } PLAssignStmt; @@ -2622,7 +2622,7 @@ typedef struct Constraint Oid old_pktable_oid; /* pg_constraint.confrelid of my former * self */ - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } Constraint; /* ---------------------- @@ -3529,7 +3529,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); + ParseLoc location pg_node_attr(query_jumble_location); } TransactionStmt; /* ---------------------- @@ -3915,7 +3915,7 @@ typedef struct DeallocateStmt /* true if DEALLOCATE ALL */ bool isall; /* token location, or -1 if unknown */ - int location pg_node_attr(query_jumble_location); + ParseLoc location pg_node_attr(query_jumble_location); } DeallocateStmt; /* @@ -4003,7 +4003,7 @@ typedef struct PublicationObjSpec PublicationObjSpecType pubobjtype; /* type of this publication object */ char *name; PublicationTable *pubtable; - int location; /* token location, or -1 if unknown */ + ParseLoc location; /* token location, or -1 if unknown */ } PublicationObjSpec; typedef struct CreatePublicationStmt |