Aleksey Plekhanov created IGNITE-25357:
------------------------------------------
Summary: Calcite engine. Wrong required columns calculation for
double correlate
Key: IGNITE-25357
URL: https://issues.apache.org/jira/browse/IGNITE-25357
Project: Ignite
Issue Type: Bug
Reporter: Aleksey Plekhanov
Reproducer:
{code:java}
/** */
@Test
public void testCorrelateWrongRequiredColumn() throws Exception {
IgniteSchema schema = createSchema(
createTable("T1", IgniteDistributions.single(), "ID",
Integer.class, "NAME", String.class, "REF", Integer.class),
createTable("T2", IgniteDistributions.single(), "ID",
Integer.class, "REF", Integer.class),
createTable("T3", IgniteDistributions.single(), "ID",
Integer.class, "REF", Integer.class)
);
assertPlan("SELECT T1.NAME FROM T1 " +
"WHERE EXISTS (" +
" SELECT 1 " +
" FROM T2 " +
" WHERE T2.ID = T1.REF AND T2.REF = (SELECT 1 FROM T3 WHERE
T3.ID = T1.REF)" +
")", schema,
nodeOrAnyChild(isTableScan("T1")));
}
{code}
Throws an assertion error:
{noformat}
java.lang.AssertionError: Required columns {2} not subset of left columns {0,
1}
at org.apache.calcite.util.Litmus.lambda$static$0(Litmus.java:31)
~[calcite-core-1.37.0.jar:1.37.0]
at org.apache.calcite.util.Litmus.check(Litmus.java:76)
~[calcite-core-1.37.0.jar:1.37.0]
at org.apache.calcite.rel.core.Correlate.isValid(Correlate.java:145)
~[calcite-core-1.37.0.jar:1.37.0]
at org.apache.calcite.rel.core.Correlate.<init>(Correlate.java:109)
~[calcite-core-1.37.0.jar:1.37.0]
at
org.apache.calcite.rel.logical.LogicalCorrelate.<init>(LogicalCorrelate.java:73)
~[calcite-core-1.37.0.jar:1.37.0]
at
org.apache.calcite.rel.logical.LogicalCorrelate.create(LogicalCorrelate.java:116)
~[calcite-core-1.37.0.jar:1.37.0]
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)