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)