You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Mihai Budiu (Jira)" <ji...@apache.org> on 2025/06/20 23:24:00 UTC

[jira] [Created] (CALCITE-7065) CoreRules.PROJECT_REDUCE_EXPRESSIONS crashes when applied to a lambda

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)