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