You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Volodymyr Vysotskyi (JIRA)" <ji...@apache.org> on 2017/11/02 14:17:00 UTC

[jira] [Commented] (CALCITE-2029) Query with "is distinct from" condition in where or join clause fails with AssertionError: Cast for just nullability not allowed

    [ https://issues.apache.org/jira/browse/CALCITE-2029?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16235797#comment-16235797 ] 

Volodymyr Vysotskyi commented on CALCITE-2029:
----------------------------------------------

I have created pull request for this Jira: https://github.com/apache/calcite/pull/554

> Query with "is distinct from" condition in where or join clause fails with AssertionError: Cast for just nullability not allowed
> --------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CALCITE-2029
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2029
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Volodymyr Vysotskyi
>            Assignee: Julian Hyde
>            Priority: Major
>
> Query
> {code:sql}
> select * from "foodmart"."employee" as e1 where e1."last_name" is distinct from e1."last_name"
> {code}
> fails with error:
> {noformat}
> java.lang.AssertionError: Cast for just nullability not allowed
> 	at org.apache.calcite.util.Litmus$1.fail(Litmus.java:31)
> 	at org.apache.calcite.rel.core.Filter.isValid(Filter.java:116)
> 	at org.apache.calcite.rel.AbstractRelNode.onRegister(AbstractRelNode.java:353)
> 	at org.apache.calcite.plan.volcano.VolcanoPlanner.registerImpl(VolcanoPlanner.java:1495)
> 	at org.apache.calcite.plan.volcano.VolcanoPlanner.register(VolcanoPlanner.java:863)
> 	at org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:883)
> 	at org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:101)
> 	at org.apache.calcite.rel.AbstractRelNode.onRegister(AbstractRelNode.java:336)
> 	at org.apache.calcite.plan.volcano.VolcanoPlanner.registerImpl(VolcanoPlanner.java:1495)
> 	at org.apache.calcite.plan.volcano.VolcanoPlanner.setRoot(VolcanoPlanner.java:308)
> 	at org.apache.calcite.tools.Programs$5.run(Programs.java:309)
> 	at org.apache.calcite.tools.Programs$SequenceProgram.run(Programs.java:387)
> 	at org.apache.calcite.prepare.Prepare.optimize(Prepare.java:187)
> 	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:318)
> 	at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:229)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:786)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:640)
> 	at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:610)
> 	at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:221)
> 	at org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:603)
> 	at org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:638)
> 	at org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:149)
> 	at org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:218)
> 	at org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAssert.java:564)
> 	at org.apache.calcite.test.CalciteAssert$AssertQuery.runs(CalciteAssert.java:1397)
> 	at org.apache.calcite.test.JdbcTest.testMixedEqualAndIsNotDistinctJoin(JdbcTest.java:1593)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> 	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> 	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.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(BlockJUnit4ClassRunner.java:78)
> 	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.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.startRunnerWithArgs(IdeaTestRunner.java:47)
> 	at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
> 	at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
> {noformat}
> Method {{RelOptUtil.isDistinctFrom()}} makes an additional cast to NOT NULL BOOLEAN during the creation of the condition. This condition is not simplified before the time when it is passed into the filter constructor, therefore method {{Filter.isValid()}} throws AssertionError.



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