[ 
https://issues.apache.org/jira/browse/CALCITE-3525?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16978887#comment-16978887
 ] 

Julian Hyde commented on CALCITE-3525:
--------------------------------------

In English: you propose to simplify "a = 1 or a = 2 or (b > 4 and b < 3 and a = 
3)" to "a = 1 or a= 2".

I guess by "redundant terms" you mean "terms that simplify to false".

> 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
>
> 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