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 c903e8f..f0f877c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -2108,8 +2108,12 @@ regularBody[boolean topLevel] i=insertClause ( s=selectStatement[topLevel] - {$s.tree.getChild(1).replaceChildren(0, 0, $i.tree);} -> {$s.tree} - | + { + int insert = $s.tree.getChildCount() == 1 ? 0 : 1; + $s.tree.getChild(insert).replaceChildren(0, 0, $i.tree); + } + -> {$s.tree} + | valuesClause -> ^(TOK_QUERY ^(TOK_FROM diff --git ql/src/test/queries/clientpositive/select_dummy_source.q ql/src/test/queries/clientpositive/select_dummy_source.q index 25a1a81..b5fe8a5 100644 --- ql/src/test/queries/clientpositive/select_dummy_source.q +++ ql/src/test/queries/clientpositive/select_dummy_source.q @@ -31,3 +31,11 @@ explain select 2 + 3,x from (select 1 + 2 x) X; select 2 + 3,x from (select 1 + 2 x) X; +-- insert +create table dummy_tbl (key int); + +explain +insert into table dummy_tbl select 1; +insert into table dummy_tbl select 1; + +select * from dummy_tbl; diff --git ql/src/test/results/clientpositive/select_dummy_source.q.out ql/src/test/results/clientpositive/select_dummy_source.q.out index 08311f0..7b09f46 100644 --- ql/src/test/results/clientpositive/select_dummy_source.q.out +++ ql/src/test/results/clientpositive/select_dummy_source.q.out @@ -267,3 +267,120 @@ POSTHOOK: type: QUERY POSTHOOK: Input: _dummy_database@_dummy_table #### A masked pattern was here #### 5 3 +PREHOOK: query: -- insert +create table dummy_tbl (key int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@dummy_tbl +POSTHOOK: query: -- insert +create table dummy_tbl (key int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@dummy_tbl +PREHOOK: query: explain +insert into table dummy_tbl select 1 +PREHOOK: type: QUERY +POSTHOOK: query: explain +insert into table dummy_tbl select 1 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-7 depends on stages: Stage-1 , consists of Stage-4, Stage-3, Stage-5 + Stage-4 + Stage-0 depends on stages: Stage-4, Stage-3, Stage-6 + Stage-2 depends on stages: Stage-0 + Stage-3 + Stage-5 + Stage-6 depends on stages: Stage-5 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: _dummy_table + Row Limit Per Split: 1 + Statistics: Num rows: 0 Data size: 1 Basic stats: PARTIAL Column stats: COMPLETE + Select Operator + expressions: 1 (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 0 Data size: 1 Basic stats: PARTIAL Column stats: COMPLETE + File Output Operator + compressed: false + Statistics: Num rows: 0 Data size: 1 Basic stats: PARTIAL Column stats: COMPLETE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.dummy_tbl + + Stage: Stage-7 + Conditional Operator + + Stage: Stage-4 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + + Stage: Stage-0 + Move Operator + tables: + replace: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.dummy_tbl + + Stage: Stage-2 + Stats-Aggr Operator + + Stage: Stage-3 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.dummy_tbl + + Stage: Stage-5 + Map Reduce + Map Operator Tree: + TableScan + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.dummy_tbl + + Stage: Stage-6 + Move Operator + files: + hdfs directory: true +#### A masked pattern was here #### + +PREHOOK: query: insert into table dummy_tbl select 1 +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +PREHOOK: Output: default@dummy_tbl +POSTHOOK: query: insert into table dummy_tbl select 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +POSTHOOK: Output: default@dummy_tbl +POSTHOOK: Lineage: dummy_tbl.key SIMPLE [] +PREHOOK: query: select * from dummy_tbl +PREHOOK: type: QUERY +PREHOOK: Input: default@dummy_tbl +#### A masked pattern was here #### +POSTHOOK: query: select * from dummy_tbl +POSTHOOK: type: QUERY +POSTHOOK: Input: default@dummy_tbl +#### A masked pattern was here #### +1