Igor Guzenko created CALCITE-3525: ------------------------------------- Summary: 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
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)