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

[jira] [Created] (CALCITE-2080) Query with NOT IN operator and literal fails with error java.lang.AssertionError: Cast for just nullability not allowed

Volodymyr Vysotskyi created CALCITE-2080:
--------------------------------------------

             Summary: Query with NOT IN operator and literal fails with error java.lang.AssertionError: Cast for just nullability not allowed
                 Key: CALCITE-2080
                 URL: https://issues.apache.org/jira/browse/CALCITE-2080
             Project: Calcite
          Issue Type: Bug
            Reporter: Volodymyr Vysotskyi
            Assignee: Julian Hyde


This test
{code:java}
  @Test
  public void testNotInWithLiteral() {
    final String sql = "SELECT *\n"
        + "FROM SALES.NATION\n"
        + "WHERE n_name NOT IN\n"
        + "    (SELECT ''\n"
        + "     FROM SALES.NATION)";
    sql(sql).with(getTesterWithDynamicTable()).ok();
  }
{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.test.SqlToRelConverterTest$RelValidityChecker.visit(SqlToRelConverterTest.java:2753)
	at org.apache.calcite.rel.SingleRel.childrenAccept(SingleRel.java:72)
	at org.apache.calcite.rel.RelVisitor.visit(RelVisitor.java:44)
	at org.apache.calcite.test.SqlToRelConverterTest$RelValidityChecker.visit(SqlToRelConverterTest.java:2756)
	at org.apache.calcite.rel.RelVisitor.go(RelVisitor.java:61)
	at org.apache.calcite.test.SqlToRelTestBase.assertValid(SqlToRelTestBase.java:129)
	at org.apache.calcite.test.SqlToRelTestBase$TesterImpl.assertConvertsTo(SqlToRelTestBase.java:693)
	at org.apache.calcite.test.SqlToRelConverterTest$Sql.convertsTo(SqlToRelConverterTest.java:2790)
	at org.apache.calcite.test.SqlToRelConverterTest$Sql.ok(SqlToRelConverterTest.java:2786)
	at org.apache.calcite.test.SqlToRelConverterTest.testNotInWithLiteral(SqlToRelConverterTest.java:1299)
{noformat}

In [this line|https://github.com/apache/calcite/blob/c7d9b3d561243c3cb97595f4fe9a0ccf05ce85ac/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java#L4502] cast which just changes types nullability was made. The ending type is taken form validator and it [was made nullable|https://github.com/apache/calcite/blob/f47465236b7650f2280092b708fa39062fe79ffd/core/src/main/java/org/apache/calcite/sql/fun/SqlInOperator.java#L163] because right operand has a nullable type.



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