Index: ql/src/test/results/clientpositive/lateral_view.q.out =================================================================== --- ql/src/test/results/clientpositive/lateral_view.q.out (revision 959361) +++ ql/src/test/results/clientpositive/lateral_view.q.out (working copy) @@ -1,3 +1,11 @@ +PREHOOK: query: drop table tmp_pyang_lv +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table tmp_pyang_lv +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table tmp_pyang_src_rcfile +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table tmp_pyang_src_rcfile +POSTHOOK: type: DROPTABLE PREHOOK: query: create table tmp_pyang_lv (inputs string) stored as rcfile PREHOOK: type: CREATETABLE POSTHOOK: query: create table tmp_pyang_lv (inputs string) stored as rcfile @@ -106,7 +114,7 @@ Stage: Stage-2 Map Reduce Alias -> Map Operator Tree: - file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-16_286_7545304927031880480/10002 + file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-18_106_9034620860441095203/10002 Reduce Output Operator key expressions: expr: _col0 @@ -435,24 +443,24 @@ SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol SORT BY key ASC, myCol ASC LIMIT 1 PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-16_764_354722541681050276/10000 +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-18_796_9049380200712744361/10000 POSTHOOK: query: -- Verify that * selects columns from both tables SELECT * FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol SORT BY key ASC, myCol ASC LIMIT 1 POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-16_764_354722541681050276/10000 +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-18_796_9049380200712744361/10000 POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] 0 val_0 1 PREHOOK: query: -- TABLE.* should be supported SELECT myTable.* FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LIMIT 3 PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-23_656_7186983670906657556/10000 +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-30_926_5560150990363500224/10000 POSTHOOK: query: -- TABLE.* should be supported SELECT myTable.* FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LIMIT 3 POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-23_656_7186983670906657556/10000 +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-30_926_5560150990363500224/10000 POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] 1 2 @@ -461,12 +469,12 @@ SELECT myTable.myCol, myTable2.myCol2 FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LATERAL VIEW explode(array('a', 'b', 'c')) myTable2 AS myCol2 LIMIT 9 PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-27_321_7329581422596695757/10000 +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-35_372_242004829337409528/10000 POSTHOOK: query: -- Multiple lateral views should result in a Cartesian product SELECT myTable.myCol, myTable2.myCol2 FROM src LATERAL VIEW explode(array(1,2,3)) myTable AS myCol LATERAL VIEW explode(array('a', 'b', 'c')) myTable2 AS myCol2 LIMIT 9 POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-27_321_7329581422596695757/10000 +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-35_372_242004829337409528/10000 POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] 1 a 1 b @@ -481,12 +489,12 @@ SELECT myTable2.* FROM src LATERAL VIEW explode(array(array(1,2,3))) myTable AS myCol LATERAL VIEW explode(myTable.myCol) myTable2 AS myCol2 LIMIT 3 PREHOOK: type: QUERY PREHOOK: Input: default@src -PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-31_056_3810278535508636145/10000 +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-39_804_6654255887734709762/10000 POSTHOOK: query: -- Should be able to reference tables generated earlier SELECT myTable2.* FROM src LATERAL VIEW explode(array(array(1,2,3))) myTable AS myCol LATERAL VIEW explode(myTable.myCol) myTable2 AS myCol2 LIMIT 3 POSTHOOK: type: QUERY POSTHOOK: Input: default@src -POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-31_056_3810278535508636145/10000 +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-39_804_6654255887734709762/10000 POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] 1 2 @@ -558,18 +566,249 @@ PREHOOK: query: select myCol from tmp_pyang_lv LATERAL VIEW explode(array(1,2,3)) myTab as myCol limit 3 PREHOOK: type: QUERY PREHOOK: Input: default@tmp_pyang_lv -PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-35_530_6647775029322914068/10000 +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-44_250_7159327209493335750/10000 POSTHOOK: query: select myCol from tmp_pyang_lv LATERAL VIEW explode(array(1,2,3)) myTab as myCol limit 3 POSTHOOK: type: QUERY POSTHOOK: Input: default@tmp_pyang_lv -POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-06-18_19-54-35_530_6647775029322914068/10000 +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-44_250_7159327209493335750/10000 POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] 1 2 3 +PREHOOK: query: create table tmp_pyang_src_rcfile (key string, value array) stored as rcfile +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table tmp_pyang_src_rcfile (key string, value array) stored as rcfile +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@tmp_pyang_src_rcfile +POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +PREHOOK: query: insert overwrite table tmp_pyang_src_rcfile select key, array(value) from src limit 20 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@tmp_pyang_src_rcfile +POSTHOOK: query: insert overwrite table tmp_pyang_src_rcfile select key, array(value) from src limit 20 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@tmp_pyang_src_rcfile +POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: select key,value from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +PREHOOK: type: QUERY +PREHOOK: Input: default@tmp_pyang_src_rcfile +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-53_546_7089549546262090911/10000 +POSTHOOK: query: select key,value from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tmp_pyang_src_rcfile +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-53_546_7089549546262090911/10000 +POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +238 ["val_238"] +86 ["val_86"] +311 ["val_311"] +27 ["val_27"] +165 ["val_165"] +409 ["val_409"] +255 ["val_255"] +278 ["val_278"] +98 ["val_98"] +484 ["val_484"] +265 ["val_265"] +193 ["val_193"] +401 ["val_401"] +150 ["val_150"] +273 ["val_273"] +224 ["val_224"] +369 ["val_369"] +66 ["val_66"] +128 ["val_128"] +213 ["val_213"] +PREHOOK: query: select myTable from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +PREHOOK: type: QUERY +PREHOOK: Input: default@tmp_pyang_src_rcfile +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-58_240_5041163262121320613/10000 +POSTHOOK: query: select myTable from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tmp_pyang_src_rcfile +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-16-58_240_5041163262121320613/10000 +POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +val_238 +val_86 +val_311 +val_27 +val_165 +val_409 +val_255 +val_278 +val_98 +val_484 +val_265 +val_193 +val_401 +val_150 +val_273 +val_224 +val_369 +val_66 +val_128 +val_213 +PREHOOK: query: select * from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +PREHOOK: type: QUERY +PREHOOK: Input: default@tmp_pyang_src_rcfile +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-17-02_329_3297300629610085253/10000 +POSTHOOK: query: select * from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tmp_pyang_src_rcfile +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-17-02_329_3297300629610085253/10000 +POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +238 ["val_238"] val_238 +86 ["val_86"] val_86 +311 ["val_311"] val_311 +27 ["val_27"] val_27 +165 ["val_165"] val_165 +409 ["val_409"] val_409 +255 ["val_255"] val_255 +278 ["val_278"] val_278 +98 ["val_98"] val_98 +484 ["val_484"] val_484 +265 ["val_265"] val_265 +193 ["val_193"] val_193 +401 ["val_401"] val_401 +150 ["val_150"] val_150 +273 ["val_273"] val_273 +224 ["val_224"] val_224 +369 ["val_369"] val_369 +66 ["val_66"] val_66 +128 ["val_128"] val_128 +213 ["val_213"] val_213 +PREHOOK: query: select subq.key,subq.value +from ( +select * from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +)subq +PREHOOK: type: QUERY +PREHOOK: Input: default@tmp_pyang_src_rcfile +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-17-05_949_6967547537708159484/10000 +POSTHOOK: query: select subq.key,subq.value +from ( +select * from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +)subq +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tmp_pyang_src_rcfile +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-17-05_949_6967547537708159484/10000 +POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +238 ["val_238"] +86 ["val_86"] +311 ["val_311"] +27 ["val_27"] +165 ["val_165"] +409 ["val_409"] +255 ["val_255"] +278 ["val_278"] +98 ["val_98"] +484 ["val_484"] +265 ["val_265"] +193 ["val_193"] +401 ["val_401"] +150 ["val_150"] +273 ["val_273"] +224 ["val_224"] +369 ["val_369"] +66 ["val_66"] +128 ["val_128"] +213 ["val_213"] +PREHOOK: query: select subq.myTable +from ( +select * from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +)subq +PREHOOK: type: QUERY +PREHOOK: Input: default@tmp_pyang_src_rcfile +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-17-09_602_7355625759571684518/10000 +POSTHOOK: query: select subq.myTable +from ( +select * from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +)subq +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tmp_pyang_src_rcfile +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-17-09_602_7355625759571684518/10000 +POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +val_238 +val_86 +val_311 +val_27 +val_165 +val_409 +val_255 +val_278 +val_98 +val_484 +val_265 +val_193 +val_401 +val_150 +val_273 +val_224 +val_369 +val_66 +val_128 +val_213 +PREHOOK: query: select subq.key +from ( +select key, value from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +)subq +PREHOOK: type: QUERY +PREHOOK: Input: default@tmp_pyang_src_rcfile +PREHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-17-13_258_7096380498341920808/10000 +POSTHOOK: query: select subq.key +from ( +select key, value from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +)subq +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tmp_pyang_src_rcfile +POSTHOOK: Output: file:/var/folders/6g/6grtCwPMEf4sqHUPpy6xQG9ByHg/-Tmp-/heyongqiang/hive_2010-07-09_10-17-13_258_7096380498341920808/10000 +POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] +238 +86 +311 +27 +165 +409 +255 +278 +98 +484 +265 +193 +401 +150 +273 +224 +369 +66 +128 +213 +PREHOOK: query: drop table tmp_pyang_src_rcfile +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table tmp_pyang_src_rcfile +POSTHOOK: type: DROPTABLE +POSTHOOK: Output: default@tmp_pyang_src_rcfile +POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] PREHOOK: query: drop table tmp_pyang_lv PREHOOK: type: DROPTABLE POSTHOOK: query: drop table tmp_pyang_lv POSTHOOK: type: DROPTABLE POSTHOOK: Output: default@tmp_pyang_lv POSTHOOK: Lineage: tmp_pyang_lv.inputs SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: tmp_pyang_src_rcfile.value EXPRESSION [(src)src.FieldSchema(name:value, type:string, comment:default), ] Index: ql/src/test/queries/clientpositive/lateral_view.q =================================================================== --- ql/src/test/queries/clientpositive/lateral_view.q (revision 959361) +++ ql/src/test/queries/clientpositive/lateral_view.q (working copy) @@ -1,3 +1,6 @@ +drop table tmp_pyang_lv; +drop table tmp_pyang_src_rcfile; + create table tmp_pyang_lv (inputs string) stored as rcfile; insert overwrite table tmp_pyang_lv select key from src; @@ -20,4 +23,29 @@ select myCol from tmp_pyang_lv LATERAL VIEW explode(array(1,2,3)) myTab as myCol limit 3; + +create table tmp_pyang_src_rcfile (key string, value array) stored as rcfile; +insert overwrite table tmp_pyang_src_rcfile select key, array(value) from src limit 20; + +select key,value from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable; +select myTable from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable; +select * from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable; + +select subq.key,subq.value +from ( +select * from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +)subq; + +select subq.myTable +from ( +select * from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +)subq; + +select subq.key +from ( +select key, value from tmp_pyang_src_rcfile lateral view explode(value) myCol AS myTable +)subq; + + +drop table tmp_pyang_src_rcfile; drop table tmp_pyang_lv; Index: ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java (revision 958668) +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcFactory.java (working copy) @@ -290,12 +290,14 @@ // which should be fixed before remove this if ((child instanceof FileSinkOperator) || (child instanceof ScriptOperator) - || (child instanceof UDTFOperator) || (child instanceof LimitOperator) || (child instanceof UnionOperator)) { cppCtx.getPrunedColLists() .put(op, cppCtx.getColsFromSelectExpr(op)); return null; + } else if ((child instanceof UDTFOperator)) { + cppCtx.getPrunedColLists().remove(op); + return null; } } }