diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index 9d72bb4..9c7603c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -2216,7 +2216,7 @@ insertClause @after { popMsg(state); } : KW_INSERT KW_OVERWRITE destination ifNotExists? -> ^(TOK_DESTINATION destination ifNotExists?) - | KW_INSERT KW_INTO KW_TABLE tableOrPartition + | KW_INSERT KW_INTO KW_TABLE? tableOrPartition -> ^(TOK_INSERT_INTO tableOrPartition) ; diff --git ql/src/test/org/apache/hadoop/hive/ql/parse/TestIUD.java ql/src/test/org/apache/hadoop/hive/ql/parse/TestIUD.java index bdce960..a8d03a9 100644 --- ql/src/test/org/apache/hadoop/hive/ql/parse/TestIUD.java +++ ql/src/test/org/apache/hadoop/hive/ql/parse/TestIUD.java @@ -193,7 +193,7 @@ public void testSelectStarFromVirtTable2RowNamedProjections() throws ParseExcept } @Test public void testInsertIntoTableAsSelectFromNamedVirtTable() throws ParseException { - ASTNode ast = parse("insert into table page_view select a,b as c from (values (1,2),(3,4)) as VC(a,b) where b = 9"); + ASTNode ast = parse("insert into page_view select a,b as c from (values (1,2),(3,4)) as VC(a,b) where b = 9"); Assert.assertEquals("AST doesn't match", "(TOK_QUERY " + "(TOK_FROM " + @@ -209,7 +209,7 @@ public void testInsertIntoTableAsSelectFromNamedVirtTable() throws ParseExceptio } @Test public void testInsertIntoTableFromAnonymousTable1Row() throws ParseException { - ASTNode ast = parse("insert into table page_view values(1,2)"); + ASTNode ast = parse("insert into page_view values(1,2)"); Assert.assertEquals("AST doesn't match", "(TOK_QUERY " + "(TOK_FROM " + @@ -232,5 +232,16 @@ public void testInsertIntoTableFromAnonymousTable() throws ParseException { "(TOK_INSERT (TOK_INSERT_INTO (TOK_TAB (TOK_TABNAME page_view))) " + "(TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF))))", ast.toStringTree()); + //same query as above less the "table" keyword KW_TABLE + ast = parse("insert into page_view values(-1,2),(3,+4)"); + Assert.assertEquals("AST doesn't match", + "(TOK_QUERY " + + "(TOK_FROM " + + "(TOK_VIRTUAL_TABLE " + + "(TOK_VIRTUAL_TABREF TOK_ANONYMOUS) " + + "(TOK_VALUES_TABLE (TOK_VALUE_ROW (- 1) 2) (TOK_VALUE_ROW 3 (+ 4))))) " + + "(TOK_INSERT (TOK_INSERT_INTO (TOK_TAB (TOK_TABNAME page_view))) " + + "(TOK_SELECT (TOK_SELEXPR TOK_ALLCOLREF))))", + ast.toStringTree()); } }