diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java index b18a034..b73719c 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java @@ -278,7 +278,7 @@ public void handleFilterUnionChildren(Operator curOp) for (Operator child : curOp.getChildOperators()) { if (child instanceof UnionOperator) { prunList = genColLists(curOp, child); - if (prunList == null || prunList.size() == 0 || parentPrunList.size() == prunList.size()) { + if (prunList == null || parentPrunList.size() == prunList.size()) { continue; } diff --git a/ql/src/test/queries/clientpositive/colpruner.q b/ql/src/test/queries/clientpositive/colpruner.q new file mode 100644 index 0000000..f3154ae --- /dev/null +++ b/ql/src/test/queries/clientpositive/colpruner.q @@ -0,0 +1 @@ +select count(*) from (SELECT c1, c2 FROM (SELECT key as c1, CAST(NULL AS INT) AS c2 FROM src UNION ALL SELECT key as c1, value as c2 FROM src) x)v1 WHERE v1.c2 = 0; diff --git a/ql/src/test/results/clientpositive/colpruner.q.out b/ql/src/test/results/clientpositive/colpruner.q.out new file mode 100644 index 0000000..bfbd767 --- /dev/null +++ b/ql/src/test/results/clientpositive/colpruner.q.out @@ -0,0 +1,9 @@ +PREHOOK: query: select count(*) from (SELECT c1, c2 FROM (SELECT key as c1, CAST(NULL AS INT) AS c2 FROM src UNION ALL SELECT key as c1, value as c2 FROM src) x)v1 WHERE v1.c2 = 0 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +#### A masked pattern was here #### +POSTHOOK: query: select count(*) from (SELECT c1, c2 FROM (SELECT key as c1, CAST(NULL AS INT) AS c2 FROM src UNION ALL SELECT key as c1, value as c2 FROM src) x)v1 WHERE v1.c2 = 0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +#### A masked pattern was here #### +0