[ https://issues.apache.org/jira/browse/HIVE-8448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14173744#comment-14173744 ]
Yongzhi Chen commented on HIVE-8448: ------------------------------------ [~szehon] and [~jdere], I checked the failure tests. 2 of them are new ones, but it related to login so it should not be caused by the change. The rest of the failures are aged more than 2 days, and do not have union operations in the queries. So I think the all the test failures are not related to the change. Thanks. > Union All might not work due to the type conversion issue > --------------------------------------------------------- > > Key: HIVE-8448 > URL: https://issues.apache.org/jira/browse/HIVE-8448 > Project: Hive > Issue Type: Bug > Affects Versions: 0.13.1 > Reporter: Chaoyu Tang > Assignee: Yongzhi Chen > Priority: Minor > Attachments: HIVE-8448.4.patch > > > create table t1 (val date); > insert overwrite table t1 select '2014-10-10' from src limit 1; > create table t2 (val varchar(10)); > insert overwrite table t2 select '2014-10-10' from src limit 1; > == > Query: > select t.val from > (select val from t1 > union all > select val from t1 > union all > select val from t2 > union all > select val from t1) t; > == > Will throw exception: > {code} > Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Incompatible > types for union operator > at > org.apache.hadoop.hive.ql.exec.UnionOperator.initializeOp(UnionOperator.java:86) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:380) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:464) > at > org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:420) > at > org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp(SelectOperator.java:65) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:380) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:464) > at > org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:420) > at > org.apache.hadoop.hive.ql.exec.TableScanOperator.initializeOp(TableScanOperator.java:193) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:380) > at > org.apache.hadoop.hive.ql.exec.MapOperator.initializeOp(MapOperator.java:443) > at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:380) > at > org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:133) > ... 22 more > {code} > It was because at this query parse step, getCommonClassForUnionAll is used, > but at execution getCommonClass is used. They are not used consistently in > union. The later one does not support the implicit conversion from date to > string, which is the problem cause. > The change might be simple to fix this particular union issue but I noticed > that there are three versions of getCommonClass: getCommonClass, > getCommonClassForComparison, getCommonClassForUnionAll, and wonder if they > need to be cleaned and refactored. -- This message was sent by Atlassian JIRA (v6.3.4#6332)