You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Gian Merlino (JIRA)" <ji...@apache.org> on 2016/10/31 21:30:58 UTC
[jira] [Created] (CALCITE-1479) AssertionError in
ReduceExpressionsRule on multi-column IN subquery
Gian Merlino created CALCITE-1479:
-------------------------------------
Summary: AssertionError in ReduceExpressionsRule on multi-column IN subquery
Key: CALCITE-1479
URL: https://issues.apache.org/jira/browse/CALCITE-1479
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.10.0
Reporter: Gian Merlino
Assignee: Julian Hyde
See also https://github.com/apache/calcite/pull/317. This seems to be related to visiting subqueries without accounting for the fact that they might push multiple constancys on the stack.
The assertion error I'm getting in my code is from the sql,
SELECT * FROM s.foo
WHERE (dim1, dim2) IN (
SELECT dim1, dim2 FROM (
SELECT dim1, dim2
FROM s.foo
GROUP BY dim1, dim2
)
)
and the stack trace is,
java.lang.AssertionError: Internal error: Error while applying rule ReduceExpressionsRule(Filter), args [rel#8:LogicalFilter.NONE.[](input=rel#7:Subset#0.NONE.[],condition=IN($2, $3, {
LogicalProject(DIM1=[$0], DIM2=[$1])
LogicalAggregate(group=[{0, 1}])
LogicalProject(DIM1=[$2], DIM2=[$3])
DruidQueryRel(dataSource=[foo])
}))]
at org.apache.calcite.util.Util.newInternal(Util.java:792)
at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:236)
at org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:819)
at org.apache.calcite.tools.Programs$5.run(Programs.java:300)
at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:351)
at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:153)
at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:287)
at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:193)
at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:734)
at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:597)
at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:567)
at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:215)
at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:594)
at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:613)
at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:139)
at org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:208)
at io.druid.sql.calcite.table.DruidTableTest.testQuery(DruidTableTest.java:1800)
at io.druid.sql.calcite.table.DruidTableTest.testUsingSubqueryAsFilterOnTwoColumns(DruidTableTest.java:1715)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.AssertionError
at org.apache.calcite.rel.rules.ReduceExpressionsRule$ReducibleExprLocator.analyze(ReduceExpressionsRule.java:924)
at org.apache.calcite.rel.rules.ReduceExpressionsRule.findReducibleExps(ReduceExpressionsRule.java:603)
at org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressionsInternal(ReduceExpressionsRule.java:492)
at org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressions(ReduceExpressionsRule.java:462)
at org.apache.calcite.rel.rules.ReduceExpressionsRule$FilterReduceExpressionsRule.onMatch(ReduceExpressionsRule.java:149)
at org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:213)
... 45 more
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)