You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Chunwei Lei (Jira)" <ji...@apache.org> on 2022/06/22 03:39:00 UTC

[jira] [Updated] (CALCITE-5195) ArrayIndexOutOfBoundsException when inferring more equal conditions from join condition for semi join

     [ https://issues.apache.org/jira/browse/CALCITE-5195?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chunwei Lei updated CALCITE-5195:
---------------------------------
    Fix Version/s: 1.31.0

> ArrayIndexOutOfBoundsException when inferring more equal conditions from join condition for semi join
> -----------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-5195
>                 URL: https://issues.apache.org/jira/browse/CALCITE-5195
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Chunwei Lei
>            Assignee: Chunwei Lei
>            Priority: Major
>             Fix For: 1.31.0
>
>
> The following test can reproduce the exception.
> {code:java}
>   @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();
>   }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)