[CALCITE-1759] Add SQL:2014 reserved words to parser Between SQL:2011 and SQL:2014, the following keywords were added: ARRAY_MAX_CARDINALITY, BEGIN_FRAME, BEGIN_PARTITION, CLASSIFIER, CURRENT_ROW, DEFINE, EMPTY, END_FRAME, END_PARTITION, FRAME_ROW, GROUPS, INITIAL, MATCHES, MATCH_NUMBER, MATCH_RECOGNIZE, OMIT, ONE, PATTERN, PER, PERCENT, PERIOD, PORTION, RUNNING, SEEK, SHOW, SKIP, SUBSET, SYSTEM_TIME, VALUE_OF. All of these are now reserved in Calcite; some of them were reserved already.
SQL:2014 removed: DAYS, FOREVER, HOURS, KEEP, MAX_CARDINALITY, MINUTES, SECONDS. None of these were ever reserved in Calcite. The following became reserved in SQL:2011, and are now reserved in Calcite: LAG, LEAG, LIKE_REGEX, NTH_VALUE, NTILE, OCCURRENCES_REGEX, POSITION_REGEX, SUBSTRING_REGEX, TRANSLATE_REGEX, TRIM_ARRAY, TRUNCATE, VERSIONING. Sort the reserved word list in the parser. Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/d97c14c5 Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/d97c14c5 Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/d97c14c5 Branch: refs/heads/master Commit: d97c14c5dd62ed55da4d771e585973213affcb6e Parents: aed5bca Author: Hongbin Ma <[email protected]> Authored: Sun Apr 16 22:14:17 2017 +0800 Committer: Julian Hyde <[email protected]> Committed: Mon Apr 24 18:23:24 2017 -0700 ---------------------------------------------------------------------- core/src/main/codegen/templates/Parser.jj | 78 +- .../calcite/sql/parser/SqlParserTest.java | 904 ++++++++++--------- .../apache/calcite/sql/test/SqlAdvisorTest.java | 4 + .../java/org/apache/calcite/test/JdbcTest.java | 2 +- .../calcite/test/SqlToRelConverterTest.java | 2 +- .../apache/calcite/test/SqlValidatorTest.java | 18 +- .../calcite/test/SqlToRelConverterTest.xml | 2 +- .../apache/calcite/adapter/file/SqlTest.java | 2 +- site/_docs/reference.md | 45 +- 9 files changed, 588 insertions(+), 469 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/d97c14c5/core/src/main/codegen/templates/Parser.jj ---------------------------------------------------------------------- diff --git a/core/src/main/codegen/templates/Parser.jj b/core/src/main/codegen/templates/Parser.jj index 9b04cb5..64d5936 100644 --- a/core/src/main/codegen/templates/Parser.jj +++ b/core/src/main/codegen/templates/Parser.jj @@ -855,7 +855,7 @@ void Arg0(List list, ExprContext exprContext) : name = SimpleIdentifier() <NAMED_ARGUMENT_ASSIGNMENT> ] ( - <DEFAULT_KW> { + <DEFAULT_> { e = SqlStdOperatorTable.DEFAULT.createCall(getPos()); } | @@ -883,7 +883,7 @@ void Arg(List list, ExprContext exprContext) : name = SimpleIdentifier() <NAMED_ARGUMENT_ASSIGNMENT> ] ( - <DEFAULT_KW> { + <DEFAULT_> { e = SqlStdOperatorTable.DEFAULT.createCall(getPos()); } | @@ -5132,6 +5132,8 @@ SqlIdentifier ReservedFunctionName() : | <FUSION> | <GROUPING> | <HOUR> + | <LAG> + | <LEAD> | <LAST_VALUE> | <LN> | <LOCALTIME> @@ -5142,6 +5144,7 @@ SqlIdentifier ReservedFunctionName() : | <MINUTE> | <MOD> | <MONTH> + | <NTILE> | <NULLIF> | <OCTET_LENGTH> | <PERCENT_RANK> @@ -5156,6 +5159,7 @@ SqlIdentifier ReservedFunctionName() : | <STDDEV_SAMP> | <SUM> | <UPPER> + | <TRUNCATE> | <USER> | <VAR_POP> | <VAR_SAMP> @@ -5238,6 +5242,9 @@ SqlNode JdbcFunctionCall() : // INSERT is a reserved word, but we need to handle {fn insert} <INSERT> { name = unquotedIdentifier(); } | + // TRUNCATE is a reserved word, but we need to handle {fn truncate} + <TRUNCATE> { name = unquotedIdentifier(); } + | // For cases like {fn power(1,2)} and {fn lower('a')} id = ReservedFunctionName() { name = id.getSimple(); } | @@ -5448,12 +5455,14 @@ SqlPostfixOperator PostfixRowOperator() : | < ALL: "ALL" > | < ALLOCATE: "ALLOCATE" > | < ALLOW: "ALLOW" > - | < ALWAYS: "ALWAYS" > | < ALTER: "ALTER" > + | < ALWAYS: "ALWAYS" > | < AND: "AND" > | < ANY: "ANY" > + | < APPLY: "APPLY" > | < ARE: "ARE" > | < ARRAY: "ARRAY" > + | < ARRAY_MAX_CARDINALITY: "ARRAY_MAX_CARDINALITY" > | < AS: "AS" > | < ASC: "ASC" > | < ASENSITIVE: "ASENSITIVE" > @@ -5468,6 +5477,8 @@ SqlPostfixOperator PostfixRowOperator() : | < AVG: "AVG" > | < BEFORE: "BEFORE" > | < BEGIN: "BEGIN" > + | < BEGIN_FRAME: "BEGIN_FRAME" > + | < BEGIN_PARTITION: "BEGIN_PARTITION" > | < BERNOULLI: "BERNOULLI" > | < BETWEEN: "BETWEEN" > | < BIGINT: "BIGINT" > @@ -5502,6 +5513,7 @@ SqlPostfixOperator PostfixRowOperator() : | < CHARACTERISTICS: "CHARACTERISTICS" > | < CHARACTERS: "CHARACTERS" > | < CHECK: "CHECK" > + | < CLASSIFIER: "CLASSIFIER" > | < CLASS_ORIGIN: "CLASS_ORIGIN" > | < CLOB: "CLOB" > | < CLOSE: "CLOSE" > @@ -5531,8 +5543,8 @@ SqlPostfixOperator PostfixRowOperator() : | < CONSTRAINTS: "CONSTRAINTS" > | < CONSTRUCTOR: "CONSTRUCTOR" > | < CONTAINS: "CONTAINS" > - | < CONVERT: "CONVERT" > | < CONTINUE: "CONTINUE" > + | < CONVERT: "CONVERT" > | < CORR: "CORR" > | < CORRESPONDING: "CORRESPONDING" > | < COUNT: "COUNT" > @@ -5548,6 +5560,7 @@ SqlPostfixOperator PostfixRowOperator() : | < CURRENT_DEFAULT_TRANSFORM_GROUP: "CURRENT_DEFAULT_TRANSFORM_GROUP" > | < CURRENT_PATH: "CURRENT_PATH" > | < CURRENT_ROLE: "CURRENT_ROLE" > + | < CURRENT_ROW: "CURRENT_ROW" > | < CURRENT_SCHEMA: "CURRENT_SCHEMA" > | < CURRENT_TIME: "CURRENT_TIME" > | < CURRENT_TIMESTAMP: "CURRENT_TIMESTAMP" > @@ -5567,7 +5580,7 @@ SqlPostfixOperator PostfixRowOperator() : | < DECADE: "DECADE" > | < DECIMAL: "DECIMAL" > | < DECLARE: "DECLARE" > - | < DEFAULT_KW: "DEFAULT" > + | < DEFAULT_: "DEFAULT" > | < DEFAULTS: "DEFAULTS" > | < DEFERRABLE: "DEFERRABLE" > | < DEFERRED: "DEFERRED" > @@ -5580,8 +5593,8 @@ SqlPostfixOperator PostfixRowOperator() : | < DEPTH: "DEPTH" > | < DEREF: "DEREF" > | < DERIVED: "DERIVED" > - | < DESCRIBE: "DESCRIBE" > | < DESC: "DESC" > + | < DESCRIBE: "DESCRIBE" > | < DESCRIPTION: "DESCRIPTION" > | < DESCRIPTOR: "DESCRIPTOR" > | < DETERMINISTIC: "DETERMINISTIC" > @@ -5601,8 +5614,11 @@ SqlPostfixOperator PostfixRowOperator() : | < EACH: "EACH" > | < ELEMENT: "ELEMENT" > | < ELSE: "ELSE" > + | < EMPTY: "EMPTY" > | < END: "END" > | < END_EXEC: "END-EXEC" > + | < END_FRAME: "END_FRAME" > + | < END_PARTITION: "END_PARTITION" > | < EPOCH: "EPOCH" > | < EQUALS: "EQUALS" > | < ESCAPE: "ESCAPE" > @@ -5616,8 +5632,8 @@ SqlPostfixOperator PostfixRowOperator() : | < EXISTS: "EXISTS" > | < EXP: "EXP" > | < EXPLAIN: "EXPLAIN" > - | < EXTERNAL: "EXTERNAL" > | < EXTEND: "EXTEND" > + | < EXTERNAL: "EXTERNAL" > | < EXTRACT: "EXTRACT" > | < FALSE: "FALSE" > | < FETCH: "FETCH" > @@ -5633,6 +5649,7 @@ SqlPostfixOperator PostfixRowOperator() : | < FORTRAN: "FORTRAN" > | < FOUND: "FOUND" > | < FRAC_SECOND: "FRAC_SECOND" > + | < FRAME_ROW: "FRAME_ROW" > | < FREE: "FREE" > | < FROM: "FROM" > | < FULL: "FULL" > @@ -5649,6 +5666,7 @@ SqlPostfixOperator PostfixRowOperator() : | < GRANTED: "GRANTED" > | < GROUP: "GROUP" > | < GROUPING: "GROUPING" > + | < GROUPS: "GROUPS" > | < HAVING: "HAVING" > | < HIERARCHY: "HIERARCHY" > | < HOLD: "HOLD" > @@ -5658,9 +5676,10 @@ SqlPostfixOperator PostfixRowOperator() : | < IMPLEMENTATION: "IMPLEMENTATION" > | < IMPORT: "IMPORT" > | < IN: "IN" > - | < INDICATOR: "INDICATOR" > | < INCLUDING: "INCLUDING" > | < INCREMENT: "INCREMENT" > + | < INDICATOR: "INDICATOR" > + | < INITIAL: "INITIAL" > | < INITIALLY: "INITIALLY" > | < INNER: "INNER" > | < INOUT: "INOUT" > @@ -5686,17 +5705,20 @@ SqlPostfixOperator PostfixRowOperator() : | < KEY_MEMBER: "KEY_MEMBER" > | < KEY_TYPE: "KEY_TYPE" > | < LABEL: "LABEL" > + | < LAG: "LAG" > | < LANGUAGE: "LANGUAGE" > | < LARGE: "LARGE" > | < LAST: "LAST" > | < LAST_VALUE: "LAST_VALUE" > | < LATERAL: "LATERAL" > + | < LEAD: "LEAD" > | < LEADING: "LEADING" > | < LEFT: "LEFT" > | < LENGTH: "LENGTH" > | < LEVEL: "LEVEL" > | < LIBRARY: "LIBRARY" > | < LIKE: "LIKE" > + | < LIKE_REGEX: "LIKE_REGEX" > | < LIMIT: "LIMIT" > | < LN: "LN" > | < LOCAL: "LOCAL" > @@ -5708,6 +5730,8 @@ SqlPostfixOperator PostfixRowOperator() : | < MAP: "MAP" > | < MATCH: "MATCH" > | < MATCHED: "MATCHED" > + | < MATCHES: "MATCHES" > + | < MATCH_NUMBER: "MATCH_NUMBER"> | < MATCH_RECOGNIZE: "MATCH_RECOGNIZE"> | < MAX: "MAX" > | < MAXVALUE: "MAXVALUE" > @@ -5727,7 +5751,7 @@ SqlPostfixOperator PostfixRowOperator() : | < MODIFIES: "MODIFIES" > | < MODULE: "MODULE" > | < MONTH: "MONTH" > - | < MORE_KW: "MORE" > + | < MORE_: "MORE" > | < MULTISET: "MULTISET" > | < MUMPS: "MUMPS" > | < NAME: "NAME" > @@ -5744,6 +5768,8 @@ SqlPostfixOperator PostfixRowOperator() : | < NORMALIZE: "NORMALIZE" > | < NORMALIZED: "NORMALIZED" > | < NOT: "NOT" > + | < NTH_VALUE: "NTH_VALUE" > + | < NTILE: "NTILE" > | < NULL: "NULL" > | < NULLABLE: "NULLABLE" > | < NULLIF: "NULLIF" > @@ -5751,12 +5777,15 @@ SqlPostfixOperator PostfixRowOperator() : | < NUMBER: "NUMBER" > | < NUMERIC: "NUMERIC" > | < OBJECT: "OBJECT" > + | < OCCURRENCES_REGEX: "OCCURRENCES_REGEX" > | < OCTET_LENGTH: "OCTET_LENGTH" > | < OCTETS: "OCTETS" > | < OF: "OF" > | < OFFSET: "OFFSET" > | < OLD: "OLD" > + | < OMIT: "OMIT" > | < ON: "ON" > + | < ONE: "ONE" > | < ONLY: "ONLY" > | < OPEN: "OPEN" > | < OPTION: "OPTION" > @@ -5787,15 +5816,21 @@ SqlPostfixOperator PostfixRowOperator() : | < PASSTHROUGH: "PASSTHROUGH" > | < PATH: "PATH" > | < PATTERN: "PATTERN" > - | < PERMUTE: "PERMUTE" > - | < PERCENT_RANK: "PERCENT_RANK" > + | < PER: "PER" > + | < PERCENT: "PERCENT" > | < PERCENTILE_CONT: "PERCENTILE_CONT" > | < PERCENTILE_DISC: "PERCENTILE_DISC" > + | < PERCENT_RANK: "PERCENT_RANK" > + | < PERIOD: "PERIOD" > + | < PERMUTE: "PERMUTE" > | < PLACING: "PLACING" > | < PLAN: "PLAN" > | < PLI: "PLI" > + | < PORTION: "PORTION" > | < POSITION: "POSITION" > + | < POSITION_REGEX: "POSITION_REGEX" > | < POWER: "POWER" > + | < PRECEDES: "PRECEDES" > | < PRECEDING: "PRECEDING" > | < PRECISION: "PRECISION" > | < PREPARE: "PREPARE" > @@ -5866,6 +5901,7 @@ SqlPostfixOperator PostfixRowOperator() : | < SECOND: "SECOND" > | < SECTION: "SECTION" > | < SECURITY: "SECURITY" > + | < SEEK: "SEEK" > | < SELECT: "SELECT" > | < SELF: "SELF" > | < SENSITIVE: "SENSITIVE" > @@ -5878,9 +5914,11 @@ SqlPostfixOperator PostfixRowOperator() : | < SET: "SET" > | < SETS: "SETS" > | < SET_MINUS: "MINUS"> + | < SHOW: "SHOW" > | < SIMILAR: "SIMILAR" > | < SIMPLE: "SIMPLE" > | < SIZE: "SIZE" > + | < SKIP_: "SKIP" > | < SMALLINT: "SMALLINT" > | < SOME: "SOME" > | < SOURCE: "SOURCE" > @@ -5953,11 +5991,15 @@ SqlPostfixOperator PostfixRowOperator() : | < STYLE: "STYLE" > | < SUBCLASS_ORIGIN: "SUBCLASS_ORIGIN" > | < SUBMULTISET: "SUBMULTISET" > - | < SUBSTRING: "SUBSTRING" > + | < SUBSET: "SUBSET" > | < SUBSTITUTE: "SUBSTITUTE" > + | < SUBSTRING: "SUBSTRING" > + | < SUBSTRING_REGEX: "SUBSTRING_REGEX" > + | < SUCCEEDS: "SUCCEEDS" > | < SUM: "SUM" > | < SYMMETRIC: "SYMMETRIC" > | < SYSTEM: "SYSTEM" > + | < SYSTEM_TIME: "SYSTEM_TIME" > | < SYSTEM_USER: "SYSTEM_USER" > | < TABLE: "TABLE" > | < TABLE_NAME: "TABLE_NAME" > @@ -5982,6 +6024,7 @@ SqlPostfixOperator PostfixRowOperator() : | < TRANSFORM: "TRANSFORM" > | < TRANSFORMS: "TRANSFORMS" > | < TRANSLATE: "TRANSLATE" > + | < TRANSLATE_REGEX: "TRANSLATE_REGEX" > | < TRANSLATION: "TRANSLATION" > | < TREAT: "TREAT" > | < TRIGGER: "TRIGGER" > @@ -5989,7 +6032,9 @@ SqlPostfixOperator PostfixRowOperator() : | < TRIGGER_NAME: "TRIGGER_NAME" > | < TRIGGER_SCHEMA: "TRIGGER_SCHEMA" > | < TRIM: "TRIM" > + | < TRIM_ARRAY: "TRIM_ARRAY" > | < TRUE: "TRUE" > + | < TRUNCATE: "TRUNCATE" > | < TYPE: "TYPE" > | < UESCAPE: "UESCAPE" > | < UNBOUNDED: "UNBOUNDED" > @@ -6012,12 +6057,14 @@ SqlPostfixOperator PostfixRowOperator() : | < USING: "USING" > | < VALUE: "VALUE" > | < VALUES: "VALUES" > + | < VALUE_OF: "VALUE_OF" > | < VAR_POP: "VAR_POP" > | < VAR_SAMP: "VAR_SAMP" > - | < VARCHAR: "VARCHAR" > | < VARBINARY: "VARBINARY" > + | < VARCHAR: "VARCHAR" > | < VARYING: "VARYING" > | < VERSION: "VERSION" > + | < VERSIONING: "VERSIONING" > | < VIEW: "VIEW" > | < WEEK: "WEEK" > | < WHEN: "WHEN" > @@ -6034,7 +6081,6 @@ SqlPostfixOperator PostfixRowOperator() : | < XML: "XML" > | < YEAR: "YEAR" > | < ZONE: "ZONE" > - | < APPLY: "APPLY" > <#-- additional parser keywords are included here --> <#list parser.keywords as keyword> | < ${keyword}: "${keyword}" > @@ -6113,7 +6159,6 @@ String CommonNonReservedKeyWord() : | <CONSTRAINT_SCHEMA> | <CONSTRAINTS> | <CONSTRUCTOR> - | <CONTAINS> | <CONTINUE> | <CURSOR_NAME> | <DATA> @@ -6140,7 +6185,6 @@ String CommonNonReservedKeyWord() : | <DYNAMIC_FUNCTION> | <DYNAMIC_FUNCTION_CODE> | <EPOCH> - | <EQUALS> | <EXCEPTION> | <EXCLUDE> | <EXCLUDING> @@ -6189,7 +6233,7 @@ String CommonNonReservedKeyWord() : | <MESSAGE_TEXT> | <MILLENNIUM> | <MINVALUE> - | <MORE_KW> + | <MORE_> | <MUMPS> | <NAME> | <NAMES> http://git-wip-us.apache.org/repos/asf/calcite/blob/d97c14c5/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java b/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java index e743622..37c6c3a 100644 --- a/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java +++ b/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java @@ -80,442 +80,471 @@ public class SqlParserTest { * List of reserved keywords. * * <p>Each keyword is followed by tokens indicating whether it is reserved in - * the SQL:92, SQL:99, SQL:2003 standards and in Calcite. + * the SQL:92, SQL:99, SQL:2003, SQL:2011, SQL:2014 standards and in Calcite. * * <p>The standard keywords are derived from - * <a href="http://developer.mimer.com/validator/sql-reserved-words.tml">Mimer</a>. + * <a href="http://developer.mimer.com/validator/sql-reserved-words.tml">Mimer</a> + * and from the specification. * * <p>If a new <b>reserved</b> keyword is added to the parser, include it in * this list, flagged "c". If the keyword is not intended to be a reserved * keyword, add it to the non-reserved keyword list in the parser. */ private static final List<String> RESERVED_KEYWORDS = ImmutableList.of( - "ABS", "2011", "c", - "ABSOLUTE", "92", "99", - "ACTION", "92", "99", - "ADD", "92", "99", "2003", - "AFTER", "99", - "ALL", "92", "99", "2003", "2011", "c", - "ALLOCATE", "92", "99", "2003", "2011", "c", - "ALLOW", "c", - "ALTER", "92", "99", "2003", "2011", "c", - "AND", "92", "99", "2003", "2011", "c", - "ANY", "92", "99", "2003", "2011", "c", - "ARE", "92", "99", "2003", "2011", "c", - "ARRAY", "99", "2003", "2011", "c", - "ARRAY_AGG", "2011", - "AS", "92", "99", "2003", "2011", "c", - "ASC", "92", "99", - "ASENSITIVE", "99", "2003", "2011", "c", - "ASSERTION", "92", "99", - "ASYMMETRIC", "99", "2003", "2011", "c", - "AT", "92", "99", "2003", "2011", "c", - "ATOMIC", "99", "2003", "2011", "c", - "AUTHORIZATION", "92", "99", "2003", "2011", "c", - "AVG", "92", "2011", "c", - "BEFORE", "99", - "BEGIN", "92", "99", "2003", "2011", "c", - "BETWEEN", "92", "99", "2003", "2011", "c", - "BIGINT", "2003", "2011", "c", - "BINARY", "99", "2003", "2011", "c", - "BIT", "92", "99", "c", - "BIT_LENGTH", "92", - "BLOB", "99", "2003", "2011", "c", - "BOOLEAN", "99", "2003", "2011", "c", - "BOTH", "92", "99", "2003", "2011", "c", - "BREADTH", "99", - "BY", "92", "99", "2003", "2011", "c", - "CALL", "92", "99", "2003", "2011", "c", - "CALLED", "2003", "2011", "c", - "CARDINALITY", "2011", "c", - "CASCADE", "92", "99", - "CASCADED", "92", "99", "2003", "2011", "c", - "CASE", "92", "99", "2003", "2011", "c", - "CAST", "92", "99", "2003", "2011", "c", - "CATALOG", "92", "99", - "CEIL", "2011", "c", - "CEILING", "2011", "c", - "CHAR", "92", "99", "2003", "2011", "c", - "CHARACTER", "92", "99", "2003", "2011", "c", - "CHARACTER_LENGTH", "92", "2011", "c", - "CHAR_LENGTH", "92", "2011", "c", - "CHECK", "92", "99", "2003", "2011", "c", - "CLOB", "99", "2003", "2011", "c", - "CLOSE", "92", "99", "2003", "2011", "c", - "COALESCE", "92", "2011", "c", - "COLLATE", "92", "99", "2003", "2011", "c", - "COLLATION", "92", "99", - "COLLECT", "2011", "c", - "COLUMN", "92", "99", "2003", "2011", "c", - "COMMIT", "92", "99", "2003", "2011", "c", - "CONDITION", "92", "99", "2003", "2011", "c", - "CONNECT", "92", "99", "2003", "2011", "c", - "CONNECTION", "92", "99", - "CONSTRAINT", "92", "99", "2003", "2011", "c", - "CONSTRAINTS", "92", "99", - "CONSTRUCTOR", "99", - "CONTAINS", "92", - "CONTINUE", "92", "99", "2003", - "CONVERT", "92", "2011", "c", - "CORR", "2011", "c", - "CORRESPONDING", "92", "99", "2003", "2011", "c", - "COUNT", "92", "2011", "c", - "COVAR_POP", "2011", "c", - "COVAR_SAMP", "2011", "c", - "CREATE", "92", "99", "2003", "2011", "c", - "CROSS", "92", "99", "2003", "2011", "c", - "CUBE", "99", "2003", "2011", "c", - "CUME_DIST", "2011", "c", - "CURRENT", "92", "99", "2003", "2011", "c", - "CURRENT_CATALOG", "2011", "c", - "CURRENT_DATE", "92", "99", "2003", "2011", "c", - "CURRENT_DEFAULT_TRANSFORM_GROUP", "99", "2003", "2011", "c", - "CURRENT_PATH", "92", "99", "2003", "2011", "c", - "CURRENT_ROLE", "99", "2003", "2011", "c", - "CURRENT_SCHEMA", "2011", "c", - "CURRENT_TIME", "92", "99", "2003", "2011", "c", - "CURRENT_TIMESTAMP", "92", "99", "2003", "2011", "c", - "CURRENT_TRANSFORM_GROUP_FOR_TYPE", "99", "2003", "2011", "c", - "CURRENT_USER", "92", "99", "2003", "2011", "c", - "CURSOR", "92", "99", "2003", "2011", "c", - "CYCLE", "99", "2003", "2011", "c", - "DATA", "99", - "DATE", "92", "99", "2003", "2011", "c", - "DAY", "92", "99", "2003", "2011", "c", - "DAYS", "2011", - "DEALLOCATE", "92", "99", "2003", "2011", "c", - "DEC", "92", "99", "2003", "2011", "c", - "DECIMAL", "92", "99", "2003", "2011", "c", - "DECLARE", "92", "99", "2003", "2011", "c", - "DEFAULT", "92", "99", "2003", "2011", "c", - "DEFERRABLE", "92", "99", - "DEFERRED", "92", "99", - "DEFINE", "c", - "DELETE", "92", "99", "2003", "2011", "c", - "DENSE_RANK", "2011", "c", - "DEPTH", "99", - "DEREF", "99", "2003", "2011", "c", - "DESC", "92", "99", - "DESCRIBE", "92", "99", "2003", "2011", "c", - "DESCRIPTOR", "92", "99", - "DETERMINISTIC", "92", "99", "2003", "2011", "c", - "DIAGNOSTICS", "92", "99", - "DISALLOW", "c", - "DISCONNECT", "92", "99", "2003", "2011", "c", - "DISTINCT", "92", "99", "2003", "2011", "c", - "DO", "92", "99", "2003", - "DOMAIN", "92", "99", - "DOUBLE", "92", "99", "2003", "2011", "c", - "DROP", "92", "99", "2003", "2011", "c", - "DYNAMIC", "99", "2003", "2011", "c", - "EACH", "99", "2003", "2011", "c", - "ELEMENT", "2003", "2011", "c", - "ELSE", "92", "99", "2003", "2011", "c", - "ELSEIF", "92", "99", "2003", - "END", "92", "99", "2003", "2011", "c", - "END-EXEC", "2011", "c", - "EQUALS", "99", - "ESCAPE", "92", "99", "2003", "2011", "c", - "EVERY", "2011", "c", - "EXCEPT", "92", "99", "2003", "2011", "c", - "EXCEPTION", "92", "99", - "EXEC", "92", "99", "2003", "2011", "c", - "EXECUTE", "92", "99", "2003", "2011", "c", - "EXISTS", "92", "99", "2003", "2011", "c", - "EXIT", "92", "99", "2003", - "EXP", "2011", "c", - "EXPLAIN", "c", - "EXTEND", "c", - "EXTERNAL", "92", "99", "2003", "2011", "c", - "EXTRACT", "92", "2011", "c", - "FALSE", "92", "99", "2003", "2011", "c", - "FETCH", "92", "99", "2003", "2011", "c", - "FILTER", "99", "2003", "2011", "c", - "FIRST", "92", "99", - "FIRST_VALUE", "2011", "c", - "FLOAT", "92", "99", "2003", "2011", "c", - "FLOOR", "2011", "c", - "FOR", "92", "99", "2003", "2011", "c", - "FOREIGN", "92", "99", "2003", "2011", "c", - "FOREVER", "2011", - "FOUND", "92", "99", - "FREE", "99", "2003", "2011", "c", - "FROM", "92", "99", "2003", "2011", "c", - "FULL", "92", "99", "2003", "2011", "c", - "FUNCTION", "92", "99", "2003", "2011", "c", - "FUSION", "2011", "c", - "GENERAL", "99", - "GET", "92", "99", "2003", "2011", "c", - "GLOBAL", "92", "99", "2003", "2011", "c", - "GO", "92", "99", - "GOTO", "92", "99", - "GRANT", "92", "99", "2003", "2011", "c", - "GROUP", "92", "99", "2003", "2011", "c", - "GROUPING", "99", "2003", "2011", "c", - "HANDLER", "92", "99", "2003", - "HAVING", "92", "99", "2003", "2011", "c", - "HOLD", "99", "2003", "2011", "c", - "HOUR", "92", "99", "2003", "2011", "c", - "HOURS", "2011", - "IDENTITY", "92", "99", "2003", "2011", "c", - "IF", "92", "99", "2003", - "IMMEDIATE", "92", "99", "2003", - "IMPORT", "c", - "IN", "92", "99", "2003", "2011", "c", - "INDICATOR", "92", "99", "2003", "2011", "c", - "INITIALLY", "92", "99", - "INNER", "92", "99", "2003", "2011", "c", - "INOUT", "92", "99", "2003", "2011", "c", - "INPUT", "92", "99", "2003", - "INSENSITIVE", "92", "99", "2003", "2011", "c", - "INSERT", "92", "99", "2003", "2011", "c", - "INT", "92", "99", "2003", "2011", "c", - "INTEGER", "92", "99", "2003", "2011", "c", - "INTERSECT", "92", "99", "2003", "2011", "c", - "INTERSECTION", "2011", "c", - "INTERVAL", "92", "99", "2003", "2011", "c", - "INTO", "92", "99", "2003", "2011", "c", - "IS", "92", "99", "2003", "2011", "c", - "ISOLATION", "92", "99", - "ITERATE", "99", "2003", - "JOIN", "92", "99", "2003", "2011", "c", - "KEEP", "2011", - "KEY", "92", "99", - "LAG", "2011", - "LANGUAGE", "92", "99", "2003", "2011", "c", - "LARGE", "99", "2003", "2011", "c", - "LAST", "92", "99", - "LAST_VALUE", "2011", "c", - "LATERAL", "99", "2003", "2011", "c", - "LEAD", "2011", - "LEADING", "92", "99", "2003", "2011", "c", - "LEAVE", "92", "99", "2003", - "LEFT", "92", "99", "2003", "2011", "c", - "LEVEL", "92", "99", - "LIKE", "92", "99", "2003", "2011", "c", - "LIKE_REGEX", "2011", - "LIMIT", "c", - "LN", "2011", "c", - "LOCAL", "92", "99", "2003", "2011", "c", - "LOCALTIME", "99", "2003", "2011", "c", - "LOCALTIMESTAMP", "99", "2003", "2011", "c", - "LOCATOR", "99", - "LOOP", "92", "99", "2003", - "LOWER", "92", "2011", "c", - "MAP", "99", - "MATCH", "92", "99", "2003", "2011", "c", - "MATCH_RECOGNIZE", "c", - "MAX", "92", "2011", "c", - "MAX_CARDINALITY", "2011", - "MEASURES", "c", - "MEMBER", "2003", "2011", "c", - "MERGE", "2003", "2011", "c", - "METHOD", "99", "2003", "2011", "c", - "MIN", "92", "2011", "c", - "MINUS", "c", - "MINUTE", "92", "99", "2003", "2011", "c", - "MINUTES", "2011", - "MOD", "2011", "c", - "MODIFIES", "99", "2003", "2011", "c", - "MODULE", "92", "99", "2003", "2011", "c", - "MONTH", "92", "99", "2003", "2011", "c", - "MULTISET", "2003", "2011", "c", - "NAMES", "92", "99", - "NATIONAL", "92", "99", "2003", "2011", "c", - "NATURAL", "92", "99", "2003", "2011", "c", - "NCHAR", "92", "99", "2003", "2011", "c", - "NCLOB", "99", "2003", "2011", "c", - "NEW", "99", "2003", "2011", "c", - "NEXT", "92", "99", "c", - "NO", "92", "99", "2003", "2011", "c", - "NONE", "99", "2003", "2011", "c", - "NORMALIZE", "2011", "c", - "NOT", "92", "99", "2003", "2011", "c", - "NTH_VALUE", "2011", - "NTILE", "2011", - "NULL", "92", "99", "2003", "2011", "c", - "NULLIF", "92", "2011", "c", - "NUMERIC", "92", "99", "2003", "2011", "c", - "OBJECT", "99", - "OCCURRENCES_REGEX", "2011", - "OCTET_LENGTH", "92", "2011", "c", - "OF", "92", "99", "2003", "2011", "c", - "OFFSET", "2011", "c", - "OLD", "99", "2003", "2011", "c", - "ON", "92", "99", "2003", "2011", "c", - "ONLY", "92", "99", "2003", "2011", "c", - "OPEN", "92", "99", "2003", "2011", "c", - "OPTION", "92", "99", - "OR", "92", "99", "2003", "2011", "c", - "ORDER", "92", "99", "2003", "2011", "c", - "ORDINALITY", "99", - "OUT", "92", "99", "2003", "2011", "c", - "OUTER", "92", "99", "2003", "2011", "c", - "OUTPUT", "92", "99", "2003", - "OVER", "99", "2003", "2011", "c", - "OVERLAPS", "92", "99", "2003", "2011", "c", - "OVERLAY", "2011", "c", - "PAD", "92", "99", - "PARAMETER", "92", "99", "2003", "2011", "c", - "PARTIAL", "92", "99", - "PARTITION", "99", "2003", "2011", "c", - "PATH", "92", "99", - "PATTERN", "c", - "PERCENTILE_CONT", "2011", "c", - "PERCENTILE_DISC", "2011", "c", - "PERCENT_RANK", "2011", "c", - "PERMUTE", "c", - "POSITION", "92", "2011", "c", - "POSITION_REGEX", "2011", - "POWER", "2011", "c", - "PRECISION", "92", "99", "2003", "2011", "c", - "PREPARE", "92", "99", "2003", "2011", "c", - "PRESERVE", "92", "99", - "PREV", "c", - "PRIMARY", "92", "99", "2003", "2011", "c", - "PRIOR", "92", "99", - "PRIVILEGES", "92", "99", - "PROCEDURE", "92", "99", "2003", "2011", "c", - "PUBLIC", "92", "99", - "RANGE", "99", "2003", "2011", "c", - "RANK", "2011", "c", - "READ", "92", "99", - "READS", "99", "2003", "2011", "c", - "REAL", "92", "99", "2003", "2011", "c", - "RECURSIVE", "99", "2003", "2011", "c", - "REF", "99", "2003", "2011", "c", - "REFERENCES", "92", "99", "2003", "2011", "c", - "REFERENCING", "99", "2003", "2011", "c", - "REGR_AVGX", "2011", "c", - "REGR_AVGY", "2011", "c", - "REGR_COUNT", "2011", "c", - "REGR_INTERCEPT", "2011", "c", - "REGR_R2", "2011", "c", - "REGR_SLOPE", "2011", "c", - "REGR_SXX", "2011", "c", - "REGR_SXY", "2011", "c", - "REGR_SYY", "2011", "c", - "RELATIVE", "92", "99", - "RELEASE", "99", "2003", "2011", "c", - "REPEAT", "92", "99", "2003", - "RESET", "c", - "RESIGNAL", "92", "99", "2003", - "RESTRICT", "92", "99", - "RESULT", "99", "2003", "2011", "c", - "RETURN", "92", "99", "2003", "2011", "c", - "RETURNS", "92", "99", "2003", "2011", "c", - "REVOKE", "92", "99", "2003", "2011", "c", - "RIGHT", "92", "99", "2003", "2011", "c", - "ROLE", "99", - "ROLLBACK", "92", "99", "2003", "2011", "c", - "ROLLUP", "99", "2003", "2011", "c", - "ROUTINE", "92", "99", - "ROW", "99", "2003", "2011", "c", - "ROWS", "92", "99", "2003", "2011", "c", - "ROW_NUMBER", "2011", "c", - "RUNNING", "c", - "SAVEPOINT", "99", "2003", "2011", "c", - "SCHEMA", "92", "99", - "SCOPE", "99", "2003", "2011", "c", - "SCROLL", "92", "99", "2003", "2011", "c", - "SEARCH", "99", "2003", "2011", "c", - "SECOND", "92", "99", "2003", "2011", "c", - "SECONDS", "2011", - "SECTION", "92", "99", - "SELECT", "92", "99", "2003", "2011", "c", - "SENSITIVE", "99", "2003", "2011", "c", - "SESSION", "92", "99", - "SESSION_USER", "92", "99", "2003", "2011", "c", - "SET", "92", "99", "2003", "2011", "c", - "SETS", "99", - "SIGNAL", "92", "99", "2003", - "SIMILAR", "99", "2003", "2011", "c", - "SIZE", "92", "99", - "SMALLINT", "92", "99", "2003", "2011", "c", - "SOME", "92", "99", "2003", "2011", "c", - "SPACE", "92", "99", - "SPECIFIC", "92", "99", "2003", "2011", "c", - "SPECIFICTYPE", "99", "2003", "2011", "c", - "SQL", "92", "99", "2003", "2011", "c", - "SQLCODE", "92", - "SQLERROR", "92", - "SQLEXCEPTION", "92", "99", "2003", "2011", "c", - "SQLSTATE", "92", "99", "2003", "2011", "c", - "SQLWARNING", "92", "99", "2003", "2011", "c", - "SQRT", "2011", "c", - "START", "99", "2003", "2011", "c", - "STATE", "99", - "STATIC", "99", "2003", "2011", "c", - "STDDEV_POP", "2011", "c", - "STDDEV_SAMP", "2011", "c", - "STREAM", "c", - "SUBMULTISET", "2003", "2011", "c", - "SUBSTRING", "92", "2011", "c", - "SUBSTRING_REGEX", "2011", - "SUM", "92", "2011", "c", - "SYMMETRIC", "99", "2003", "2011", "c", - "SYSTEM", "99", "2003", "2011", "c", - "SYSTEM_USER", "92", "99", "2003", "2011", "c", - "TABLE", "92", "99", "2003", "2011", "c", - "TABLESAMPLE", "2003", "2011", "c", - "TEMPORARY", "92", "99", - "THEN", "92", "99", "2003", "2011", "c", - "TIME", "92", "99", "2003", "2011", "c", - "TIMESTAMP", "92", "99", "2003", "2011", "c", - "TIMEZONE_HOUR", "92", "99", "2003", "2011", "c", - "TIMEZONE_MINUTE", "92", "99", "2003", "2011", "c", - "TINYINT", "c", - "TO", "92", "99", "2003", "2011", "c", - "TRAILING", "92", "99", "2003", "2011", "c", - "TRANSACTION", "92", "99", - "TRANSLATE", "92", "2011", "c", - "TRANSLATE_REGEX", "2011", - "TRANSLATION", "92", "99", "2003", "2011", "c", - "TREAT", "99", "2003", "2011", "c", - "TRIGGER", "99", "2003", "2011", "c", - "TRIM", "92", "2011", "c", - "TRIM_ARRAY", "2011", - "TRUE", "92", "99", "2003", "2011", "c", - "TRUNCATE", "2011", - "UESCAPE", "2011", "c", - "UNDER", "99", - "UNDO", "92", "99", "2003", - "UNION", "92", "99", "2003", "2011", "c", - "UNIQUE", "92", "99", "2003", "2011", "c", - "UNKNOWN", "92", "99", "2003", "2011", "c", - "UNNEST", "99", "2003", "2011", "c", - "UNTIL", "92", "99", "2003", - "UPDATE", "92", "99", "2003", "2011", "c", - "UPPER", "92", "2011", "c", - "UPSERT", "c", - "USAGE", "92", "99", - "USER", "92", "99", "2003", "2011", "c", - "USING", "92", "99", "2003", "2011", "c", - "VALUE", "92", "99", "2003", "2011", "c", - "VALUES", "92", "99", "2003", "2011", "c", - "VARBINARY", "2011", "c", - "VARCHAR", "92", "99", "2003", "2011", "c", - "VARYING", "92", "99", "2003", "2011", "c", - "VAR_POP", "2011", "c", - "VAR_SAMP", "2011", "c", - "VERSION", "2011", - "VERSIONING", "2011", - "VERSIONS", "2011", - "VIEW", "92", "99", - "WHEN", "92", "99", "2003", "2011", "c", - "WHENEVER", "92", "99", "2003", "2011", "c", - "WHERE", "92", "99", "2003", "2011", "c", - "WHILE", "92", "99", "2003", - "WIDTH_BUCKET", "2011", "c", - "WINDOW", "99", "2003", "2011", "c", - "WITH", "92", "99", "2003", "2011", "c", - "WITHIN", "99", "2003", "2011", "c", - "WITHOUT", "99", "2003", "2011", "c", - "WORK", "92", "99", - "WRITE", "92", "99", - "YEAR", "92", "99", "2003", "2011", "c", - "YEARS", "2011", - "ZONE", "92", "99"); + "ABS", "2011", "2014", "c", + "ABSOLUTE", "92", "99", + "ACTION", "92", "99", + "ADD", "92", "99", "2003", + "AFTER", "99", + "ALL", "92", "99", "2003", "2011", "2014", "c", + "ALLOCATE", "92", "99", "2003", "2011", "2014", "c", + "ALLOW", "c", + "ALTER", "92", "99", "2003", "2011", "2014", "c", + "AND", "92", "99", "2003", "2011", "2014", "c", + "ANY", "92", "99", "2003", "2011", "2014", "c", + "ARE", "92", "99", "2003", "2011", "2014", "c", + "ARRAY", "99", "2003", "2011", "2014", "c", + "ARRAY_AGG", "2011", + "ARRAY_MAX_CARDINALITY", "2014", "c", + "AS", "92", "99", "2003", "2011", "2014", "c", + "ASC", "92", "99", + "ASENSITIVE", "99", "2003", "2011", "2014", "c", + "ASSERTION", "92", "99", + "ASYMMETRIC", "99", "2003", "2011", "2014", "c", + "AT", "92", "99", "2003", "2011", "2014", "c", + "ATOMIC", "99", "2003", "2011", "2014", "c", + "AUTHORIZATION", "92", "99", "2003", "2011", "2014", "c", + "AVG", "92", "2011", "2014", "c", + "BEFORE", "99", + "BEGIN", "92", "99", "2003", "2011", "2014", "c", + "BEGIN_FRAME", "2014", "c", + "BEGIN_PARTITION", "2014", "c", + "BETWEEN", "92", "99", "2003", "2011", "2014", "c", + "BIGINT", "2003", "2011", "2014", "c", + "BINARY", "99", "2003", "2011", "2014", "c", + "BIT", "92", "99", "c", + "BIT_LENGTH", "92", + "BLOB", "99", "2003", "2011", "2014", "c", + "BOOLEAN", "99", "2003", "2011", "2014", "c", + "BOTH", "92", "99", "2003", "2011", "2014", "c", + "BREADTH", "99", + "BY", "92", "99", "2003", "2011", "2014", "c", + "CALL", "92", "99", "2003", "2011", "2014", "c", + "CALLED", "2003", "2011", "2014", "c", + "CARDINALITY", "2011", "2014", "c", + "CASCADE", "92", "99", + "CASCADED", "92", "99", "2003", "2011", "2014", "c", + "CASE", "92", "99", "2003", "2011", "2014", "c", + "CAST", "92", "99", "2003", "2011", "2014", "c", + "CATALOG", "92", "99", + "CEIL", "2011", "2014", "c", + "CEILING", "2011", "2014", "c", + "CHAR", "92", "99", "2003", "2011", "2014", "c", + "CHARACTER", "92", "99", "2003", "2011", "2014", "c", + "CHARACTER_LENGTH", "92", "2011", "2014", "c", + "CHAR_LENGTH", "92", "2011", "2014", "c", + "CHECK", "92", "99", "2003", "2011", "2014", "c", + "CLASSIFIER", "2014", "c", + "CLOB", "99", "2003", "2011", "2014", "c", + "CLOSE", "92", "99", "2003", "2011", "2014", "c", + "COALESCE", "92", "2011", "2014", "c", + "COLLATE", "92", "99", "2003", "2011", "2014", "c", + "COLLATION", "92", "99", + "COLLECT", "2011", "2014", "c", + "COLUMN", "92", "99", "2003", "2011", "2014", "c", + "COMMIT", "92", "99", "2003", "2011", "2014", "c", + "CONDITION", "92", "99", "2003", "2011", "2014", "c", + "CONNECT", "92", "99", "2003", "2011", "2014", "c", + "CONNECTION", "92", "99", + "CONSTRAINT", "92", "99", "2003", "2011", "2014", "c", + "CONSTRAINTS", "92", "99", + "CONSTRUCTOR", "99", + "CONTAINS", "92", "2011", "2014", "c", + "CONTINUE", "92", "99", "2003", + "CONVERT", "92", "2011", "2014", "c", + "CORR", "2011", "2014", "c", + "CORRESPONDING", "92", "99", "2003", "2011", "2014", "c", + "COUNT", "92", "2011", "2014", "c", + "COVAR_POP", "2011", "2014", "c", + "COVAR_SAMP", "2011", "2014", "c", + "CREATE", "92", "99", "2003", "2011", "2014", "c", + "CROSS", "92", "99", "2003", "2011", "2014", "c", + "CUBE", "99", "2003", "2011", "2014", "c", + "CUME_DIST", "2011", "2014", "c", + "CURRENT", "92", "99", "2003", "2011", "2014", "c", + "CURRENT_CATALOG", "2011", "2014", "c", + "CURRENT_DATE", "92", "99", "2003", "2011", "2014", "c", + "CURRENT_DEFAULT_TRANSFORM_GROUP", "99", "2003", "2011", "2014", "c", + "CURRENT_PATH", "92", "99", "2003", "2011", "2014", "c", + "CURRENT_ROLE", "99", "2003", "2011", "2014", "c", + "CURRENT_ROW", "2014", "c", + "CURRENT_SCHEMA", "2011", "2014", "c", + "CURRENT_TIME", "92", "99", "2003", "2011", "2014", "c", + "CURRENT_TIMESTAMP", "92", "99", "2003", "2011", "2014", "c", + "CURRENT_TRANSFORM_GROUP_FOR_TYPE", "99", "2003", "2011", "2014", "c", + "CURRENT_USER", "92", "99", "2003", "2011", "2014", "c", + "CURSOR", "92", "99", "2003", "2011", "2014", "c", + "CYCLE", "99", "2003", "2011", "2014", "c", + "DATA", "99", + "DATE", "92", "99", "2003", "2011", "2014", "c", + "DAY", "92", "99", "2003", "2011", "2014", "c", + "DAYS", "2011", + "DEALLOCATE", "92", "99", "2003", "2011", "2014", "c", + "DEC", "92", "99", "2003", "2011", "2014", "c", + "DECIMAL", "92", "99", "2003", "2011", "2014", "c", + "DECLARE", "92", "99", "2003", "2011", "2014", "c", + "DEFAULT", "92", "99", "2003", "2011", "2014", "c", + "DEFERRABLE", "92", "99", + "DEFERRED", "92", "99", + "DEFINE", "2014", "c", + "DELETE", "92", "99", "2003", "2011", "2014", "c", + "DENSE_RANK", "2011", "2014", "c", + "DEPTH", "99", + "DEREF", "99", "2003", "2011", "2014", "c", + "DESC", "92", "99", + "DESCRIBE", "92", "99", "2003", "2011", "2014", "c", + "DESCRIPTOR", "92", "99", + "DETERMINISTIC", "92", "99", "2003", "2011", "2014", "c", + "DIAGNOSTICS", "92", "99", + "DISALLOW", "c", + "DISCONNECT", "92", "99", "2003", "2011", "2014", "c", + "DISTINCT", "92", "99", "2003", "2011", "2014", "c", + "DO", "92", "99", "2003", + "DOMAIN", "92", "99", + "DOUBLE", "92", "99", "2003", "2011", "2014", "c", + "DROP", "92", "99", "2003", "2011", "2014", "c", + "DYNAMIC", "99", "2003", "2011", "2014", "c", + "EACH", "99", "2003", "2011", "2014", "c", + "ELEMENT", "2003", "2011", "2014", "c", + "ELSE", "92", "99", "2003", "2011", "2014", "c", + "ELSEIF", "92", "99", "2003", + "EMPTY", "2014", "c", + "END", "92", "99", "2003", "2011", "2014", "c", + "END-EXEC", "2011", "2014", "c", + "END_FRAME", "2014", "c", + "END_PARTITION", "2014", "c", + "EQUALS", "99", "2014", "c", + "ESCAPE", "92", "99", "2003", "2011", "2014", "c", + "EVERY", "2011", "2014", "c", + "EXCEPT", "92", "99", "2003", "2011", "2014", "c", + "EXCEPTION", "92", "99", + "EXEC", "92", "99", "2003", "2011", "2014", "c", + "EXECUTE", "92", "99", "2003", "2011", "2014", "c", + "EXISTS", "92", "99", "2003", "2011", "2014", "c", + "EXIT", "92", "99", "2003", + "EXP", "2011", "2014", "c", + "EXPLAIN", "c", + "EXTEND", "c", + "EXTERNAL", "92", "99", "2003", "2011", "2014", "c", + "EXTRACT", "92", "2011", "2014", "c", + "FALSE", "92", "99", "2003", "2011", "2014", "c", + "FETCH", "92", "99", "2003", "2011", "2014", "c", + "FILTER", "99", "2003", "2011", "2014", "c", + "FIRST", "92", "99", + "FIRST_VALUE", "2011", "2014", "c", + "FLOAT", "92", "99", "2003", "2011", "2014", "c", + "FLOOR", "2011", "2014", "c", + "FOR", "92", "99", "2003", "2011", "2014", "c", + "FOREIGN", "92", "99", "2003", "2011", "2014", "c", + "FOREVER", "2011", + "FOUND", "92", "99", + "FRAME_ROW", "2014", "c", + "FREE", "99", "2003", "2011", "2014", "c", + "FROM", "92", "99", "2003", "2011", "2014", "c", + "FULL", "92", "99", "2003", "2011", "2014", "c", + "FUNCTION", "92", "99", "2003", "2011", "2014", "c", + "FUSION", "2011", "2014", "c", + "GENERAL", "99", + "GET", "92", "99", "2003", "2011", "2014", "c", + "GLOBAL", "92", "99", "2003", "2011", "2014", "c", + "GO", "92", "99", + "GOTO", "92", "99", + "GRANT", "92", "99", "2003", "2011", "2014", "c", + "GROUP", "92", "99", "2003", "2011", "2014", "c", + "GROUPING", "99", "2003", "2011", "2014", "c", + "GROUPS", "2014", "c", + "HANDLER", "92", "99", "2003", + "HAVING", "92", "99", "2003", "2011", "2014", "c", + "HOLD", "99", "2003", "2011", "2014", "c", + "HOUR", "92", "99", "2003", "2011", "2014", "c", + "HOURS", "2011", + "IDENTITY", "92", "99", "2003", "2011", "2014", "c", + "IF", "92", "99", "2003", + "IMMEDIATE", "92", "99", "2003", + "IMMEDIATELY", + "IMPORT", "c", + "IN", "92", "99", "2003", "2011", "2014", "c", + "INDICATOR", "92", "99", "2003", "2011", "2014", "c", + "INITIAL", "2014", "c", + "INITIALLY", "92", "99", + "INNER", "92", "99", "2003", "2011", "2014", "c", + "INOUT", "92", "99", "2003", "2011", "2014", "c", + "INPUT", "92", "99", "2003", + "INSENSITIVE", "92", "99", "2003", "2011", "2014", "c", + "INSERT", "92", "99", "2003", "2011", "2014", "c", + "INT", "92", "99", "2003", "2011", "2014", "c", + "INTEGER", "92", "99", "2003", "2011", "2014", "c", + "INTERSECT", "92", "99", "2003", "2011", "2014", "c", + "INTERSECTION", "2011", "2014", "c", + "INTERVAL", "92", "99", "2003", "2011", "2014", "c", + "INTO", "92", "99", "2003", "2011", "2014", "c", + "IS", "92", "99", "2003", "2011", "2014", "c", + "ISOLATION", "92", "99", + "ITERATE", "99", "2003", + "JOIN", "92", "99", "2003", "2011", "2014", "c", + "KEEP", "2011", + "KEY", "92", "99", + "LAG", "2011", "2014", "c", + "LANGUAGE", "92", "99", "2003", "2011", "2014", "c", + "LARGE", "99", "2003", "2011", "2014", "c", + "LAST", "92", "99", + "LAST_VALUE", "2011", "2014", "c", + "LATERAL", "99", "2003", "2011", "2014", "c", + "LEAD", "2011", "2014", "c", + "LEADING", "92", "99", "2003", "2011", "2014", "c", + "LEAVE", "92", "99", "2003", + "LEFT", "92", "99", "2003", "2011", "2014", "c", + "LEVEL", "92", "99", + "LIKE", "92", "99", "2003", "2011", "2014", "c", + "LIKE_REGEX", "2011", "2014", "c", + "LIMIT", "c", + "LN", "2011", "2014", "c", + "LOCAL", "92", "99", "2003", "2011", "2014", "c", + "LOCALTIME", "99", "2003", "2011", "2014", "c", + "LOCALTIMESTAMP", "99", "2003", "2011", "2014", "c", + "LOCATOR", "99", + "LOOP", "92", "99", "2003", + "LOWER", "92", "2011", "2014", "c", + "MAP", "99", + "MATCH", "92", "99", "2003", "2011", "2014", "c", + "MATCHES", "2014", "c", + "MATCH_NUMBER", "2014", "c", + "MATCH_RECOGNIZE", "2014", "c", + "MAX", "92", "2011", "2014", "c", + "MAX_CARDINALITY", "2011", + "MEASURES", "c", + "MEMBER", "2003", "2011", "2014", "c", + "MERGE", "2003", "2011", "2014", "c", + "METHOD", "99", "2003", "2011", "2014", "c", + "MIN", "92", "2011", "2014", "c", + "MINUS", "c", + "MINUTE", "92", "99", "2003", "2011", "2014", "c", + "MINUTES", "2011", + "MOD", "2011", "2014", "c", + "MODIFIES", "99", "2003", "2011", "2014", "c", + "MODULE", "92", "99", "2003", "2011", "2014", "c", + "MONTH", "92", "99", "2003", "2011", "2014", "c", + "MULTISET", "2003", "2011", "2014", "c", + "NAMES", "92", "99", + "NATIONAL", "92", "99", "2003", "2011", "2014", "c", + "NATURAL", "92", "99", "2003", "2011", "2014", "c", + "NCHAR", "92", "99", "2003", "2011", "2014", "c", + "NCLOB", "99", "2003", "2011", "2014", "c", + "NEW", "99", "2003", "2011", "2014", "c", + "NEXT", "92", "99", "c", + "NO", "92", "99", "2003", "2011", "2014", "c", + "NONE", "99", "2003", "2011", "2014", "c", + "NORMALIZE", "2011", "2014", "c", + "NOT", "92", "99", "2003", "2011", "2014", "c", + "NTH_VALUE", "2011", "2014", "c", + "NTILE", "2011", "2014", "c", + "NULL", "92", "99", "2003", "2011", "2014", "c", + "NULLIF", "92", "2011", "2014", "c", + "NUMERIC", "92", "99", "2003", "2011", "2014", "c", + "OBJECT", "99", + "OCCURRENCES_REGEX", "2011", "2014", "c", + "OCTET_LENGTH", "92", "2011", "2014", "c", + "OF", "92", "99", "2003", "2011", "2014", "c", + "OFFSET", "2011", "2014", "c", + "OLD", "99", "2003", "2011", "2014", "c", + "OMIT", "2014", "c", + "ON", "92", "99", "2003", "2011", "2014", "c", + "ONE", "2014", "c", + "ONLY", "92", "99", "2003", "2011", "2014", "c", + "OPEN", "92", "99", "2003", "2011", "2014", "c", + "OPTION", "92", "99", + "OR", "92", "99", "2003", "2011", "2014", "c", + "ORDER", "92", "99", "2003", "2011", "2014", "c", + "ORDINALITY", "99", + "OUT", "92", "99", "2003", "2011", "2014", "c", + "OUTER", "92", "99", "2003", "2011", "2014", "c", + "OUTPUT", "92", "99", "2003", + "OVER", "99", "2003", "2011", "2014", "c", + "OVERLAPS", "92", "99", "2003", "2011", "2014", "c", + "OVERLAY", "2011", "2014", "c", + "PAD", "92", "99", + "PARAMETER", "92", "99", "2003", "2011", "2014", "c", + "PARTIAL", "92", "99", + "PARTITION", "99", "2003", "2011", "2014", "c", + "PATH", "92", "99", + "PATTERN", "2014", "c", + "PER", "2014", "c", + "PERCENT", "2014", "c", + "PERCENTILE_CONT", "2011", "2014", "c", + "PERCENTILE_DISC", "2011", "2014", "c", + "PERCENT_RANK", "2011", "2014", "c", + "PERIOD", "2014", "c", + "PERMUTE", "c", + "PORTION", "2014", "c", + "POSITION", "92", "2011", "2014", "c", + "POSITION_REGEX", "2011", "2014", "c", + "POWER", "2011", "2014", "c", + "PRECEDES", "2014", "c", + "PRECISION", "92", "99", "2003", "2011", "2014", "c", + "PREPARE", "92", "99", "2003", "2011", "2014", "c", + "PRESERVE", "92", "99", + "PREV", "c", + "PRIMARY", "92", "99", "2003", "2011", "2014", "c", + "PRIOR", "92", "99", + "PRIVILEGES", "92", "99", + "PROCEDURE", "92", "99", "2003", "2011", "2014", "c", + "PUBLIC", "92", "99", + "RANGE", "99", "2003", "2011", "2014", "c", + "RANK", "2011", "2014", "c", + "READ", "92", "99", + "READS", "99", "2003", "2011", "2014", "c", + "REAL", "92", "99", "2003", "2011", "2014", "c", + "RECURSIVE", "99", "2003", "2011", "2014", "c", + "REF", "99", "2003", "2011", "2014", "c", + "REFERENCES", "92", "99", "2003", "2011", "2014", "c", + "REFERENCING", "99", "2003", "2011", "2014", "c", + "REGR_AVGX", "2011", "2014", "c", + "REGR_AVGY", "2011", "2014", "c", + "REGR_COUNT", "2011", "2014", "c", + "REGR_INTERCEPT", "2011", "2014", "c", + "REGR_R2", "2011", "2014", "c", + "REGR_SLOPE", "2011", "2014", "c", + "REGR_SXX", "2011", "2014", "c", + "REGR_SXY", "2011", "2014", "c", + "REGR_SYY", "2011", "2014", "c", + "RELATIVE", "92", "99", + "RELEASE", "99", "2003", "2011", "2014", "c", + "REPEAT", "92", "99", "2003", + "RESET", "c", + "RESIGNAL", "92", "99", "2003", + "RESTRICT", "92", "99", + "RESULT", "99", "2003", "2011", "2014", "c", + "RETURN", "92", "99", "2003", "2011", "2014", "c", + "RETURNS", "92", "99", "2003", "2011", "2014", "c", + "REVOKE", "92", "99", "2003", "2011", "2014", "c", + "RIGHT", "92", "99", "2003", "2011", "2014", "c", + "ROLE", "99", + "ROLLBACK", "92", "99", "2003", "2011", "2014", "c", + "ROLLUP", "99", "2003", "2011", "2014", "c", + "ROUTINE", "92", "99", + "ROW", "99", "2003", "2011", "2014", "c", + "ROWS", "92", "99", "2003", "2011", "2014", "c", + "ROW_NUMBER", "2011", "2014", "c", + "RUNNING", "2014", "c", + "SAVEPOINT", "99", "2003", "2011", "2014", "c", + "SCHEMA", "92", "99", + "SCOPE", "99", "2003", "2011", "2014", "c", + "SCROLL", "92", "99", "2003", "2011", "2014", "c", + "SEARCH", "99", "2003", "2011", "2014", "c", + "SECOND", "92", "99", "2003", "2011", "2014", "c", + "SECONDS", "2011", + "SECTION", "92", "99", + "SEEK", "2014", "c", + "SELECT", "92", "99", "2003", "2011", "2014", "c", + "SENSITIVE", "99", "2003", "2011", "2014", "c", + "SESSION", "92", "99", + "SESSION_USER", "92", "99", "2003", "2011", "2014", "c", + "SET", "92", "99", "2003", "2011", "2014", "c", + "SETS", "99", + "SHOW", "2014", "c", + "SIGNAL", "92", "99", "2003", + "SIMILAR", "99", "2003", "2011", "2014", "c", + "SIZE", "92", "99", + "SKIP", "2014", "c", + "SMALLINT", "92", "99", "2003", "2011", "2014", "c", + "SOME", "92", "99", "2003", "2011", "2014", "c", + "SPACE", "92", "99", + "SPECIFIC", "92", "99", "2003", "2011", "2014", "c", + "SPECIFICTYPE", "99", "2003", "2011", "2014", "c", + "SQL", "92", "99", "2003", "2011", "2014", "c", + "SQLCODE", "92", + "SQLERROR", "92", + "SQLEXCEPTION", "92", "99", "2003", "2011", "2014", "c", + "SQLSTATE", "92", "99", "2003", "2011", "2014", "c", + "SQLWARNING", "92", "99", "2003", "2011", "2014", "c", + "SQRT", "2011", "2014", "c", + "START", "99", "2003", "2011", "2014", "c", + "STATE", "99", + "STATIC", "99", "2003", "2011", "2014", "c", + "STDDEV_POP", "2011", "2014", "c", + "STDDEV_SAMP", "2011", "2014", "c", + "STREAM", "c", + "SUBMULTISET", "2003", "2011", "2014", "c", + "SUBSET", "2014", "c", + "SUBSTRING", "92", "2011", "2014", "c", + "SUBSTRING_REGEX", "2011", "2014", "c", + "SUCCEEDS", "2014", "c", + "SUM", "92", "2011", "2014", "c", + "SYMMETRIC", "99", "2003", "2011", "2014", "c", + "SYSTEM", "99", "2003", "2011", "2014", "c", + "SYSTEM_TIME", "2014", "c", + "SYSTEM_USER", "92", "99", "2003", "2011", "2014", "c", + "TABLE", "92", "99", "2003", "2011", "2014", "c", + "TABLESAMPLE", "2003", "2011", "2014", "c", + "TEMPORARY", "92", "99", + "THEN", "92", "99", "2003", "2011", "2014", "c", + "TIME", "92", "99", "2003", "2011", "2014", "c", + "TIMESTAMP", "92", "99", "2003", "2011", "2014", "c", + "TIMEZONE_HOUR", "92", "99", "2003", "2011", "2014", "c", + "TIMEZONE_MINUTE", "92", "99", "2003", "2011", "2014", "c", + "TINYINT", "c", + "TO", "92", "99", "2003", "2011", "2014", "c", + "TRAILING", "92", "99", "2003", "2011", "2014", "c", + "TRANSACTION", "92", "99", + "TRANSLATE", "92", "2011", "2014", "c", + "TRANSLATE_REGEX", "2011", "2014", "c", + "TRANSLATION", "92", "99", "2003", "2011", "2014", "c", + "TREAT", "99", "2003", "2011", "2014", "c", + "TRIGGER", "99", "2003", "2011", "2014", "c", + "TRIM", "92", "2011", "2014", "c", + "TRIM_ARRAY", "2011", "2014", "c", + "TRUE", "92", "99", "2003", "2011", "2014", "c", + "TRUNCATE", "2011", "2014", "c", + "UESCAPE", "2011", "2014", "c", + "UNDER", "99", + "UNDO", "92", "99", "2003", + "UNION", "92", "99", "2003", "2011", "2014", "c", + "UNIQUE", "92", "99", "2003", "2011", "2014", "c", + "UNKNOWN", "92", "99", "2003", "2011", "2014", "c", + "UNNEST", "99", "2003", "2011", "2014", "c", + "UNTIL", "92", "99", "2003", + "UPDATE", "92", "99", "2003", "2011", "2014", "c", + "UPPER", "92", "2011", "2014", "c", + "UPSERT", "c", + "USAGE", "92", "99", + "USER", "92", "99", "2003", "2011", "2014", "c", + "USING", "92", "99", "2003", "2011", "2014", "c", + "VALUE", "92", "99", "2003", "2011", "2014", "c", + "VALUES", "92", "99", "2003", "2011", "2014", "c", + "VALUE_OF", "2014", "c", + "VARBINARY", "2011", "2014", "c", + "VARCHAR", "92", "99", "2003", "2011", "2014", "c", + "VARYING", "92", "99", "2003", "2011", "2014", "c", + "VAR_POP", "2011", "2014", "c", + "VAR_SAMP", "2011", "2014", "c", + "VERSION", "2011", + "VERSIONING", "2011", "2014", "c", + "VERSIONS", "2011", + "VIEW", "92", "99", + "WHEN", "92", "99", "2003", "2011", "2014", "c", + "WHENEVER", "92", "99", "2003", "2011", "2014", "c", + "WHERE", "92", "99", "2003", "2011", "2014", "c", + "WHILE", "92", "99", "2003", + "WIDTH_BUCKET", "2011", "2014", "c", + "WINDOW", "99", "2003", "2011", "2014", "c", + "WITH", "92", "99", "2003", "2011", "2014", "c", + "WITHIN", "99", "2003", "2011", "2014", "c", + "WITHOUT", "99", "2003", "2011", "2014", "c", + "WORK", "92", "99", + "WRITE", "92", "99", + "YEAR", "92", "99", "2003", "2011", "2014", "c", + "YEARS", "2011", + "ZONE", "92", "99"); private static final String ANY = "(?s).*"; @@ -628,6 +657,7 @@ public class SqlParserTest { case "99": case "2003": case "2011": + case "2014": case "c": assert r != null; if (dialect == null || dialect.equals(w)) { @@ -1602,7 +1632,7 @@ public class SqlParserTest { // SQL standard does not allow WITH to contain WITH checkFails("with emp2 as (select * from emp)\n" + "^with^ dept2 as (select * from dept)\n" - + "select 1 as one from emp, dept", + + "select 1 as uno from emp, dept", "(?s)Encountered \"with\" at .*"); } @@ -1611,10 +1641,10 @@ public class SqlParserTest { check("with emp2 as (select * from emp)\n" + "(\n" + " with dept2 as (select * from dept)\n" - + " select 1 as one from empDept)", + + " select 1 as uno from empDept)", "WITH `EMP2` AS (SELECT *\n" + "FROM `EMP`) (WITH `DEPT2` AS (SELECT *\n" - + "FROM `DEPT`) (SELECT 1 AS `ONE`\n" + + "FROM `DEPT`) (SELECT 1 AS `UNO`\n" + "FROM `EMPDEPT`))"); } @@ -2172,8 +2202,8 @@ public class SqlParserTest { checkExpSame("'foo'"); checkExpSame("100"); check( - "select 1 as one, 'x' as x, null as n from emp", - "SELECT 1 AS `ONE`, 'x' AS `X`, NULL AS `N`\n" + "select 1 as uno, 'x' as x, null as n from emp", + "SELECT 1 AS `UNO`, 'x' AS `X`, NULL AS `N`\n" + "FROM `EMP`"); // Even though it looks like a date, it's just a string. @@ -6865,9 +6895,11 @@ public class SqlParserTest { } } - assertThat("At least one new reserved keyword is added in parser. " - + "Make sure to check the new keywords are intended to be a reserved keywords.", - reservedKeywords, is(getReservedKeywords())); + final String reason = "The parser has at least one new reserved keyword. " + + "Are you sure it should be reserved? Difference:\n" + + DiffTestCase.diffLines(ImmutableList.copyOf(getReservedKeywords()), + ImmutableList.copyOf(reservedKeywords)); + assertThat(reason, reservedKeywords, is(getReservedKeywords())); } /** Generates a copy of {@code reference.md} with the current set of key http://git-wip-us.apache.org/repos/asf/calcite/blob/d97c14c5/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java b/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java index d598fbf..356709b 100644 --- a/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java +++ b/core/src/test/java/org/apache/calcite/sql/test/SqlAdvisorTest.java @@ -157,7 +157,9 @@ public class SqlAdvisorTest extends SqlValidatorTestCase { "KEYWORD(GROUPING)", "KEYWORD(HOUR)", "KEYWORD(INTERVAL)", + "KEYWORD(LAG)", "KEYWORD(LAST_VALUE)", + "KEYWORD(LEAD)", "KEYWORD(LN)", "KEYWORD(LOCALTIME)", "KEYWORD(LOCALTIMESTAMP)", @@ -171,6 +173,7 @@ public class SqlAdvisorTest extends SqlValidatorTestCase { "KEYWORD(NEW)", "KEYWORD(NEXT)", "KEYWORD(NOT)", + "KEYWORD(NTILE)", "KEYWORD(NULL)", "KEYWORD(NULLIF)", "KEYWORD(OCTET_LENGTH)", @@ -199,6 +202,7 @@ public class SqlAdvisorTest extends SqlValidatorTestCase { "KEYWORD(TRANSLATE)", "KEYWORD(TRIM)", "KEYWORD(TRUE)", + "KEYWORD(TRUNCATE)", "KEYWORD(UNKNOWN)", "KEYWORD(UPPER)", "KEYWORD(USER)", http://git-wip-us.apache.org/repos/asf/calcite/blob/d97c14c5/core/src/test/java/org/apache/calcite/test/JdbcTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/JdbcTest.java b/core/src/test/java/org/apache/calcite/test/JdbcTest.java index 8138ebf..6819052 100644 --- a/core/src/test/java/org/apache/calcite/test/JdbcTest.java +++ b/core/src/test/java/org/apache/calcite/test/JdbcTest.java @@ -376,7 +376,7 @@ public class JdbcTest { .runs(); modelWithView( - "select \"name\", \"empid\" as e, \"salary\", \"empid\" + 3 as e3, 1 as one\n" + "select \"name\", \"empid\" as e, \"salary\", \"empid\" + 3 as e3, 1 as uno\n" + "from \"MUTABLE_EMPLOYEES\"\n" + "where \"commission\" = 100 AND \"deptno\" = 20", true) http://git-wip-us.apache.org/repos/asf/calcite/blob/d97c14c5/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java index 494ec44..64ff7a5 100644 --- a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java +++ b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java @@ -97,7 +97,7 @@ public class SqlToRelConverterTest extends SqlToRelTestBase { @Test public void testAliasList() { final String sql = "select a + b from (\n" - + " select deptno, 1 as one, name from dept\n" + + " select deptno, 1 as uno, name from dept\n" + ") as d(a, b, c)\n" + "where c like 'X%'"; sql(sql).ok();
