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)

Reply via email to