Mihai Budiu created CALCITE-7065:
------------------------------------
Summary: CoreRules.PROJECT_REDUCE_EXPRESSIONS crashes when applied
to a lambda
Key: CALCITE-7065
URL: https://issues.apache.org/jira/browse/CALCITE-7065
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.40.0
Reporter: Mihai Budiu
The following test added to RelOptRulesTest will crash:
{code:java}
@Test void testReduceLambda() {
final String sql = "select \"EXISTS\"(ARRAY[1], x -> true)";
sql(sql)
.withFactory(f ->
f.withOperatorTable(opTab ->
SqlValidatorTest.operatorTableFor(SqlLibrary.SPARK)))
.withRule(CoreRules.PROJECT_REDUCE_EXPRESSIONS).check();
}
{code}
With the following exception:
{code:java}
java.lang.IndexOutOfBoundsException: fromIndex = -1
at
java.base/java.util.AbstractList.subListRangeCheck(AbstractList.java:507)
at java.base/java.util.ArrayList.subList(ArrayList.java:1108)
at org.apache.calcite.util.Util.last(Util.java:2118)
at
org.apache.calcite.rel.rules.ReduceExpressionsRule$ReducibleExprLocator.analyzeCall(ReduceExpressionsRule.java:1129)
at
org.apache.calcite.rel.rules.ReduceExpressionsRule$ReducibleExprLocator.visitCall(ReduceExpressionsRule.java:1112)
at
org.apache.calcite.rel.rules.ReduceExpressionsRule$ReducibleExprLocator.visitCall(ReduceExpressionsRule.java:976)
at org.apache.calcite.rex.RexCall.accept(RexCall.java:208)
at
org.apache.calcite.rel.rules.ReduceExpressionsRule$ReducibleExprLocator.analyze(ReduceExpressionsRule.java:1009)
at
org.apache.calcite.rel.rules.ReduceExpressionsRule.findReducibleExps(ReduceExpressionsRule.java:821)
at
org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressionsInternal(ReduceExpressionsRule.java:744)
at
org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressions(ReduceExpressionsRule.java:714)
at
org.apache.calcite.rel.rules.ReduceExpressionsRule$ProjectReduceExpressionsRule.onMatch(ReduceExpressionsRule.java:313)
{code}
The visitor ReducibleExprLocator is missing a visit method for lambdas.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)