diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g index 15ca754..3affefe 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g @@ -686,7 +686,10 @@ sql11ReservedKeywordsUsedAsIdentifier KW_ALL | KW_ALTER | KW_ARRAY | KW_AS | KW_AUTHORIZATION | KW_BETWEEN | KW_BIGINT | KW_BINARY | KW_BOOLEAN | KW_BOTH | KW_BY | KW_CREATE | KW_CUBE | KW_CURRENT_DATE | KW_CURRENT_TIMESTAMP | KW_CURSOR | KW_DATE | KW_DECIMAL | KW_DELETE | KW_DESCRIBE | KW_DOUBLE | KW_DROP | KW_EXISTS | KW_EXTERNAL | KW_FALSE | KW_FETCH | KW_FLOAT | KW_FOR | KW_FULL | KW_GRANT - | KW_GROUP | KW_GROUPING | KW_IMPORT | KW_IN | KW_INNER | KW_INSERT | KW_INT | KW_INTERSECT | KW_INTO | KW_IS | KW_LATERAL + | KW_GROUP | KW_GROUPING | KW_IMPORT | KW_IN | KW_INNER | KW_INSERT | KW_INT | KW_INTERSECT + // due to HIVE-9792, added back in HIVE-12707 + | KW_INTERVAL + | KW_INTO | KW_IS | KW_LATERAL | KW_LEFT | KW_LIKE | KW_LOCAL | KW_NONE | KW_NULL | KW_OF | KW_ORDER | KW_OUT | KW_OUTER | KW_PARTITION | KW_PERCENT | KW_PROCEDURE | KW_RANGE | KW_READS | KW_REVOKE | KW_RIGHT | KW_ROLLUP | KW_ROW | KW_ROWS | KW_SET | KW_SMALLINT | KW_TABLE | KW_TIMESTAMP | KW_TO | KW_TRIGGER | KW_TRUE diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java index 97ae0d9..e20f768 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsNegative.java @@ -580,6 +580,20 @@ public void testSQL11ReservedKeyWords_INTERSECT() { } @Test + public void testSQL11ReservedKeyWords_INTERVAL() { + try { + parse("CREATE TABLE INTERVAL (col STRING)"); + Assert.assertFalse("Expected ParseException", true); + } catch (ParseException ex) { + Assert + .assertEquals( + "Failure didn't match.", + "line 1:13 Failed to recognize predicate 'INTERVAL'. Failed rule: 'identifier' in table name", + ex.getMessage()); + } + } + + @Test public void testSQL11ReservedKeyWords_INTO() { try { parse("CREATE TABLE INTO (col STRING)"); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsPositive.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsPositive.java index 2a68899..4421547 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsPositive.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestSQL11ReservedKeyWordsPositive.java @@ -440,6 +440,16 @@ public void testSQL11ReservedKeyWords_INTERSECT() throws ParseException { } @Test + public void testSQL11ReservedKeyWords_INTERVAL() throws ParseException { + ASTNode ast = parse("CREATE TABLE INTERVAL (col STRING)"); + Assert + .assertEquals( + "AST doesn't match", + "(TOK_CREATETABLE (TOK_TABNAME INTERVAL) TOK_LIKETABLE (TOK_TABCOLLIST (TOK_TABCOL col TOK_STRING)))", + ast.toStringTree()); + } + + @Test public void testSQL11ReservedKeyWords_INTO() throws ParseException { ASTNode ast = parse("CREATE TABLE INTO (col STRING)"); Assert