Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
The following test can reproduce the exception.
@Test void testJoinConditionPushdown4() { final Function<RelBuilder, RelNode> relFn = b -> { RelNode left = b.scan("EMP") .project( b.field("DEPTNO"), b.field("ENAME")) .build(); RelNode right = b.scan("DEPT") .project( b.field("DEPTNO"), b.field("DNAME")) .build(); b.push(left).push(right); RexInputRef ref1 = b.field(2, 0, "DEPTNO"); RexInputRef ref2 = b.field(2, 1, "DEPTNO"); RexInputRef ref3 = b.field(2, 1, "DNAME"); RexCall cond1 = (RexCall) b.equals(ref1, ref2); RexCall cond2 = (RexCall) b.equals(ref1, ref3); RexNode cond = b.and(cond1, cond2); return b.semiJoin(cond) .project(b.field(0)) .build(); }; relFn(relFn) .withRule( CoreRules.JOIN_PUSH_EXPRESSIONS, CoreRules.JOIN_CONDITION_PUSH, CoreRules.SEMI_JOIN_PROJECT_TRANSPOSE, CoreRules.JOIN_REDUCE_EXPRESSIONS, CoreRules.FILTER_REDUCE_EXPRESSIONS) .check(); }
Attachments
Issue Links
- is caused by
-
CALCITE-5073 JoinConditionPushRule cannot infer 'LHS.C1 = LHS.C2' from 'LHS.C1 = RHS.C1 AND LHS.C2 = RHS.C1'
- Closed
- is related to
-
CALCITE-5201 Improve SemiJoinRule to match Join's right input which is unique for Join keys
- Closed
- links to