Thanks Julian, got it, I will simply remove that test then!

On 10 February 2018 at 00:22, Julian Hyde <jh...@apache.org> wrote:

> I don't think we implement INTERSECT ALL or EXCEPT ALL; only UNION
> ALL. I modified JdbcFrontLinqBackTest.testIntersect() and got a
> similar problem.
>
> See https://issues.apache.org/jira/browse/CALCITE-1446.
>
> On Fri, Feb 9, 2018 at 2:17 PM, Alessandro Solimando
> <alessandro.solima...@gmail.com> wrote:
> > Hello,
> > I am currently extending the unit tests for SparkAdapter.
> >
> > The following query raises an exception from the query planner, who
> fails to
> > come up with a plan (getBestPlan call is null).
> >
> >>
> >> select *
> >>
> >> from (values (1, 'a'), (2, 'b')) as t(x, y)
> >>
> >>
> >>
> >> intersect all
> >>
> >>
> >>
> >> select *
> >> from (values (1, 'a'), (2, 'b'), (1, 'b'), (2, 'c'), (2, 'c')) as t(x,
> y)
> >
> >
> > Note that the exact same query *without* "all" works fine.
> >
> > If you want to have a quick look here is my branch:
> > https://github.com/asolimando/calcite/tree/SPARK-TESTS
> >
> > I have started to compare the two executions by tracing which rules are
> > matching and which (equivalent) relations they generate, and there are
> > several rules not matched for "interesect all" case, compared to
> > "intersect", as you can see from the two traces in attachment.
> >
> > Depending on the kind of rules this might make sense, as the two queries
> > differ for duplicate values, and this might prevent some rules to
> trigger.
> >
> > I am still getting acquainted with Calcite's internals, so before digging
> > too much I preferred to get back to you for:
> >
> > 1) Does this relate to any known issue, or should I open a JIRA ticket?
> > 2) Do you have any suggestion on what to add to the trace?
> > At the moment the traces show:
> > the current rule tested in OPTIMIZE phase
> > TAB content of rule queue
> > 2xTAB all the relations for all the existing sets (to understand what is
> > created by each rule)
> >
> > Below the full stacktrace:
> >
> >>> java.lang.RuntimeException: With materializationsEnabled=false, limit=0
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAss
> ert.java:600)
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert$AssertQuery.returns(
> CalciteAssert.java:1346)
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert$AssertQuery.returns(
> CalciteAssert.java:1329)
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert$AssertQuery.returnsUno
> rdered(CalciteAssert.java:1357)
> >>>
> >>> at
> >>> org.apache.calcite.test.SparkAdapterTest.commonTester(SparkA
> dapterTest.java:88)
> >>>
> >>> at
> >>> org.apache.calcite.test.SparkAdapterTest.testIntersectAll(Sp
> arkAdapterTest.java:227)
> >>>
> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>>
> >>> at
> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
> ssorImpl.java:62)
> >>>
> >>> at
> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
> thodAccessorImpl.java:43)
> >>>
> >>> at java.lang.reflect.Method.invoke(Method.java:498)
> >>>
> >>> at
> >>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
> FrameworkMethod.java:50)
> >>>
> >>> at
> >>> org.junit.internal.runners.model.ReflectiveCallable.run(Refl
> ectiveCallable.java:12)
> >>>
> >>> at
> >>> org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
> ameworkMethod.java:47)
> >>>
> >>> at
> >>> org.junit.internal.runners.statements.InvokeMethod.evaluate(
> InvokeMethod.java:17)
> >>>
> >>> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> >>>
> >>> at
> >>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
> 4ClassRunner.java:78)
> >>>
> >>> at
> >>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
> 4ClassRunner.java:57)
> >>>
> >>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> >>>
> >>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> >>>
> >>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> >>>
> >>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> >>>
> >>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> >>>
> >>> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> >>>
> >>> at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
> >>>
> >>> at
> >>> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs
> (JUnit4IdeaTestRunner.java:68)
> >>>
> >>> at
> >>> com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.star
> tRunnerWithArgs(IdeaTestRunner.java:47)
> >>>
> >>> at
> >>> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsA
> ndStart(JUnitStarter.java:242)
> >>>
> >>> at
> >>> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStart
> er.java:70)
> >>>
> >>> Caused by: java.sql.SQLException: Error while executing SQL "select *
> >>>
> >>> from (values (1, 'a'), (2, 'b')) as t(x, y)
> >>>
> >>>  intersect all
> >>>
> >>> select *
> >>>
> >>> from (values (1, 'a'), (2, 'b'), (1, 'b'), (2, 'c'), (2, 'c')) as t(x,
> >>> y)": Node [rel#18:Subset#4.ENUMERABLE.[]] could not be implemented;
> planner
> >>> state:
> >>>
> >>>
> >>> Root: rel#18:Subset#4.ENUMERABLE.[]
> >>>
> >>> Original rel:
> >>>
> >>> LogicalIntersect(subset=[rel#18:Subset#4.ENUMERABLE.[]], all=[true]):
> >>> rowcount = 2.0, cumulative cost = {2.0 rows, 2.0 cpu, 0.0 io}, id = 13
> >>>
> >>>   LogicalProject(subset=[rel#9:Subset#1.NONE.[]], X=[$0], Y=[$1]):
> >>> rowcount = 2.0, cumulative cost = {2.0 rows, 4.0 cpu, 0.0 io}, id = 8
> >>>
> >>>     LogicalValues(subset=[rel#7:Subset#0.NONE.[]], tuples=[[{ 1, 'a'
> }, {
> >>> 2, 'b' }]]): rowcount = 2.0, cumulative cost = {2.0 rows, 1.0 cpu, 0.0
> io},
> >>> id = 1
> >>>
> >>>   LogicalProject(subset=[rel#12:Subset#3.NONE.[1]], X=[$0], Y=[$1]):
> >>> rowcount = 5.0, cumulative cost = {5.0 rows, 10.0 cpu, 0.0 io}, id = 11
> >>>
> >>>     LogicalValues(subset=[rel#10:Subset#2.NONE.[1]], tuples=[[{ 1,
> 'a' },
> >>> { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, { 2, 'c' }]]): rowcount = 5.0,
> >>> cumulative cost = {5.0 rows, 1.0 cpu, 0.0 io}, id = 4
> >>>
> >>>
> >>> Sets:
> >>>
> >>> Set#0, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#7:Subset#0.NONE.[], best=null, importance=0.81
> >>>
> >>> rel#1:LogicalValues.NONE.[[0, 1], [1]](type=RecordType(INTEGER X,
> CHAR(1)
> >>> Y),tuples=[{ 1, 'a' }, { 2, 'b' }]), rowcount=2.0, cumulative
> cost={inf}
> >>>
> >>> rel#8:LogicalProject.NONE.[[0, 1],
> >>> [1]](input=rel#7:Subset#0.NONE.[],X=$0,Y=$1), rowcount=2.0, cumulative
> >>> cost={inf}
> >>>
> >>> rel#21:Subset#0.ENUMERABLE.[], best=rel#25,
> importance=0.4510687500000001
> >>>
> >>>
> >>> rel#22:EnumerableProject.ENUMERABLE.[](input=rel#21:Subset#
> 0.ENUMERABLE.[],X=$0,Y=$1),
> >>> rowcount=2.0, cumulative cost={4.0 rows, 5.0 cpu, 0.0 io}
> >>>
> >>> rel#25:EnumerableValues.ENUMERABLE.[[0, 1],
> [1]](type=RecordType(INTEGER
> >>> X, CHAR(1) Y),tuples=[{ 1, 'a' }, { 2, 'b' }]), rowcount=2.0,
> cumulative
> >>> cost={2.0 rows, 1.0 cpu, 0.0 io}
> >>>
> >>> Set#2, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#10:Subset#2.NONE.[1], best=null, importance=0.81
> >>>
> >>> rel#4:LogicalValues.NONE.[[1]](type=RecordType(INTEGER X, CHAR(1)
> >>> Y),tuples=[{ 1, 'a' }, { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, { 2, 'c'
> }]),
> >>> rowcount=5.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#11:LogicalProject.NONE.[[1]](input=rel#10:Subset#2.NONE.
> [1],X=$0,Y=$1),
> >>> rowcount=5.0, cumulative cost={inf}
> >>>
> >>> rel#24:Subset#2.ENUMERABLE.[1], best=rel#23,
> >>> importance=0.4510687500000001
> >>>
> >>> rel#23:EnumerableValues.ENUMERABLE.[[1]](type=RecordType(INTEGER X,
> >>> CHAR(1) Y),tuples=[{ 1, 'a' }, { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, {
> 2, 'c'
> >>> }]), rowcount=5.0, cumulative cost={5.0 rows, 1.0 cpu, 0.0 io}
> >>>
> >>>
> >>> rel#26:EnumerableProject.ENUMERABLE.[[1]](input=rel#24:Subse
> t#2.ENUMERABLE.[1],X=$0,Y=$1),
> >>> rowcount=5.0, cumulative cost={10.0 rows, 11.0 cpu, 0.0 io}
> >>>
> >>> Set#4, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#14:Subset#4.NONE.[], best=null, importance=0.9
> >>>
> >>>
> >>> rel#13:LogicalIntersect.NONE.[](input#0=rel#7:Subset#0.NONE.
> [],input#1=rel#10:Subset#2.NONE.[1],all=true),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#17:AbstractConverter.NONE.[](input=rel#15:Subset#4.SPARK
> .[],convention=NONE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>> rel#15:Subset#4.SPARK.[], best=null, importance=0.81
> >>>
> >>> rel#18:Subset#4.ENUMERABLE.[], best=null, importance=1.0
> >>>
> >>>
> >>> rel#19:AbstractConverter.ENUMERABLE.[](input=rel#14:Subset#
> 4.NONE.[],convention=ENUMERABLE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#20:AbstractConverter.ENUMERABLE.[](input=rel#15:Subset#
> 4.SPARK.[],convention=ENUMERABLE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>>
> >>> at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
> >>>
> >>> at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
> >>>
> >>> at
> >>> org.apache.calcite.avatica.AvaticaStatement.executeInternal(
> AvaticaStatement.java:156)
> >>>
> >>> at
> >>> org.apache.calcite.avatica.AvaticaStatement.executeQuery(Ava
> ticaStatement.java:218)
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAss
> ert.java:568)
> >>>
> >>> ... 27 more
> >>>
> >>> Caused by: org.apache.calcite.plan.RelOptPlanner$CannotPlanException:
> >>> Node [rel#18:Subset#4.ENUMERABLE.[]] could not be implemented; planner
> >>> state:
> >>>
> >>>
> >>> Root: rel#18:Subset#4.ENUMERABLE.[]
> >>>
> >>> Original rel:
> >>>
> >>> LogicalIntersect(subset=[rel#18:Subset#4.ENUMERABLE.[]], all=[true]):
> >>> rowcount = 2.0, cumulative cost = {2.0 rows, 2.0 cpu, 0.0 io}, id = 13
> >>>
> >>>   LogicalProject(subset=[rel#9:Subset#1.NONE.[]], X=[$0], Y=[$1]):
> >>> rowcount = 2.0, cumulative cost = {2.0 rows, 4.0 cpu, 0.0 io}, id = 8
> >>>
> >>>     LogicalValues(subset=[rel#7:Subset#0.NONE.[]], tuples=[[{ 1, 'a'
> }, {
> >>> 2, 'b' }]]): rowcount = 2.0, cumulative cost = {2.0 rows, 1.0 cpu, 0.0
> io},
> >>> id = 1
> >>>
> >>>   LogicalProject(subset=[rel#12:Subset#3.NONE.[1]], X=[$0], Y=[$1]):
> >>> rowcount = 5.0, cumulative cost = {5.0 rows, 10.0 cpu, 0.0 io}, id = 11
> >>>
> >>>     LogicalValues(subset=[rel#10:Subset#2.NONE.[1]], tuples=[[{ 1,
> 'a' },
> >>> { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, { 2, 'c' }]]): rowcount = 5.0,
> >>> cumulative cost = {5.0 rows, 1.0 cpu, 0.0 io}, id = 4
> >>>
> >>>
> >>> Sets:
> >>>
> >>> Set#0, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#7:Subset#0.NONE.[], best=null, importance=0.81
> >>>
> >>> rel#1:LogicalValues.NONE.[[0, 1], [1]](type=RecordType(INTEGER X,
> CHAR(1)
> >>> Y),tuples=[{ 1, 'a' }, { 2, 'b' }]), rowcount=2.0, cumulative
> cost={inf}
> >>>
> >>> rel#8:LogicalProject.NONE.[[0, 1],
> >>> [1]](input=rel#7:Subset#0.NONE.[],X=$0,Y=$1), rowcount=2.0, cumulative
> >>> cost={inf}
> >>>
> >>> rel#21:Subset#0.ENUMERABLE.[], best=rel#25,
> importance=0.4510687500000001
> >>>
> >>>
> >>> rel#22:EnumerableProject.ENUMERABLE.[](input=rel#21:Subset#
> 0.ENUMERABLE.[],X=$0,Y=$1),
> >>> rowcount=2.0, cumulative cost={4.0 rows, 5.0 cpu, 0.0 io}
> >>>
> >>> rel#25:EnumerableValues.ENUMERABLE.[[0, 1],
> [1]](type=RecordType(INTEGER
> >>> X, CHAR(1) Y),tuples=[{ 1, 'a' }, { 2, 'b' }]), rowcount=2.0,
> cumulative
> >>> cost={2.0 rows, 1.0 cpu, 0.0 io}
> >>>
> >>> Set#2, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#10:Subset#2.NONE.[1], best=null, importance=0.81
> >>>
> >>> rel#4:LogicalValues.NONE.[[1]](type=RecordType(INTEGER X, CHAR(1)
> >>> Y),tuples=[{ 1, 'a' }, { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, { 2, 'c'
> }]),
> >>> rowcount=5.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#11:LogicalProject.NONE.[[1]](input=rel#10:Subset#2.NONE.
> [1],X=$0,Y=$1),
> >>> rowcount=5.0, cumulative cost={inf}
> >>>
> >>> rel#24:Subset#2.ENUMERABLE.[1], best=rel#23,
> >>> importance=0.4510687500000001
> >>>
> >>> rel#23:EnumerableValues.ENUMERABLE.[[1]](type=RecordType(INTEGER X,
> >>> CHAR(1) Y),tuples=[{ 1, 'a' }, { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, {
> 2, 'c'
> >>> }]), rowcount=5.0, cumulative cost={5.0 rows, 1.0 cpu, 0.0 io}
> >>>
> >>>
> >>> rel#26:EnumerableProject.ENUMERABLE.[[1]](input=rel#24:Subse
> t#2.ENUMERABLE.[1],X=$0,Y=$1),
> >>> rowcount=5.0, cumulative cost={10.0 rows, 11.0 cpu, 0.0 io}
> >>>
> >>> Set#4, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#14:Subset#4.NONE.[], best=null, importance=0.9
> >>>
> >>>
> >>> rel#13:LogicalIntersect.NONE.[](input#0=rel#7:Subset#0.NONE.
> [],input#1=rel#10:Subset#2.NONE.[1],all=true),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#17:AbstractConverter.NONE.[](input=rel#15:Subset#4.SPARK
> .[],convention=NONE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>> rel#15:Subset#4.SPARK.[], best=null, importance=0.81
> >>>
> >>> rel#18:Subset#4.ENUMERABLE.[], best=null, importance=1.0
> >>>
> >>>
> >>> rel#19:AbstractConverter.ENUMERABLE.[](input=rel#14:Subset#
> 4.NONE.[],convention=ENUMERABLE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#20:AbstractConverter.ENUMERABLE.[](input=rel#15:Subset#
> 4.SPARK.[],convention=ENUMERABLE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>>
> >>> at
> >>> org.apache.calcite.plan.volcano.RelSubset$CheapestPlanReplac
> er.visit(RelSubset.java:441)
> >>>
> >>> at
> >>> org.apache.calcite.plan.volcano.RelSubset.buildCheapestPlan(
> RelSubset.java:291)
> >>>
> >>> at
> >>> org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(
> VolcanoPlanner.java:666)
> >>>
> >>> at org.apache.calcite.tools.Programs$5.run(Programs.java:326)
> >>>
> >>> at
> >>> org.apache.calcite.tools.Programs$SequenceProgram.run(Progra
> ms.java:387)
> >>>
> >>> at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:188)
> >>>
> >>> at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:319)
> >>>
> >>> at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:230)
> >>>
> >>> at
> >>> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(Calc
> itePrepareImpl.java:781)
> >>>
> >>> at
> >>> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(Calci
> tePrepareImpl.java:640)
> >>>
> >>> at
> >>> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(Cal
> citePrepareImpl.java:610)
> >>>
> >>> at
> >>> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(Cal
> citeConnectionImpl.java:221)
> >>>
> >>> at
> >>> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(Ca
> lciteMetaImpl.java:603)
> >>>
> >>> at
> >>> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecu
> teInternal(AvaticaConnection.java:638)
> >>>
> >>> at
> >>> org.apache.calcite.avatica.AvaticaStatement.executeInternal(
> AvaticaStatement.java:149)
> >>>
> >>> ... 29 more
> >>>
> >>>
> >>> java.lang.RuntimeException: exception while executing [select *
> >>>
> >>> from (values (1, 'a'), (2, 'b')) as t(x, y)
> >>>
> >>>  intersect all
> >>>
> >>> select *
> >>>
> >>> from (values (1, 'a'), (2, 'b'), (1, 'b'), (2, 'c'), (2, 'c')) as t(x,
> >>> y)]
> >>>
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert$AssertQuery.returns(
> CalciteAssert.java:1351)
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert$AssertQuery.returns(
> CalciteAssert.java:1329)
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert$AssertQuery.returnsUno
> rdered(CalciteAssert.java:1357)
> >>>
> >>> at
> >>> org.apache.calcite.test.SparkAdapterTest.commonTester(SparkA
> dapterTest.java:88)
> >>>
> >>> at
> >>> org.apache.calcite.test.SparkAdapterTest.testIntersectAll(Sp
> arkAdapterTest.java:227)
> >>>
> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>>
> >>> at
> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcce
> ssorImpl.java:62)
> >>>
> >>> at
> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMe
> thodAccessorImpl.java:43)
> >>>
> >>> at java.lang.reflect.Method.invoke(Method.java:498)
> >>>
> >>> at
> >>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(
> FrameworkMethod.java:50)
> >>>
> >>> at
> >>> org.junit.internal.runners.model.ReflectiveCallable.run(Refl
> ectiveCallable.java:12)
> >>>
> >>> at
> >>> org.junit.runners.model.FrameworkMethod.invokeExplosively(Fr
> ameworkMethod.java:47)
> >>>
> >>> at
> >>> org.junit.internal.runners.statements.InvokeMethod.evaluate(
> InvokeMethod.java:17)
> >>>
> >>> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> >>>
> >>> at
> >>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
> 4ClassRunner.java:78)
> >>>
> >>> at
> >>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit
> 4ClassRunner.java:57)
> >>>
> >>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> >>>
> >>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> >>>
> >>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> >>>
> >>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> >>>
> >>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> >>>
> >>> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> >>>
> >>> at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
> >>>
> >>> at
> >>> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs
> (JUnit4IdeaTestRunner.java:68)
> >>>
> >>> at
> >>> com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.star
> tRunnerWithArgs(IdeaTestRunner.java:47)
> >>>
> >>> at
> >>> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsA
> ndStart(JUnitStarter.java:242)
> >>>
> >>> at
> >>> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStart
> er.java:70)
> >>>
> >>> Caused by: java.lang.RuntimeException: With
> >>> materializationsEnabled=false, limit=0
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAss
> ert.java:600)
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert$AssertQuery.returns(
> CalciteAssert.java:1346)
> >>>
> >>> ... 26 more
> >>>
> >>> Caused by: java.sql.SQLException: Error while executing SQL "select *
> >>>
> >>> from (values (1, 'a'), (2, 'b')) as t(x, y)
> >>>
> >>>  intersect all
> >>>
> >>> select *
> >>>
> >>> from (values (1, 'a'), (2, 'b'), (1, 'b'), (2, 'c'), (2, 'c')) as t(x,
> >>> y)": Node [rel#18:Subset#4.ENUMERABLE.[]] could not be implemented;
> planner
> >>> state:
> >>>
> >>>
> >>> Root: rel#18:Subset#4.ENUMERABLE.[]
> >>>
> >>> Original rel:
> >>>
> >>> LogicalIntersect(subset=[rel#18:Subset#4.ENUMERABLE.[]], all=[true]):
> >>> rowcount = 2.0, cumulative cost = {2.0 rows, 2.0 cpu, 0.0 io}, id = 13
> >>>
> >>>   LogicalProject(subset=[rel#9:Subset#1.NONE.[]], X=[$0], Y=[$1]):
> >>> rowcount = 2.0, cumulative cost = {2.0 rows, 4.0 cpu, 0.0 io}, id = 8
> >>>
> >>>     LogicalValues(subset=[rel#7:Subset#0.NONE.[]], tuples=[[{ 1, 'a'
> }, {
> >>> 2, 'b' }]]): rowcount = 2.0, cumulative cost = {2.0 rows, 1.0 cpu, 0.0
> io},
> >>> id = 1
> >>>
> >>>   LogicalProject(subset=[rel#12:Subset#3.NONE.[1]], X=[$0], Y=[$1]):
> >>> rowcount = 5.0, cumulative cost = {5.0 rows, 10.0 cpu, 0.0 io}, id = 11
> >>>
> >>>     LogicalValues(subset=[rel#10:Subset#2.NONE.[1]], tuples=[[{ 1,
> 'a' },
> >>> { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, { 2, 'c' }]]): rowcount = 5.0,
> >>> cumulative cost = {5.0 rows, 1.0 cpu, 0.0 io}, id = 4
> >>>
> >>>
> >>> Sets:
> >>>
> >>> Set#0, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#7:Subset#0.NONE.[], best=null, importance=0.81
> >>>
> >>> rel#1:LogicalValues.NONE.[[0, 1], [1]](type=RecordType(INTEGER X,
> CHAR(1)
> >>> Y),tuples=[{ 1, 'a' }, { 2, 'b' }]), rowcount=2.0, cumulative
> cost={inf}
> >>>
> >>> rel#8:LogicalProject.NONE.[[0, 1],
> >>> [1]](input=rel#7:Subset#0.NONE.[],X=$0,Y=$1), rowcount=2.0, cumulative
> >>> cost={inf}
> >>>
> >>> rel#21:Subset#0.ENUMERABLE.[], best=rel#25,
> importance=0.4510687500000001
> >>>
> >>>
> >>> rel#22:EnumerableProject.ENUMERABLE.[](input=rel#21:Subset#
> 0.ENUMERABLE.[],X=$0,Y=$1),
> >>> rowcount=2.0, cumulative cost={4.0 rows, 5.0 cpu, 0.0 io}
> >>>
> >>> rel#25:EnumerableValues.ENUMERABLE.[[0, 1],
> [1]](type=RecordType(INTEGER
> >>> X, CHAR(1) Y),tuples=[{ 1, 'a' }, { 2, 'b' }]), rowcount=2.0,
> cumulative
> >>> cost={2.0 rows, 1.0 cpu, 0.0 io}
> >>>
> >>> Set#2, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#10:Subset#2.NONE.[1], best=null, importance=0.81
> >>>
> >>> rel#4:LogicalValues.NONE.[[1]](type=RecordType(INTEGER X, CHAR(1)
> >>> Y),tuples=[{ 1, 'a' }, { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, { 2, 'c'
> }]),
> >>> rowcount=5.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#11:LogicalProject.NONE.[[1]](input=rel#10:Subset#2.NONE.
> [1],X=$0,Y=$1),
> >>> rowcount=5.0, cumulative cost={inf}
> >>>
> >>> rel#24:Subset#2.ENUMERABLE.[1], best=rel#23,
> >>> importance=0.4510687500000001
> >>>
> >>> rel#23:EnumerableValues.ENUMERABLE.[[1]](type=RecordType(INTEGER X,
> >>> CHAR(1) Y),tuples=[{ 1, 'a' }, { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, {
> 2, 'c'
> >>> }]), rowcount=5.0, cumulative cost={5.0 rows, 1.0 cpu, 0.0 io}
> >>>
> >>>
> >>> rel#26:EnumerableProject.ENUMERABLE.[[1]](input=rel#24:Subse
> t#2.ENUMERABLE.[1],X=$0,Y=$1),
> >>> rowcount=5.0, cumulative cost={10.0 rows, 11.0 cpu, 0.0 io}
> >>>
> >>> Set#4, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#14:Subset#4.NONE.[], best=null, importance=0.9
> >>>
> >>>
> >>> rel#13:LogicalIntersect.NONE.[](input#0=rel#7:Subset#0.NONE.
> [],input#1=rel#10:Subset#2.NONE.[1],all=true),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#17:AbstractConverter.NONE.[](input=rel#15:Subset#4.SPARK
> .[],convention=NONE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>> rel#15:Subset#4.SPARK.[], best=null, importance=0.81
> >>>
> >>> rel#18:Subset#4.ENUMERABLE.[], best=null, importance=1.0
> >>>
> >>>
> >>> rel#19:AbstractConverter.ENUMERABLE.[](input=rel#14:Subset#
> 4.NONE.[],convention=ENUMERABLE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#20:AbstractConverter.ENUMERABLE.[](input=rel#15:Subset#
> 4.SPARK.[],convention=ENUMERABLE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>>
> >>> at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
> >>>
> >>> at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
> >>>
> >>> at
> >>> org.apache.calcite.avatica.AvaticaStatement.executeInternal(
> AvaticaStatement.java:156)
> >>>
> >>> at
> >>> org.apache.calcite.avatica.AvaticaStatement.executeQuery(Ava
> ticaStatement.java:218)
> >>>
> >>> at
> >>> org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAss
> ert.java:568)
> >>>
> >>> ... 27 more
> >>>
> >>> Caused by: org.apache.calcite.plan.RelOptPlanner$CannotPlanException:
> >>> Node [rel#18:Subset#4.ENUMERABLE.[]] could not be implemented; planner
> >>> state:
> >>>
> >>>
> >>> Root: rel#18:Subset#4.ENUMERABLE.[]
> >>>
> >>> Original rel:
> >>>
> >>> LogicalIntersect(subset=[rel#18:Subset#4.ENUMERABLE.[]], all=[true]):
> >>> rowcount = 2.0, cumulative cost = {2.0 rows, 2.0 cpu, 0.0 io}, id = 13
> >>>
> >>>   LogicalProject(subset=[rel#9:Subset#1.NONE.[]], X=[$0], Y=[$1]):
> >>> rowcount = 2.0, cumulative cost = {2.0 rows, 4.0 cpu, 0.0 io}, id = 8
> >>>
> >>>     LogicalValues(subset=[rel#7:Subset#0.NONE.[]], tuples=[[{ 1, 'a'
> }, {
> >>> 2, 'b' }]]): rowcount = 2.0, cumulative cost = {2.0 rows, 1.0 cpu, 0.0
> io},
> >>> id = 1
> >>>
> >>>   LogicalProject(subset=[rel#12:Subset#3.NONE.[1]], X=[$0], Y=[$1]):
> >>> rowcount = 5.0, cumulative cost = {5.0 rows, 10.0 cpu, 0.0 io}, id = 11
> >>>
> >>>     LogicalValues(subset=[rel#10:Subset#2.NONE.[1]], tuples=[[{ 1,
> 'a' },
> >>> { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, { 2, 'c' }]]): rowcount = 5.0,
> >>> cumulative cost = {5.0 rows, 1.0 cpu, 0.0 io}, id = 4
> >>>
> >>>
> >>> Sets:
> >>>
> >>> Set#0, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#7:Subset#0.NONE.[], best=null, importance=0.81
> >>>
> >>> rel#1:LogicalValues.NONE.[[0, 1], [1]](type=RecordType(INTEGER X,
> CHAR(1)
> >>> Y),tuples=[{ 1, 'a' }, { 2, 'b' }]), rowcount=2.0, cumulative
> cost={inf}
> >>>
> >>> rel#8:LogicalProject.NONE.[[0, 1],
> >>> [1]](input=rel#7:Subset#0.NONE.[],X=$0,Y=$1), rowcount=2.0, cumulative
> >>> cost={inf}
> >>>
> >>> rel#21:Subset#0.ENUMERABLE.[], best=rel#25,
> importance=0.4510687500000001
> >>>
> >>>
> >>> rel#22:EnumerableProject.ENUMERABLE.[](input=rel#21:Subset#
> 0.ENUMERABLE.[],X=$0,Y=$1),
> >>> rowcount=2.0, cumulative cost={4.0 rows, 5.0 cpu, 0.0 io}
> >>>
> >>> rel#25:EnumerableValues.ENUMERABLE.[[0, 1],
> [1]](type=RecordType(INTEGER
> >>> X, CHAR(1) Y),tuples=[{ 1, 'a' }, { 2, 'b' }]), rowcount=2.0,
> cumulative
> >>> cost={2.0 rows, 1.0 cpu, 0.0 io}
> >>>
> >>> Set#2, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#10:Subset#2.NONE.[1], best=null, importance=0.81
> >>>
> >>> rel#4:LogicalValues.NONE.[[1]](type=RecordType(INTEGER X, CHAR(1)
> >>> Y),tuples=[{ 1, 'a' }, { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, { 2, 'c'
> }]),
> >>> rowcount=5.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#11:LogicalProject.NONE.[[1]](input=rel#10:Subset#2.NONE.
> [1],X=$0,Y=$1),
> >>> rowcount=5.0, cumulative cost={inf}
> >>>
> >>> rel#24:Subset#2.ENUMERABLE.[1], best=rel#23,
> >>> importance=0.4510687500000001
> >>>
> >>> rel#23:EnumerableValues.ENUMERABLE.[[1]](type=RecordType(INTEGER X,
> >>> CHAR(1) Y),tuples=[{ 1, 'a' }, { 2, 'b' }, { 1, 'b' }, { 2, 'c' }, {
> 2, 'c'
> >>> }]), rowcount=5.0, cumulative cost={5.0 rows, 1.0 cpu, 0.0 io}
> >>>
> >>>
> >>> rel#26:EnumerableProject.ENUMERABLE.[[1]](input=rel#24:Subse
> t#2.ENUMERABLE.[1],X=$0,Y=$1),
> >>> rowcount=5.0, cumulative cost={10.0 rows, 11.0 cpu, 0.0 io}
> >>>
> >>> Set#4, type: RecordType(INTEGER X, CHAR(1) Y)
> >>>
> >>> rel#14:Subset#4.NONE.[], best=null, importance=0.9
> >>>
> >>>
> >>> rel#13:LogicalIntersect.NONE.[](input#0=rel#7:Subset#0.NONE.
> [],input#1=rel#10:Subset#2.NONE.[1],all=true),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#17:AbstractConverter.NONE.[](input=rel#15:Subset#4.SPARK
> .[],convention=NONE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>> rel#15:Subset#4.SPARK.[], best=null, importance=0.81
> >>>
> >>> rel#18:Subset#4.ENUMERABLE.[], best=null, importance=1.0
> >>>
> >>>
> >>> rel#19:AbstractConverter.ENUMERABLE.[](input=rel#14:Subset#
> 4.NONE.[],convention=ENUMERABLE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>> rel#20:AbstractConverter.ENUMERABLE.[](input=rel#15:Subset#
> 4.SPARK.[],convention=ENUMERABLE,sort=[]),
> >>> rowcount=2.0, cumulative cost={inf}
> >>>
> >>>
> >>>
> >>> at
> >>> org.apache.calcite.plan.volcano.RelSubset$CheapestPlanReplac
> er.visit(RelSubset.java:441)
> >>>
> >>> at
> >>> org.apache.calcite.plan.volcano.RelSubset.buildCheapestPlan(
> RelSubset.java:291)
> >>>
> >>> at
> >>> org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(
> VolcanoPlanner.java:666)
> >>>
> >>> at org.apache.calcite.tools.Programs$5.run(Programs.java:326)
> >>>
> >>> at
> >>> org.apache.calcite.tools.Programs$SequenceProgram.run(Progra
> ms.java:387)
> >>>
> >>> at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:188)
> >>>
> >>> at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:319)
> >>>
> >>> at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:230)
> >>>
> >>> at
> >>> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(Calc
> itePrepareImpl.java:781)
> >>>
> >>> at
> >>> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(Calci
> tePrepareImpl.java:640)
> >>>
> >>> at
> >>> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(Cal
> citePrepareImpl.java:610)
> >>>
> >>> at
> >>> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(Cal
> citeConnectionImpl.java:221)
> >>>
> >>> at
> >>> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(Ca
> lciteMetaImpl.java:603)
> >>>
> >>> at
> >>> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecu
> teInternal(AvaticaConnection.java:638)
> >>>
> >>> at
> >>> org.apache.calcite.avatica.AvaticaStatement.executeInternal(
> AvaticaStatement.java:149)
> >>>
> >>> ... 29 more
> >
> >
> > Best regards,
> > Alessandro
>

Reply via email to