Aleksey Plekhanov created IGNITE-25258:
------------------------------------------

             Summary: Calcite engine. Subquery dependent on two tables can't be 
planned
                 Key: IGNITE-25258
                 URL: https://issues.apache.org/jira/browse/IGNITE-25258
             Project: Ignite
          Issue Type: Bug
            Reporter: Aleksey Plekhanov
            Assignee: Aleksey Plekhanov


Reproducer:
{code:java}
    @Test
    public void testSubqueryWithTwoDependentTables() throws Exception {
        IgniteSchema schema = createSchema(
            createTable("T1", IgniteDistributions.single(), "ID", 
Integer.class, "REF", Integer.class),
            createTable("T2", IgniteDistributions.single(), "ID", 
Integer.class, "REF", Integer.class),
            createTable("T3", IgniteDistributions.single(), "ID1", 
Integer.class, "ID2", Integer.class)
        );

        assertPlan("SELECT * FROM T1 JOIN T2 ON (T1.ID = T2.ID) " +
                "WHERE NOT EXISTS (SELECT 1 FROM T3 WHERE T3.ID1 = T1.REF AND 
T3.ID2 = T2.REF)", schema,
            nodeOrAnyChild(isTableScan("T3")));
    }
{code}
Throws an exception:

{noformat}
Caused by: java.lang.AssertionError: All correlation variables should resolve 
to the same namespace. Prev 
ns=org.apache.calcite.sql.validate.IdentifierNamespace@5fac9c8f, new 
ns=org.apache.calcite.sql.validate.IdentifierNamespace@558b73eb
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.getCorrelationUse(SqlToRelConverter.java:3074)
 ~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.calcite.sql2rel.SqlToRelConverter.access$1900(SqlToRelConverter.java:241)
 ~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.calcite.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:5526)
 ~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.calcite.sql2rel.StandardConvertletTable.convertOperands(StandardConvertletTable.java:1125)
 ~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.calcite.sql2rel.StandardConvertletTable.convertOperands(StandardConvertletTable.java:1117)
 ~[calcite-core-1.37.0.jar:1.37.0]
        at 
org.apache.calcite.sql2rel.StandardConvertletTable.convertCall(StandardConvertletTable.java:1070)
 ~[calcite-core-1.37.0.jar:1.37.0]
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:?]
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 ~[?:?]
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at 
org.apache.calcite.sql2rel.ReflectiveConvertletTable.lambda$registerNodeTypeMethod$1(ReflectiveConvertletTable.java:95)
 ~[calcite-core-1.37.0.jar:1.37.0]
        ... 31 more
{noformat}




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to