From c1b2124efead3d572e9cb941d0051026208387d2 Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: Wed, 29 Mar 2023 20:09:12 +0200
Subject: [PATCH v15 1/2] backtrack on making WITHOUT_LA be for UNIQUE rather
 than TIME

---
 src/backend/parser/gram.y            | 10 +++++-----
 src/backend/parser/parser.c          |  4 ++--
 src/interfaces/ecpg/preproc/parser.c |  4 ++--
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 1b5daf6734..b1fca04682 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -824,7 +824,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
 /* SQL/JSON related keywords */
 %nonassoc	UNIQUE JSON
 %nonassoc	KEYS OBJECT_P SCALAR VALUE_P
-%nonassoc	WITH WITHOUT_LA
+%nonassoc	WITH WITHOUT
 
 /*
  * To support target_el without AS, it used to be necessary to assign IDENT an
@@ -14313,7 +14313,7 @@ ConstInterval:
 
 opt_timezone:
 			WITH_LA TIME ZONE						{ $$ = true; }
-			| WITHOUT TIME ZONE						{ $$ = false; }
+			| WITHOUT_LA TIME ZONE					{ $$ = false; }
 			| /*EMPTY*/								{ $$ = false; }
 		;
 
@@ -16464,9 +16464,9 @@ json_predicate_type_constraint:
 json_key_uniqueness_constraint_opt:
 			WITH UNIQUE KEYS							{ $$ = true; }
 			| WITH UNIQUE								{ $$ = true; }
-			| WITHOUT_LA UNIQUE KEYS					{ $$ = false; }
-			| WITHOUT_LA UNIQUE							{ $$ = false; }
-			| /* EMPTY */ 				%prec KEYS		{ $$ = false; }
+			| WITHOUT UNIQUE KEYS						{ $$ = false; }
+			| WITHOUT UNIQUE							{ $$ = false; }
+			| /* EMPTY */				%prec KEYS		{ $$ = false; }
 		;
 
 json_name_and_value_list:
diff --git a/src/backend/parser/parser.c b/src/backend/parser/parser.c
index 65eb087657..e17c310cc1 100644
--- a/src/backend/parser/parser.c
+++ b/src/backend/parser/parser.c
@@ -241,10 +241,10 @@ base_yylex(YYSTYPE *lvalp, YYLTYPE *llocp, core_yyscan_t yyscanner)
 			break;
 
 		case WITHOUT:
-			/* Replace WITHOUT by WITHOUT_LA if it's followed by UNIQUE */
+			/* Replace WITHOUT by WITHOUT_LA if it's followed by TIME */
 			switch (next_token)
 			{
-				case UNIQUE:
+				case TIME:
 					cur_token = WITHOUT_LA;
 					break;
 			}
diff --git a/src/interfaces/ecpg/preproc/parser.c b/src/interfaces/ecpg/preproc/parser.c
index a40f4bef09..38e7acb680 100644
--- a/src/interfaces/ecpg/preproc/parser.c
+++ b/src/interfaces/ecpg/preproc/parser.c
@@ -159,10 +159,10 @@ filtered_base_yylex(void)
 			break;
 
 		case WITHOUT:
-			/* Replace WITHOUT by WITHOUT_LA if it's followed by UNIQUE */
+			/* Replace WITHOUT by WITHOUT_LA if it's followed by TIME */
 			switch (next_token)
 			{
-				case UNIQUE:
+				case TIME:
 					cur_token = WITHOUT_LA;
 					break;
 			}
-- 
2.30.2

