[
https://issues.apache.org/jira/browse/CALCITE-7065?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mihai Budiu reassigned CALCITE-7065:
------------------------------------
Assignee: Mihai Budiu
> 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
> Assignee: Mihai Budiu
> Priority: Minor
>
> 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)