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