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)