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

Reply via email to