[ 
https://issues.apache.org/jira/browse/CALCITE-2947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Haisheng Yuan resolved CALCITE-2947.
------------------------------------
       Resolution: Fixed
    Fix Version/s: 1.20.0

Resolved by patch in https://issues.apache.org/jira/browse/CALCITE-2004

> Type mismatch assertion error when converting NOT IN subquery
> -------------------------------------------------------------
>
>                 Key: CALCITE-2947
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2947
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Haisheng Yuan
>            Priority: Major
>              Labels: sub-query
>             Fix For: 1.20.0
>
>
> Repro:
> Add the following test to SqlToRelConverterTest.java.
> {code:java}
> @Test public void testSubQueryNotIN() {
>     final String sql = "select deptno\n"
>         + "from EMP e\n"
>         + "where deptno not in (select deptno\n"
>         + "from EMP where empno=e.empno)";
>     sql(sql).ok();
>   }
> {code}
> Error:
> {code:java}
> java.lang.AssertionError: type mismatch:
> ref:
> INTEGER NOT NULL
> input:
> INTEGER
>       at org.apache.calcite.util.Litmus$1.fail(Litmus.java:31)
>       at org.apache.calcite.plan.RelOptUtil.eq(RelOptUtil.java:1832)
>       at org.apache.calcite.rex.RexChecker.visitInputRef(RexChecker.java:125)
>       at org.apache.calcite.rex.RexChecker.visitInputRef(RexChecker.java:57)
>       at org.apache.calcite.rex.RexInputRef.accept(RexInputRef.java:112)
>       at org.apache.calcite.rex.RexChecker.visitCall(RexChecker.java:140)
>       at org.apache.calcite.rex.RexChecker.visitCall(RexChecker.java:57)
>       at org.apache.calcite.rex.RexCall.accept(RexCall.java:191)
>       at org.apache.calcite.rel.core.Filter.isValid(Filter.java:120)
>       at 
> org.apache.calcite.rel.logical.LogicalFilter.<init>(LogicalFilter.java:70)
>       at 
> org.apache.calcite.rel.logical.LogicalFilter.create(LogicalFilter.java:114)
>       at 
> org.apache.calcite.rel.logical.LogicalFilter.create(LogicalFilter.java:101)
>       at 
> org.apache.calcite.rel.core.RelFactories$FilterFactoryImpl.createFilter(RelFactories.java:300)
>       at 
> org.apache.calcite.sql2rel.SqlToRelConverter.createJoin(SqlToRelConverter.java:2433)
> {code}
> If we change not in subquery to in subquery, it can run without error.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to