Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 5ca4dfc

Browse files
committed
Remove 13 keywords that are used only for ROLE options.
Review by Tom Lane.
1 parent 01c1a12 commit 5ca4dfc

File tree

2 files changed

+58
-87
lines changed

2 files changed

+58
-87
lines changed

src/backend/parser/gram.y

+58-74
Original file line numberDiff line numberDiff line change
@@ -489,8 +489,8 @@ static void SplitColQualList(List *qualList,
489489
CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE
490490
CLUSTER COALESCE COLLATE COLLATION COLUMN COMMENT COMMENTS COMMIT
491491
COMMITTED CONCURRENTLY CONFIGURATION CONNECTION CONSTRAINT CONSTRAINTS
492-
CONTENT_P CONTINUE_P CONVERSION_P COPY COST CREATE CREATEDB
493-
CREATEROLE CREATEUSER CROSS CSV CURRENT_P
492+
CONTENT_P CONTINUE_P CONVERSION_P COPY COST CREATE
493+
CROSS CSV CURRENT_P
494494
CURRENT_CATALOG CURRENT_DATE CURRENT_ROLE CURRENT_SCHEMA
495495
CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE
496496

@@ -520,13 +520,12 @@ static void SplitColQualList(List *qualList,
520520

521521
LABEL LANGUAGE LARGE_P LAST_P LC_COLLATE_P LC_CTYPE_P LEADING
522522
LEAST LEFT LEVEL LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP
523-
LOCATION LOCK_P LOGIN_P
523+
LOCATION LOCK_P
524524

525525
MAPPING MATCH MAXVALUE MINUTE_P MINVALUE MODE MONTH_P MOVE
526526

527-
NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NO NOCREATEDB
528-
NOCREATEROLE NOCREATEUSER NOINHERIT NOLOGIN_P NONE NOREPLICATION_P
529-
NOSUPERUSER NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF
527+
NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NO NONE
528+
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF
530529
NULLS_P NUMERIC
531530

532531
OBJECT_P OF OFF OFFSET OIDS ON ONLY OPERATOR OPTION OPTIONS OR
@@ -539,14 +538,14 @@ static void SplitColQualList(List *qualList,
539538
QUOTE
540539

541540
RANGE READ REAL REASSIGN RECHECK RECURSIVE REF REFERENCES REINDEX
542-
RELATIVE_P RELEASE RENAME REPEATABLE REPLACE REPLICA REPLICATION_P
541+
RELATIVE_P RELEASE RENAME REPEATABLE REPLACE REPLICA
543542
RESET RESTART RESTRICT RETURNING RETURNS REVOKE RIGHT ROLE ROLLBACK
544543
ROW ROWS RULE
545544

546545
SAVEPOINT SCHEMA SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE SEQUENCES
547546
SERIALIZABLE SERVER SESSION SESSION_USER SET SETOF SHARE
548547
SHOW SIMILAR SIMPLE SMALLINT SOME STABLE STANDALONE_P START STATEMENT
549-
STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING SUPERUSER_P
548+
STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING
550549
SYMMETRIC SYSID SYSTEM_P
551550

552551
TABLE TABLES TABLESPACE TEMP TEMPLATE TEMPORARY TEXT_P THEN TIME TIMESTAMP
@@ -838,63 +837,10 @@ AlterOptRoleElem:
838837
$$ = makeDefElem("unencryptedPassword",
839838
(Node *)makeString($3));
840839
}
841-
| SUPERUSER_P
842-
{
843-
$$ = makeDefElem("superuser", (Node *)makeInteger(TRUE));
844-
}
845-
| NOSUPERUSER
846-
{
847-
$$ = makeDefElem("superuser", (Node *)makeInteger(FALSE));
848-
}
849840
| INHERIT
850841
{
851842
$$ = makeDefElem("inherit", (Node *)makeInteger(TRUE));
852843
}
853-
| NOINHERIT
854-
{
855-
$$ = makeDefElem("inherit", (Node *)makeInteger(FALSE));
856-
}
857-
| CREATEDB
858-
{
859-
$$ = makeDefElem("createdb", (Node *)makeInteger(TRUE));
860-
}
861-
| NOCREATEDB
862-
{
863-
$$ = makeDefElem("createdb", (Node *)makeInteger(FALSE));
864-
}
865-
| CREATEROLE
866-
{
867-
$$ = makeDefElem("createrole", (Node *)makeInteger(TRUE));
868-
}
869-
| NOCREATEROLE
870-
{
871-
$$ = makeDefElem("createrole", (Node *)makeInteger(FALSE));
872-
}
873-
| CREATEUSER
874-
{
875-
/* For backwards compatibility, synonym for SUPERUSER */
876-
$$ = makeDefElem("superuser", (Node *)makeInteger(TRUE));
877-
}
878-
| NOCREATEUSER
879-
{
880-
$$ = makeDefElem("superuser", (Node *)makeInteger(FALSE));
881-
}
882-
| LOGIN_P
883-
{
884-
$$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE));
885-
}
886-
| NOLOGIN_P
887-
{
888-
$$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE));
889-
}
890-
| REPLICATION_P
891-
{
892-
$$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE));
893-
}
894-
| NOREPLICATION_P
895-
{
896-
$$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE));
897-
}
898844
| CONNECTION LIMIT SignedIconst
899845
{
900846
$$ = makeDefElem("connectionlimit", (Node *)makeInteger($3));
@@ -908,6 +854,57 @@ AlterOptRoleElem:
908854
{
909855
$$ = makeDefElem("rolemembers", (Node *)$2);
910856
}
857+
| IDENT
858+
{
859+
/*
860+
* We handle identifiers that aren't parser keywords with
861+
* the following special-case codes, to avoid bloating the
862+
* size of the main parser.
863+
*/
864+
if (strcmp($1, "superuser") == 0)
865+
$$ = makeDefElem("superuser", (Node *)makeInteger(TRUE));
866+
else if (strcmp($1, "nosuperuser") == 0)
867+
$$ = makeDefElem("superuser", (Node *)makeInteger(FALSE));
868+
else if (strcmp($1, "createuser") == 0)
869+
{
870+
/* For backwards compatibility, synonym for SUPERUSER */
871+
$$ = makeDefElem("superuser", (Node *)makeInteger(TRUE));
872+
}
873+
else if (strcmp($1, "nocreateuser") == 0)
874+
{
875+
/* For backwards compatibility, synonym for SUPERUSER */
876+
$$ = makeDefElem("superuser", (Node *)makeInteger(FALSE));
877+
}
878+
else if (strcmp($1, "createrole") == 0)
879+
$$ = makeDefElem("createrole", (Node *)makeInteger(TRUE));
880+
else if (strcmp($1, "nocreaterole") == 0)
881+
$$ = makeDefElem("createrole", (Node *)makeInteger(FALSE));
882+
else if (strcmp($1, "replication") == 0)
883+
$$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE));
884+
else if (strcmp($1, "noreplication") == 0)
885+
$$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE));
886+
else if (strcmp($1, "createdb") == 0)
887+
$$ = makeDefElem("createdb", (Node *)makeInteger(TRUE));
888+
else if (strcmp($1, "nocreatedb") == 0)
889+
$$ = makeDefElem("createdb", (Node *)makeInteger(FALSE));
890+
else if (strcmp($1, "login") == 0)
891+
$$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE));
892+
else if (strcmp($1, "nologin") == 0)
893+
$$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE));
894+
else if (strcmp($1, "noinherit") == 0)
895+
{
896+
/*
897+
* Note that INHERIT is a keyword, so it's handled by main parser, but
898+
* NOINHERIT is handled here.
899+
*/
900+
$$ = makeDefElem("inherit", (Node *)makeInteger(FALSE));
901+
}
902+
else
903+
ereport(ERROR,
904+
(errcode(ERRCODE_SYNTAX_ERROR),
905+
errmsg("unrecognized role option \"%s\"", $1),
906+
parser_errposition(@1)));
907+
}
911908
;
912909

913910
CreateOptRoleElem:
@@ -11853,9 +11850,6 @@ unreserved_keyword:
1185311850
| CONVERSION_P
1185411851
| COPY
1185511852
| COST
11856-
| CREATEDB
11857-
| CREATEROLE
11858-
| CREATEUSER
1185911853
| CSV
1186011854
| CURRENT_P
1186111855
| CURSOR
@@ -11935,7 +11929,6 @@ unreserved_keyword:
1193511929
| LOCAL
1193611930
| LOCATION
1193711931
| LOCK_P
11938-
| LOGIN_P
1193911932
| MAPPING
1194011933
| MATCH
1194111934
| MAXVALUE
@@ -11948,13 +11941,6 @@ unreserved_keyword:
1194811941
| NAMES
1194911942
| NEXT
1195011943
| NO
11951-
| NOCREATEDB
11952-
| NOCREATEROLE
11953-
| NOCREATEUSER
11954-
| NOINHERIT
11955-
| NOLOGIN_P
11956-
| NOREPLICATION_P
11957-
| NOSUPERUSER
1195811944
| NOTHING
1195911945
| NOTIFY
1196011946
| NOWAIT
@@ -11996,7 +11982,6 @@ unreserved_keyword:
1199611982
| REPEATABLE
1199711983
| REPLACE
1199811984
| REPLICA
11999-
| REPLICATION_P
1200011985
| RESET
1200111986
| RESTART
1200211987
| RESTRICT
@@ -12031,7 +12016,6 @@ unreserved_keyword:
1203112016
| STORAGE
1203212017
| STRICT_P
1203312018
| STRIP_P
12034-
| SUPERUSER_P
1203512019
| SYSID
1203612020
| SYSTEM_P
1203712021
| TABLES

src/include/parser/kwlist.h

-13
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,6 @@ PG_KEYWORD("conversion", CONVERSION_P, UNRESERVED_KEYWORD)
9696
PG_KEYWORD("copy", COPY, UNRESERVED_KEYWORD)
9797
PG_KEYWORD("cost", COST, UNRESERVED_KEYWORD)
9898
PG_KEYWORD("create", CREATE, RESERVED_KEYWORD)
99-
PG_KEYWORD("createdb", CREATEDB, UNRESERVED_KEYWORD)
100-
PG_KEYWORD("createrole", CREATEROLE, UNRESERVED_KEYWORD)
101-
PG_KEYWORD("createuser", CREATEUSER, UNRESERVED_KEYWORD)
10299
PG_KEYWORD("cross", CROSS, TYPE_FUNC_NAME_KEYWORD)
103100
PG_KEYWORD("csv", CSV, UNRESERVED_KEYWORD)
104101
PG_KEYWORD("current", CURRENT_P, UNRESERVED_KEYWORD)
@@ -230,7 +227,6 @@ PG_KEYWORD("localtime", LOCALTIME, RESERVED_KEYWORD)
230227
PG_KEYWORD("localtimestamp", LOCALTIMESTAMP, RESERVED_KEYWORD)
231228
PG_KEYWORD("location", LOCATION, UNRESERVED_KEYWORD)
232229
PG_KEYWORD("lock", LOCK_P, UNRESERVED_KEYWORD)
233-
PG_KEYWORD("login", LOGIN_P, UNRESERVED_KEYWORD)
234230
PG_KEYWORD("mapping", MAPPING, UNRESERVED_KEYWORD)
235231
PG_KEYWORD("match", MATCH, UNRESERVED_KEYWORD)
236232
PG_KEYWORD("maxvalue", MAXVALUE, UNRESERVED_KEYWORD)
@@ -246,14 +242,7 @@ PG_KEYWORD("natural", NATURAL, TYPE_FUNC_NAME_KEYWORD)
246242
PG_KEYWORD("nchar", NCHAR, COL_NAME_KEYWORD)
247243
PG_KEYWORD("next", NEXT, UNRESERVED_KEYWORD)
248244
PG_KEYWORD("no", NO, UNRESERVED_KEYWORD)
249-
PG_KEYWORD("nocreatedb", NOCREATEDB, UNRESERVED_KEYWORD)
250-
PG_KEYWORD("nocreaterole", NOCREATEROLE, UNRESERVED_KEYWORD)
251-
PG_KEYWORD("nocreateuser", NOCREATEUSER, UNRESERVED_KEYWORD)
252-
PG_KEYWORD("noinherit", NOINHERIT, UNRESERVED_KEYWORD)
253-
PG_KEYWORD("nologin", NOLOGIN_P, UNRESERVED_KEYWORD)
254245
PG_KEYWORD("none", NONE, COL_NAME_KEYWORD)
255-
PG_KEYWORD("noreplication", NOREPLICATION_P, UNRESERVED_KEYWORD)
256-
PG_KEYWORD("nosuperuser", NOSUPERUSER, UNRESERVED_KEYWORD)
257246
PG_KEYWORD("not", NOT, RESERVED_KEYWORD)
258247
PG_KEYWORD("nothing", NOTHING, UNRESERVED_KEYWORD)
259248
PG_KEYWORD("notify", NOTIFY, UNRESERVED_KEYWORD)
@@ -316,7 +305,6 @@ PG_KEYWORD("rename", RENAME, UNRESERVED_KEYWORD)
316305
PG_KEYWORD("repeatable", REPEATABLE, UNRESERVED_KEYWORD)
317306
PG_KEYWORD("replace", REPLACE, UNRESERVED_KEYWORD)
318307
PG_KEYWORD("replica", REPLICA, UNRESERVED_KEYWORD)
319-
PG_KEYWORD("replication", REPLICATION_P, UNRESERVED_KEYWORD)
320308
PG_KEYWORD("reset", RESET, UNRESERVED_KEYWORD)
321309
PG_KEYWORD("restart", RESTART, UNRESERVED_KEYWORD)
322310
PG_KEYWORD("restrict", RESTRICT, UNRESERVED_KEYWORD)
@@ -361,7 +349,6 @@ PG_KEYWORD("storage", STORAGE, UNRESERVED_KEYWORD)
361349
PG_KEYWORD("strict", STRICT_P, UNRESERVED_KEYWORD)
362350
PG_KEYWORD("strip", STRIP_P, UNRESERVED_KEYWORD)
363351
PG_KEYWORD("substring", SUBSTRING, COL_NAME_KEYWORD)
364-
PG_KEYWORD("superuser", SUPERUSER_P, UNRESERVED_KEYWORD)
365352
PG_KEYWORD("symmetric", SYMMETRIC, RESERVED_KEYWORD)
366353
PG_KEYWORD("sysid", SYSID, UNRESERVED_KEYWORD)
367354
PG_KEYWORD("system", SYSTEM_P, UNRESERVED_KEYWORD)

0 commit comments

Comments
 (0)