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)