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

Vova Vysotskyi resolved CALCITE-3525.
-------------------------------------
    Fix Version/s: 1.22.0
       Resolution: Fixed

Fixed in 
[1f3b710|https://github.com/apache/calcite/commit/1f3b7105fcc5cca45e5cdbb73d59fb51c410d08f].
Thanks [~IhorHuzenko] for the fix and thanks [~vlsi], [~julianhyde], 
[~zabetak], [~rubenql], [~Chunwei Lei] and [~danny0405] for the review!

> RexSimplify: eliminate redundant rex calls in OR
> ------------------------------------------------
>
>                 Key: CALCITE-3525
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3525
>             Project: Calcite
>          Issue Type: Improvement
>            Reporter: Igor Guzenko
>            Assignee: Igor Guzenko
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.22.0
>
>          Time Spent: 13h 40m
>  Remaining Estimate: 0h
>
> Sample case to reproduce in {code}RexProgramTest.simplifyOrTerms{code}: 
> {code:java}
>     // (a=1 or a=2 or (arr[1]>4 and arr[1]<3 and a=3)) => a=1 or a=2
>     final RelDataType intArrayType = typeFactory.createArrayType(intType, -1);
>     final RexInputRef ref0 = rexBuilder.makeInputRef(intType, 0);
>     final RexInputRef ref3 = rexBuilder.makeInputRef(intArrayType, 3);
>     final RexCall itm1 = (RexCall) rexBuilder.makeCall(intType, 
> SqlStdOperatorTable.ITEM,
>         ImmutableList.of(ref3, literal1));
>     simplify = this.simplify.withParanoid(false);
>     checkSimplifyFilter(
>         or(
>             eq(ref0, literal1),
>             eq(ref0, literal2),
>             and(
>                 gt(itm1, literal4),
>                 lt(itm1, literal3),
>                 eq(ref0, literal3)
>             )
>         ),
>         "OR(=($0, 1), =($0, 2))"
>     );
>     simplify = simplify.withParanoid(true);
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to