diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 70a9e78cfa..999910161d 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.317 2002/05/17 18:32:52 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.318 2002/05/19 15:16:55 petere Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -308,89 +308,77 @@ static void doNegateFloat(Value *v); /* - * If you make any token changes, remember to: - * - use "yacc -d" and update parse.h - * - update the keyword table in parser/keywords.c - */ - -/* Reserved word tokens - * SQL92 syntax has many type-specific constructs. - * So, go ahead and make these types reserved words, - * and call-out the syntax explicitly. - * This gets annoying when trying to also retain Postgres' nice - * type-extensible features, but we don't really have a choice. - * - thomas 1997-10-11 - * NOTE: don't forget to add new keywords to the appropriate one of + * If you make any token changes, update the keyword table in + * parser/keywords.c and add new keywords to the appropriate one of * the reserved-or-not-so-reserved keyword lists, below. */ -/* Keywords (in SQL92 reserved words) */ -%token ABSOLUTE, ACTION, ADD, ALL, ALTER, AND, ANY, AS, ASC, AT, - AUTHORIZATION, BEGIN_TRANS, BETWEEN, BOTH, BY, - CASCADE, CASE, CAST, CHAR, CHARACTER, CHECK, CLOSE, - COALESCE, COLLATE, COLUMN, COMMIT, - CONSTRAINT, CONSTRAINTS, CREATE, CROSS, CURRENT_DATE, - CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, - DAY_P, DEC, DECIMAL, DECLARE, DEFAULT, DELETE, DESC, - DISTINCT, DOUBLE, DROP, - ELSE, ENCRYPTED, END_TRANS, ESCAPE, EXCEPT, EXECUTE, EXISTS, EXTRACT, - FALSE_P, FETCH, FLOAT, FOR, FOREIGN, FROM, FULL, - GLOBAL, GRANT, GROUP, HAVING, HOUR_P, - IN, INNER_P, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERVAL, - INTO, IS, ISOLATION, - JOIN, KEY, LANGUAGE, LEADING, LEFT, LEVEL, LIKE, LOCAL, - MATCH, MINUTE_P, MONTH_P, NAMES, - NATIONAL, NATURAL, NCHAR, NEXT, NO, NOT, NULLIF, NULL_P, NUMERIC, - OF, OLD, ON, ONLY, OPTION, OR, ORDER, OUTER_P, OVERLAPS, - PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, - READ, REAL, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK, - SCHEMA, SCROLL, SECOND_P, SELECT, SESSION, SESSION_USER, SET, - SMALLINT, SOME, SUBSTRING, - TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, - TO, TRAILING, TRANSACTION, TRIM, TRUE_P, - UNENCRYPTED, UNION, UNIQUE, UNKNOWN, UPDATE, USAGE, USER, USING, - VALUES, VARCHAR, VARYING, VIEW, - WHEN, WHERE, WITH, WORK, YEAR_P, ZONE +/* ordinary key words in alphabetical order */ +%token ABORT_TRANS, ABSOLUTE, ACCESS, ACTION, ADD, AFTER, + AGGREGATE, ALL, ALTER, ANALYSE, ANALYZE, AND, ANY, AS, ASC, ASSERTION, + AT, AUTHORIZATION, -/* Keywords (in SQL99 reserved words) */ -%token ASSERTION, BINARY, BIT, BOOLEAN, - CHAIN, CHARACTERISTICS, - DEFERRABLE, DEFERRED, - IMMEDIATE, INITIALLY, INOUT, - OFF, OUT, - PATH_P, PENDANT, - REPLACE, RESTRICT, - TRIGGER, - WITHOUT + BACKWARD, BEFORE, BEGIN_TRANS, BETWEEN, BIGINT, BINARY, BIT, BOTH, + BOOLEAN, BY, -/* Keywords (in SQL92 non-reserved words) */ -%token COMMITTED, SERIALIZABLE, TYPE_P, DOMAIN_P + CACHE, CALLED, CASCADE, CASE, CAST, CHAIN, CHAR, CHARACTER, + CHARACTERISTICS, CHECK, CHECKPOINT, CLOSE, CLUSTER, COALESCE, COLLATE, + COLUMN, COMMENT, COMMIT, COMMITTED, CONSTRAINT, CONSTRAINTS, COPY, + CREATE, CREATEDB, CREATEUSER, CROSS, CURRENT_DATE, CURRENT_TIME, + CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, CYCLE, -/* Keywords for Postgres support (not in SQL92 reserved words) - * - * The CREATEDB and CREATEUSER tokens should go away - * when some sort of pg_privileges relation is introduced. - * - Todd A. Brandys 1998-01-01? - */ -%token ABORT_TRANS, ACCESS, AFTER, AGGREGATE, ANALYSE, ANALYZE, - BACKWARD, BEFORE, BIGINT, - CACHE, CHECKPOINT, CLUSTER, COMMENT, COPY, CREATEDB, CREATEUSER, CYCLE, - DATABASE, DELIMITERS, DO, - EACH, ENCODING, EXCLUSIVE, EXPLAIN, - FORCE, FORWARD, FREEZE, FUNCTION, HANDLER, - ILIKE, INCREMENT, INDEX, INHERITS, INSTEAD, ISNULL, - LANCOMPILER, LIMIT, LISTEN, LOAD, LOCATION, LOCK_P, - MAXVALUE, MINVALUE, MODE, MOVE, - NEW, NOCREATEDB, NOCREATEUSER, NONE, NOTHING, NOTIFY, NOTNULL, - OFFSET, OIDS, OPERATOR, OWNER, PASSWORD, PROCEDURAL, - REINDEX, RENAME, RESET, RETURNS, ROW, RULE, - SEQUENCE, SETOF, SHARE, SHOW, START, STATEMENT, - STATISTICS, STDIN, STDOUT, STORAGE, SYSID, - TEMP, TEMPLATE, TOAST, TRUNCATE, TRUSTED, - UNLISTEN, UNTIL, VACUUM, VALID, VERBOSE, VERSION + DATABASE, DAY_P, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, DEFERRED, + DEFINER, DELETE, DELIMITERS, DESC, DISTINCT, DO, DOMAIN_P, DOUBLE, DROP, -%token CALLED, DEFINER, EXTERNAL, IMMUTABLE, IMPLICIT, INPUT, - INVOKER, SECURITY, STABLE, STRICT, VOLATILE + EACH, ELSE, ENCODING, ENCRYPTED, END_TRANS, ESCAPE, EXCEPT, EXCLUSIVE, + EXECUTE, EXISTS, EXPLAIN, EXTERNAL, EXTRACT, + + FALSE_P, FETCH, FLOAT, FOR, FORCE, FOREIGN, FORWARD, FREEZE, FROM, + FULL, FUNCTION, + + GLOBAL, GRANT, GROUP, + HANDLER, HAVING, HOUR_P, + + ILIKE, IMMEDIATE, IMMUTABLE, IMPLICIT, IN, INCREMENT, INDEX, INHERITS, + INITIALLY, INNER_P, INOUT, INPUT, INSENSITIVE, INSERT, INSTEAD, INT, + INTEGER, INTERSECT, INTERVAL, INTO, INVOKER, IS, ISNULL, ISOLATION, + + JOIN, + KEY, + + LANCOMPILER, LANGUAGE, LEADING, LEFT, LEVEL, LIKE, LIMIT, LISTEN, + LOAD, LOCAL, LOCATION, LOCK_P, + + MATCH, MAXVALUE, MINUTE_P, MINVALUE, MODE, MONTH_P, MOVE, + + NAMES, NATIONAL, NATURAL, NCHAR, NEW, NEXT, NO, NOCREATEDB, + NOCREATEUSER, NONE, NOT, NOTHING, NOTIFY, NOTNULL, NULL_P, NULLIF, + NUMERIC, + + OF, OFF, OFFSET, OIDS, OLD, ON, ONLY, OPERATOR, OPTION, OR, ORDER, + OUT, OUTER_P, OVERLAPS, OWNER, + + PARTIAL, PASSWORD, PATH_P, PENDANT, POSITION, PRECISION, PRIMARY, + PRIOR, PRIVILEGES, PROCEDURE, PROCEDURAL, + + READ, REAL, REFERENCES, REINDEX, RELATIVE, RENAME, REPLACE, RESET, + RESTRICT, RETURNS, REVOKE, RIGHT, ROLLBACK, ROW, RULE, + + SCHEMA, SCROLL, SECOND_P, SECURITY, SELECT, SEQUENCE, SERIALIZABLE, + SESSION, SESSION_USER, SET, SETOF, SHARE, SHOW, SMALLINT, SOME, + STABLE, START, STATEMENT, STATISTICS, STDIN, STDOUT, STORAGE, STRICT, + SUBSTRING, SYSID, + + TABLE, TEMP, TEMPLATE, TEMPORARY, THEN, TIME, TIMESTAMP, TO, TOAST, + TRAILING, TRANSACTION, TRIGGER, TRIM, TRUE_P, TRUNCATE, TRUSTED, TYPE_P, + + UNENCRYPTED, UNION, UNIQUE, UNKNOWN, UNLISTEN, UNTIL, UPDATE, USAGE, + USER, USING, + + VACUUM, VALID, VALUES, VARCHAR, VARYING, VERBOSE, VERSION, VIEW, VOLATILE, + WHEN, WHERE, WITH, WITHOUT, WORK, + YEAR_P, + ZONE /* The grammar thinks these are keywords, but they are not in the keywords.c * list and so can never be entered directly. The filter in parser.c