Zoltan Haindrich created HIVE-17568: ---------------------------------------
Summary: HiveJoinPushTransitivePredicatesRule may exchange predicates which are invalid on the other branch Key: HIVE-17568 URL: https://issues.apache.org/jira/browse/HIVE-17568 Project: Hive Issue Type: Bug Components: Logical Optimizer Reporter: Zoltan Haindrich Assignee: Zoltan Haindrich Joining 2 tables on at least 1 column which is not the same type ; (integer/double for example). The calcite expressions require double/integer inputs which will became invalid if {{HiveJoinPushTransitivePredicatesRule}} pushes them to the other branch. query: {code} create table t1 (v string, k int); insert into t1 values ('people', 10), ('strangers', 20), ('parents', 30); create table t2 (v string, k double); insert into t2 values ('people', 10), ('strangers', 20), ('parents', 30); select * from t1 where t1.k in (select t2.k from t2 where t2.v='people') and t1.k<15; {code} results in: {code} java.lang.AssertionError: type mismatch: type1: DOUBLE type2: INTEGER at org.apache.calcite.util.Litmus$1.fail(Litmus.java:31) at org.apache.calcite.plan.RelOptUtil.eq(RelOptUtil.java:1841) at org.apache.calcite.rex.RexProgramBuilder$RegisterInputShuttle.visitInputRef(RexProgramBuilder.java:941) at org.apache.calcite.rex.RexProgramBuilder$RegisterInputShuttle.visitInputRef(RexProgramBuilder.java:919) at org.apache.calcite.rex.RexInputRef.accept(RexInputRef.java:112) at org.apache.calcite.rex.RexShuttle.visitList(RexShuttle.java:153) at org.apache.calcite.rex.RexShuttle.visitCall(RexShuttle.java:102) at org.apache.calcite.rex.RexProgramBuilder$RegisterShuttle.visitCall(RexProgramBuilder.java:884) at org.apache.calcite.rex.RexProgramBuilder$RegisterShuttle.visitCall(RexProgramBuilder.java:882) at org.apache.calcite.rex.RexCall.accept(RexCall.java:104) at org.apache.calcite.rex.RexProgramBuilder.registerInput(RexProgramBuilder.java:296) at org.apache.calcite.rex.RexProgramBuilder.addCondition(RexProgramBuilder.java:271) at org.apache.calcite.rel.rules.FilterMergeRule.createProgram(FilterMergeRule.java:98) at org.apache.calcite.rel.rules.FilterMergeRule.onMatch(FilterMergeRule.java:67) [...] {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)