mirror of
https://github.com/postgres/postgres.git
synced 2025-07-31 22:04:40 +03:00
Code review for recent SQL/JSON commits
- At the last minute and for no particularly good reason, I changed the
WITHOUT token to be marked especially for lookahead, from the one in
WITHOUT TIME to the one in WITHOUT UNIQUE. Study of upcoming patches
(where a new WITHOUT ARRAY WRAPPER clause is added) showed me that the
former was better, so put it back the way the original patch had it.
- update exprTypmod() for JsonConstructorExpr to return the typmod of
the RETURNING clause, as a comment there suggested. Perhaps it's
possible for this to make a difference with datetime types, but I
didn't try to build a test case.
- The nodeFuncs.c support code for new nodes was calling walker()
directly instead of the WALK() macro as introduced by commit 1c27d16e6e
.
Modernize that. Also add exprLocation() support for a couple of nodes
that missed it. Lastly, reorder the code more sensibly.
The WITHOUT_LA -> WITHOUT change means that stored rules containing
either WITHOUT TIME ZONE or WITHOUT UNIQUE KEYS would change
representation. Therefore, bump catversion.
Discussion: https://postgr.es/m/20230329181708.e64g2tpy7jyufqkr@alvherre.pgsql
This commit is contained in:
@ -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,8 +16464,8 @@ 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; }
|
||||
| WITHOUT UNIQUE KEYS { $$ = false; }
|
||||
| WITHOUT UNIQUE { $$ = false; }
|
||||
| /* EMPTY */ %prec KEYS { $$ = false; }
|
||||
;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user