Attempting to join three tables is consistently failing with a ClassCastException using Hive trunk (r792966) and Hadoop 0.18.3.
The three tables are defined as follows: create table foo (foo_id int, foo_name string, foo_a string, foo_b string, foo_c string, foo_d string) row format delimited fields terminated by ',' stored as textfile; create table bar (bar_id int, bar_0 int, foo_id int, bar_1 int, bar_name string, bar_a string, bar_b string, bar_c string, bar_d string) row format delimited fields terminated by ',' stored as textfile; create table count (bar_id int, n int) row format delimited fields terminated by ',' stored as textfile; Each table has a single row as follows: foo: 1,foo1,a,b,c,d bar: 10,0,1,1,bar10,a,b,c,d counts: 10,2 The failing query is: select foo.foo_name, bar.bar_name, n from foo join bar on foo.foo_id = bar.foo_id join count on count.bar_id = bar.bar_id; Interestingly, the query works if you reorder the joins (select foo.foo_name, bar.bar_name, n from count join bar on count.bar_id = bar.bar_id join foo on foo.foo_id = bar.foo_id) or if you remove any of the unused string columns from foo or even just move the unused int columns in bar to the end. The exception is as follows: java.lang.ClassCastException: org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableIntObjectIns pector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspecto r at org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDeTypeString.serialize( DynamicSerDeTypeString.java:63) at org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDeFieldList.serialize(D ynamicSerDeFieldList.java:249) at org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDeStructBase.serialize( DynamicSerDeStructBase.java:81) at org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe.serialize(DynamicSer De.java:177) at org.apache.hadoop.hive.ql.exec.FileSinkOperator.process(FileSinkOperator.jav a:180) at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:492) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.createForwardJoinObject(Co mmonJoinOperator.java:290) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genObject(CommonJoinOperat or.java:533) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genObject(CommonJoinOperat or.java:522) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genObject(CommonJoinOperat or.java:522) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.checkAndGenObject(CommonJo inOperator.java:563) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.endGroup(CommonJoinOperato r.java:545) at org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(ExecReducer.java:159) at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:318) at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:2198) java.lang.ClassCastException: org.apache.hadoop.hive.serde2.objectinspector.primitive.WritableIntObjectIns pector cannot be cast to org.apache.hadoop.hive.serde2.objectinspector.primitive.StringObjectInspecto r at org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDeTypeString.serialize( DynamicSerDeTypeString.java:63) at org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDeFieldList.serialize(D ynamicSerDeFieldList.java:249) at org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDeStructBase.serialize( DynamicSerDeStructBase.java:81) at org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe.serialize(DynamicSer De.java:177) at org.apache.hadoop.hive.ql.exec.FileSinkOperator.process(FileSinkOperator.jav a:180) at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:492) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.createForwardJoinObject(Co mmonJoinOperator.java:290) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genObject(CommonJoinOperat or.java:533) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genObject(CommonJoinOperat or.java:522) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.genObject(CommonJoinOperat or.java:522) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.checkAndGenObject(CommonJo inOperator.java:563) at org.apache.hadoop.hive.ql.exec.CommonJoinOperator.endGroup(CommonJoinOperato r.java:545) at org.apache.hadoop.hive.ql.exec.ExecReducer.close(ExecReducer.java:236) at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:329) at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:2198) Thanks for your help!
