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