]> granicus.if.org Git - postgresql/commitdiff
Remove 13 keywords that are used only for ROLE options.
authorRobert Haas <rhaas@postgresql.org>
Tue, 15 Mar 2011 14:22:58 +0000 (10:22 -0400)
committerRobert Haas <rhaas@postgresql.org>
Tue, 15 Mar 2011 14:22:58 +0000 (10:22 -0400)
Review by Tom Lane.

src/backend/parser/gram.y
src/include/parser/kwlist.h

index 1633499f93974b2e0c1cf634f8ef2738cd292c02..7c94aadf3b93d262d756738d0e2d9760eefeea16 100644 (file)
@@ -489,8 +489,8 @@ static void SplitColQualList(List *qualList,
        CHARACTER CHARACTERISTICS CHECK CHECKPOINT CLASS CLOSE
        CLUSTER COALESCE COLLATE COLLATION COLUMN COMMENT COMMENTS COMMIT
        COMMITTED CONCURRENTLY CONFIGURATION CONNECTION CONSTRAINT CONSTRAINTS
-       CONTENT_P CONTINUE_P CONVERSION_P COPY COST CREATE CREATEDB
-       CREATEROLE CREATEUSER CROSS CSV CURRENT_P
+       CONTENT_P CONTINUE_P CONVERSION_P COPY COST CREATE
+       CROSS CSV CURRENT_P
        CURRENT_CATALOG CURRENT_DATE CURRENT_ROLE CURRENT_SCHEMA
        CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE
 
@@ -520,13 +520,12 @@ static void SplitColQualList(List *qualList,
 
        LABEL LANGUAGE LARGE_P LAST_P LC_COLLATE_P LC_CTYPE_P LEADING
        LEAST LEFT LEVEL LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP
-       LOCATION LOCK_P LOGIN_P
+       LOCATION LOCK_P
 
        MAPPING MATCH MAXVALUE MINUTE_P MINVALUE MODE MONTH_P MOVE
 
-       NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NO NOCREATEDB
-       NOCREATEROLE NOCREATEUSER NOINHERIT NOLOGIN_P NONE NOREPLICATION_P
-       NOSUPERUSER NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF
+       NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NO NONE
+       NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLIF
        NULLS_P NUMERIC
 
        OBJECT_P OF OFF OFFSET OIDS ON ONLY OPERATOR OPTION OPTIONS OR
@@ -539,14 +538,14 @@ static void SplitColQualList(List *qualList,
        QUOTE
 
        RANGE READ REAL REASSIGN RECHECK RECURSIVE REF REFERENCES REINDEX
-       RELATIVE_P RELEASE RENAME REPEATABLE REPLACE REPLICA REPLICATION_P
+       RELATIVE_P RELEASE RENAME REPEATABLE REPLACE REPLICA
        RESET RESTART RESTRICT RETURNING RETURNS REVOKE RIGHT ROLE ROLLBACK
        ROW ROWS RULE
 
        SAVEPOINT SCHEMA SCROLL SEARCH SECOND_P SECURITY SELECT SEQUENCE SEQUENCES
        SERIALIZABLE SERVER SESSION SESSION_USER SET SETOF SHARE
        SHOW SIMILAR SIMPLE SMALLINT SOME STABLE STANDALONE_P START STATEMENT
-       STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING SUPERUSER_P
+       STATISTICS STDIN STDOUT STORAGE STRICT_P STRIP_P SUBSTRING
        SYMMETRIC SYSID SYSTEM_P
 
        TABLE TABLES TABLESPACE TEMP TEMPLATE TEMPORARY TEXT_P THEN TIME TIMESTAMP
@@ -838,63 +837,10 @@ AlterOptRoleElem:
                                        $$ = makeDefElem("unencryptedPassword",
                                                                         (Node *)makeString($3));
                                }
-                       | SUPERUSER_P
-                               {
-                                       $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE));
-                               }
-                       | NOSUPERUSER
-                               {
-                                       $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE));
-                               }
                        | INHERIT
                                {
                                        $$ = makeDefElem("inherit", (Node *)makeInteger(TRUE));
                                }
-                       | NOINHERIT
-                               {
-                                       $$ = makeDefElem("inherit", (Node *)makeInteger(FALSE));
-                               }
-                       | CREATEDB
-                               {
-                                       $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE));
-                               }
-                       | NOCREATEDB
-                               {
-                                       $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE));
-                               }
-                       | CREATEROLE
-                               {
-                                       $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE));
-                               }
-                       | NOCREATEROLE
-                               {
-                                       $$ = makeDefElem("createrole", (Node *)makeInteger(FALSE));
-                               }
-                       | CREATEUSER
-                               {
-                                       /* For backwards compatibility, synonym for SUPERUSER */
-                                       $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE));
-                               }
-                       | NOCREATEUSER
-                               {
-                                       $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE));
-                               }
-                       | LOGIN_P
-                               {
-                                       $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE));
-                               }
-                       | NOLOGIN_P
-                               {
-                                       $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE));
-                               }
-                       | REPLICATION_P
-                               {
-                                       $$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE));
-                               }
-                       | NOREPLICATION_P
-                               {
-                                       $$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE));
-                               }
                        | CONNECTION LIMIT SignedIconst
                                {
                                        $$ = makeDefElem("connectionlimit", (Node *)makeInteger($3));
@@ -908,6 +854,57 @@ AlterOptRoleElem:
                                {
                                        $$ = makeDefElem("rolemembers", (Node *)$2);
                                }
+                       | IDENT
+                               {
+                                       /*
+                                        * We handle identifiers that aren't parser keywords with
+                                        * the following special-case codes, to avoid bloating the
+                                        * size of the main parser.
+                                        */
+                                       if (strcmp($1, "superuser") == 0)
+                                               $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE));
+                                       else if (strcmp($1, "nosuperuser") == 0)
+                                               $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE));
+                                       else if (strcmp($1, "createuser") == 0)
+                                       {
+                                               /* For backwards compatibility, synonym for SUPERUSER */
+                                               $$ = makeDefElem("superuser", (Node *)makeInteger(TRUE));
+                                       }
+                                       else if (strcmp($1, "nocreateuser") == 0)
+                                       {
+                                               /* For backwards compatibility, synonym for SUPERUSER */
+                                               $$ = makeDefElem("superuser", (Node *)makeInteger(FALSE));
+                                       }
+                                       else if (strcmp($1, "createrole") == 0)
+                                               $$ = makeDefElem("createrole", (Node *)makeInteger(TRUE));
+                                       else if (strcmp($1, "nocreaterole") == 0)
+                                               $$ = makeDefElem("createrole", (Node *)makeInteger(FALSE));
+                                       else if (strcmp($1, "replication") == 0)
+                                               $$ = makeDefElem("isreplication", (Node *)makeInteger(TRUE));
+                                       else if (strcmp($1, "noreplication") == 0)
+                                               $$ = makeDefElem("isreplication", (Node *)makeInteger(FALSE));
+                                       else if (strcmp($1, "createdb") == 0)
+                                               $$ = makeDefElem("createdb", (Node *)makeInteger(TRUE));
+                                       else if (strcmp($1, "nocreatedb") == 0)
+                                               $$ = makeDefElem("createdb", (Node *)makeInteger(FALSE));
+                                       else if (strcmp($1, "login") == 0)
+                                               $$ = makeDefElem("canlogin", (Node *)makeInteger(TRUE));
+                                       else if (strcmp($1, "nologin") == 0)
+                                               $$ = makeDefElem("canlogin", (Node *)makeInteger(FALSE));
+                                       else if (strcmp($1, "noinherit") == 0)
+                                       {
+                                               /*
+                                                * Note that INHERIT is a keyword, so it's handled by main parser, but
+                                                * NOINHERIT is handled here.
+                                                */
+                                               $$ = makeDefElem("inherit", (Node *)makeInteger(FALSE));
+                                       }
+                                       else
+                                               ereport(ERROR,
+                                                               (errcode(ERRCODE_SYNTAX_ERROR),
+                                                                errmsg("unrecognized role option \"%s\"", $1),
+                                                                        parser_errposition(@1)));
+                               }
                ;
 
 CreateOptRoleElem:
@@ -11853,9 +11850,6 @@ unreserved_keyword:
                        | CONVERSION_P
                        | COPY
                        | COST
-                       | CREATEDB
-                       | CREATEROLE
-                       | CREATEUSER
                        | CSV
                        | CURRENT_P
                        | CURSOR
@@ -11935,7 +11929,6 @@ unreserved_keyword:
                        | LOCAL
                        | LOCATION
                        | LOCK_P
-                       | LOGIN_P
                        | MAPPING
                        | MATCH
                        | MAXVALUE
@@ -11948,13 +11941,6 @@ unreserved_keyword:
                        | NAMES
                        | NEXT
                        | NO
-                       | NOCREATEDB
-                       | NOCREATEROLE
-                       | NOCREATEUSER
-                       | NOINHERIT
-                       | NOLOGIN_P
-                       | NOREPLICATION_P
-                       | NOSUPERUSER
                        | NOTHING
                        | NOTIFY
                        | NOWAIT
@@ -11996,7 +11982,6 @@ unreserved_keyword:
                        | REPEATABLE
                        | REPLACE
                        | REPLICA
-                       | REPLICATION_P
                        | RESET
                        | RESTART
                        | RESTRICT
@@ -12031,7 +12016,6 @@ unreserved_keyword:
                        | STORAGE
                        | STRICT_P
                        | STRIP_P
-                       | SUPERUSER_P
                        | SYSID
                        | SYSTEM_P
                        | TABLES
index f288c765925488d0eb427db7a945bb21a044c632..12c2faf3de8fbfb3169c99a360cc15465e425d79 100644 (file)
@@ -96,9 +96,6 @@ PG_KEYWORD("conversion", CONVERSION_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("copy", COPY, UNRESERVED_KEYWORD)
 PG_KEYWORD("cost", COST, UNRESERVED_KEYWORD)
 PG_KEYWORD("create", CREATE, RESERVED_KEYWORD)
-PG_KEYWORD("createdb", CREATEDB, UNRESERVED_KEYWORD)
-PG_KEYWORD("createrole", CREATEROLE, UNRESERVED_KEYWORD)
-PG_KEYWORD("createuser", CREATEUSER, UNRESERVED_KEYWORD)
 PG_KEYWORD("cross", CROSS, TYPE_FUNC_NAME_KEYWORD)
 PG_KEYWORD("csv", CSV, UNRESERVED_KEYWORD)
 PG_KEYWORD("current", CURRENT_P, UNRESERVED_KEYWORD)
@@ -230,7 +227,6 @@ PG_KEYWORD("localtime", LOCALTIME, RESERVED_KEYWORD)
 PG_KEYWORD("localtimestamp", LOCALTIMESTAMP, RESERVED_KEYWORD)
 PG_KEYWORD("location", LOCATION, UNRESERVED_KEYWORD)
 PG_KEYWORD("lock", LOCK_P, UNRESERVED_KEYWORD)
-PG_KEYWORD("login", LOGIN_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("mapping", MAPPING, UNRESERVED_KEYWORD)
 PG_KEYWORD("match", MATCH, UNRESERVED_KEYWORD)
 PG_KEYWORD("maxvalue", MAXVALUE, UNRESERVED_KEYWORD)
@@ -246,14 +242,7 @@ PG_KEYWORD("natural", NATURAL, TYPE_FUNC_NAME_KEYWORD)
 PG_KEYWORD("nchar", NCHAR, COL_NAME_KEYWORD)
 PG_KEYWORD("next", NEXT, UNRESERVED_KEYWORD)
 PG_KEYWORD("no", NO, UNRESERVED_KEYWORD)
-PG_KEYWORD("nocreatedb", NOCREATEDB, UNRESERVED_KEYWORD)
-PG_KEYWORD("nocreaterole", NOCREATEROLE, UNRESERVED_KEYWORD)
-PG_KEYWORD("nocreateuser", NOCREATEUSER, UNRESERVED_KEYWORD)
-PG_KEYWORD("noinherit", NOINHERIT, UNRESERVED_KEYWORD)
-PG_KEYWORD("nologin", NOLOGIN_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("none", NONE, COL_NAME_KEYWORD)
-PG_KEYWORD("noreplication", NOREPLICATION_P, UNRESERVED_KEYWORD)
-PG_KEYWORD("nosuperuser", NOSUPERUSER, UNRESERVED_KEYWORD)
 PG_KEYWORD("not", NOT, RESERVED_KEYWORD)
 PG_KEYWORD("nothing", NOTHING, UNRESERVED_KEYWORD)
 PG_KEYWORD("notify", NOTIFY, UNRESERVED_KEYWORD)
@@ -316,7 +305,6 @@ PG_KEYWORD("rename", RENAME, UNRESERVED_KEYWORD)
 PG_KEYWORD("repeatable", REPEATABLE, UNRESERVED_KEYWORD)
 PG_KEYWORD("replace", REPLACE, UNRESERVED_KEYWORD)
 PG_KEYWORD("replica", REPLICA, UNRESERVED_KEYWORD)
-PG_KEYWORD("replication", REPLICATION_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("reset", RESET, UNRESERVED_KEYWORD)
 PG_KEYWORD("restart", RESTART, UNRESERVED_KEYWORD)
 PG_KEYWORD("restrict", RESTRICT, UNRESERVED_KEYWORD)
@@ -361,7 +349,6 @@ PG_KEYWORD("storage", STORAGE, UNRESERVED_KEYWORD)
 PG_KEYWORD("strict", STRICT_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("strip", STRIP_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("substring", SUBSTRING, COL_NAME_KEYWORD)
-PG_KEYWORD("superuser", SUPERUSER_P, UNRESERVED_KEYWORD)
 PG_KEYWORD("symmetric", SYMMETRIC, RESERVED_KEYWORD)
 PG_KEYWORD("sysid", SYSID, UNRESERVED_KEYWORD)
 PG_KEYWORD("system", SYSTEM_P, UNRESERVED_KEYWORD)