You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "godfrey he (JIRA)" <ji...@apache.org> on 2017/12/25 08:32:00 UTC

[jira] [Created] (CALCITE-2110) ArrayIndexOutOfBoundsException in RexSimplify when using ReduceExpressionsRule.JOIN_INSTANCE

godfrey he created CALCITE-2110:
-----------------------------------

             Summary: ArrayIndexOutOfBoundsException in RexSimplify when using ReduceExpressionsRule.JOIN_INSTANCE
                 Key: CALCITE-2110
                 URL: https://issues.apache.org/jira/browse/CALCITE-2110
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.15.0
            Reporter: godfrey he
            Assignee: Julian Hyde


test:
{code}
  @Test public void testCorrelationScalarAggAndFilter() {
    final String sql = "SELECT e1.empno\n"
                       + "FROM emp e1, dept d1 where e1.deptno = d1.deptno\n"
                       + "and e1.deptno < 10 and d1.deptno < 15\n"
                       + "and e1.sal > (select avg(sal) from emp e2 where e1.empno = e2.empno)";
    HepProgram program = new HepProgramBuilder()
        .addRuleInstance(ReduceExpressionsRule.PROJECT_INSTANCE)
        .addRuleInstance(ReduceExpressionsRule.FILTER_INSTANCE)
        .addRuleInstance(ReduceExpressionsRule.JOIN_INSTANCE)
        .build();

    sql(sql)
        .withDecorrelation(true)
        .withTrim(true)
        .expand(true)
        .withPre(program)
        .with(program)
        .check();
  }
{code}

excption:
{code}
java.lang.ArrayIndexOutOfBoundsException: -1

	at java.util.ArrayList.elementData(ArrayList.java:422)
	at java.util.ArrayList.set(ArrayList.java:450)
	at org.apache.calcite.rex.RexSimplify.processRange(RexSimplify.java:1018)
	at org.apache.calcite.rex.RexSimplify.simplifyAnd2ForUnknownAsFalse(RexSimplify.java:613)
	at org.apache.calcite.rex.RexSimplify.simplifyAnd2ForUnknownAsFalse(RexSimplify.java:579)
	at org.apache.calcite.rex.RexSimplify.simplifyAnd(RexSimplify.java:538)
	at org.apache.calcite.rex.RexSimplify.simplify(RexSimplify.java:136)
	at org.apache.calcite.rex.RexUtil$ExprSimplifier.visitCall(RexUtil.java:2625)
	at org.apache.calcite.rex.RexUtil$ExprSimplifier.visitCall(RexUtil.java:2585)
	at org.apache.calcite.rex.RexCall.accept(RexCall.java:107)
	at org.apache.calcite.rex.RexShuttle.apply(RexShuttle.java:284)
	at org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressions(ReduceExpressionsRule.java:547)
	at org.apache.calcite.rel.rules.ReduceExpressionsRule$JoinReduceExpressionsRule.onMatch(ReduceExpressionsRule.java:331)
	at org.apache.calcite.plan.AbstractRelOptPlanner.fireRule(AbstractRelOptPlanner.java:317)
	at org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:508)
	at org.apache.calcite.plan.hep.HepPlanner.applyRules(HepPlanner.java:387)
	at org.apache.calcite.plan.hep.HepPlanner.executeInstruction(HepPlanner.java:252)
	at org.apache.calcite.plan.hep.HepInstruction$RuleInstance.execute(HepInstruction.java:127)
	at org.apache.calcite.plan.hep.HepPlanner.executeProgram(HepPlanner.java:211)
	at org.apache.calcite.plan.hep.HepPlanner.findBestExp(HepPlanner.java:198)
	at org.apache.calcite.test.RelOptTestBase.checkPlanning(RelOptTestBase.java:155)
	at org.apache.calcite.test.RelOptTestBase$Sql.check(RelOptTestBase.java:300)
	at org.apache.calcite.test.RelOptTestBase$Sql.check(RelOptTestBase.java:284)
	at org.apache.calcite.test.RelOptRulesTest.testCorrelationScalarAggAndFilter(RelOptRulesTest.java:1634)
{code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)