@@ -240,7 +240,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
240
240
241
241
MATERIALIZED MATCH MAPPING MAXVALUE MERGE METHOD MINVALUE MINUTE_P MONTH_P MODE MOVE
242
242
243
- NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NEW NFC NFD NFKC NFKD NO NONE NORMALIZE NORMALIZED NOT NOTHING NOTNULL NOWAIT NULL_P NULLIF NULLS_LA NUMERIC
243
+ NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NEW NFC NFD NFKC NFKD NO NONE NORMALIZE NORMALIZED NOT NOTHING NOTNULL NOWAIT NULL_P NULLIF NUMERIC
244
244
NOTIFY
245
245
246
246
OBJECT_P OPERATOR_P OF OFF OFFSET OIDS ON ONLY OPTION OPTIONS OPTIONAL OTHERS OR ORDINALITY OLD ORDER OUT_P OUTER OVER OVERRIDING OVERLAPS OVERLAY OWNED OWNER
@@ -735,26 +735,28 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
735
735
%type <list> hash_partbound
736
736
%type <defelt> hash_partbound_elem
737
737
738
+ %token NOT_LA NULLS_LA WITH_LA
739
+
738
740
/* precedence: lowest to highest */
739
- %nonassoc SET /* see relation_expr_opt_alias */
740
- %left UNION INTERSECT EXCEPT
741
- %left OR
741
+ %nonassoc SET /* see relation_expr_opt_alias */
742
+ %left UNION EXCEPT
743
+ %left INTERSECT
744
+ %left OR XOR
742
745
%left AND
743
- %left XOR
744
746
%right NOT
745
- %nonassoc IS ISNULL NOTNULL /* IS sets precedence for IS NULL, etc */
746
- %nonassoc ' =' NOT_EQ ' <' LT_EQ ' >' GT_EQ ' ~' ' !'
747
- %nonassoc IN BETWEEN LIKE ILIKE
748
- %nonassoc CONTAINS ENDS EQ_TILDE STARTS SIMILAR
747
+ %nonassoc IS ISNULL NOTNULL /* IS sets precedence for IS NULL, etc */
748
+ %nonassoc ' <' ' >' ' =' NOT_EQ LT_EQ GT_EQ
749
+ %nonassoc BETWEEN IN LIKE ILIKE SIMILAR
749
750
%nonassoc ESCAPE
750
- %nonassoc UNBOUNDED /* ideally would have same precedence as IDENT */
751
- %nonassoc IDENTIFIER PARTITION RANGE ROWS GROUPS PRECEDING FOLLOWING CUBE ROLLUP
752
-
753
- %left OPERATOR RIGHT_ARROW COLON_EQUALS OPERATOR_P
751
+ %nonassoc UNBOUNDED /* ideally would have same precedence as IDENT */
752
+ %nonassoc IDENTIFIER PARTITION RANGE ROWS GROUPS PRECEDING FOLLOWING CUBE ROLLUP
753
+ %left OPERATOR RIGHT_ARROW OPERATOR_P
754
754
%left ' +' ' -'
755
755
%left ' *' ' /' ' %'
756
- %left ' ^' ' &' ' |'
757
-
756
+ %left ' ^'
757
+ /* Unary Operators */
758
+ %left AT /* sets precedence for AT TIME ZONE */
759
+ %left COLLATE
758
760
%right UNARY_MINUS
759
761
%left ' [' ' ]'
760
762
%left ' (' ' )'
@@ -898,10 +900,10 @@ stmtmulti: stmtmulti ';' stmt
898
900
* query
899
901
*/
900
902
stmt :
901
- cypher_stmt { $$ = (Node *)$1 ; }
902
- | CreateGraphStmt
903
- | DropGraphStmt
904
- | UseGraphStmt
903
+ cypher_stmt { $$ = (Node *)$1 ; }
904
+ | CreateGraphStmt
905
+ | DropGraphStmt
906
+ | UseGraphStmt
905
907
| TransactionStmtLegacy
906
908
| AlterEventTrigStmt
907
909
| AlterCollationStmt
@@ -1307,6 +1309,13 @@ with_clause:
1307
1309
$$ ->recursive = false ;
1308
1310
$$ ->location = @1 ;
1309
1311
}
1312
+ | WITH_LA cte_list
1313
+ {
1314
+ $$ = makeNode(WithClause);
1315
+ $$ ->ctes = $2 ;
1316
+ $$ ->recursive = false ;
1317
+ $$ ->location = @1 ;
1318
+ }
1310
1319
| WITH RECURSIVE cte_list
1311
1320
{
1312
1321
$$ = makeNode(WithClause);
@@ -4219,7 +4228,7 @@ single_query:
4219
4228
;
4220
4229
4221
4230
cypher_query_start :
4222
- create
4231
+ create
4223
4232
| match
4224
4233
| CYPHER with { $$ = $2 ; }
4225
4234
| merge
@@ -4237,10 +4246,10 @@ cypher_query_body:
4237
4246
{
4238
4247
$$ = lappend($1 , $2 );
4239
4248
}
4240
- | // Empty
4241
- {
4249
+ // | // Empty
4250
+ /* {
4242
4251
$$ = NIL;
4243
- }
4252
+ }*/
4244
4253
;
4245
4254
4246
4255
clause :
@@ -6446,6 +6455,7 @@ AlterTSConfigurationStmt:
6446
6455
6447
6456
/* Use this if TIME or ORDINALITY after WITH should be taken as an identifier */
6448
6457
any_with : WITH
6458
+ | WITH_LA
6449
6459
;
6450
6460
6451
6461
@@ -10968,6 +10978,7 @@ CreateRoleStmt:
10968
10978
;
10969
10979
10970
10980
opt_with : WITH
10981
+ | WITH_LA
10971
10982
| /* EMPTY*/
10972
10983
;
10973
10984
@@ -13220,7 +13231,7 @@ opt_col_def_list: AS '(' TableFuncElementList ')' { $$ = $3; }
13220
13231
| /* EMPTY*/ { $$ = NIL; }
13221
13232
;
13222
13233
13223
- opt_ordinality : WITH ORDINALITY { $$ = true ; }
13234
+ opt_ordinality : WITH_LA ORDINALITY { $$ = true ; }
13224
13235
| /* EMPTY*/ { $$ = false ; }
13225
13236
;
13226
13237
@@ -15399,7 +15410,7 @@ ConstInterval:
15399
15410
;
15400
15411
15401
15412
opt_timezone:
15402
- WITH TIME ZONE { $$ = true ; }
15413
+ WITH_LA TIME ZONE { $$ = true ; }
15403
15414
| WITHOUT TIME ZONE { $$ = false ; }
15404
15415
| /* EMPTY*/ { $$ = false ; }
15405
15416
;
@@ -15813,7 +15824,7 @@ unreserved_keyword:
15813
15824
| NOTHING
15814
15825
| NOTIFY
15815
15826
| NOWAIT
15816
- | NULLS_LA
15827
+ // | NULLS_LA
15817
15828
| OBJECT_P
15818
15829
| OF
15819
15830
| OFF
@@ -16304,7 +16315,7 @@ bare_label_keyword:
16304
16315
| NOWAIT
16305
16316
| NULL_P
16306
16317
| NULLIF
16307
- | NULLS_LA
16318
+ // | NULLS_LA
16308
16319
| NUMERIC
16309
16320
| OBJECT_P
16310
16321
| OF
@@ -17073,7 +17084,7 @@ cypher_a_expr:
17073
17084
{
17074
17085
$$ = (Node *)makeSimpleA_Expr (AEXPR_OP, " ~" , $1 , $3 , @2 );
17075
17086
}
17076
- | cypher_a_expr ' [' cypher_a_expr ' ]' %prec UMINUS
17087
+ | cypher_a_expr ' [' cypher_a_expr ' ]' %prec UNARY_MINUS
17077
17088
{
17078
17089
A_Indices *i;
17079
17090
0 commit comments