You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Thomas Rebele (Jira)" <ji...@apache.org> on 2020/11/17 14:51:00 UTC

[jira] [Created] (CALCITE-4404) Missing LogicalCorrelate when using FILTER_SUB_QUERY_TO_CORRELATE for nested subqueries

Thomas Rebele created CALCITE-4404:
--------------------------------------

             Summary: Missing LogicalCorrelate when using FILTER_SUB_QUERY_TO_CORRELATE for nested subqueries
                 Key: CALCITE-4404
                 URL: https://issues.apache.org/jira/browse/CALCITE-4404
             Project: Calcite
          Issue Type: Bug
            Reporter: Thomas Rebele


The Programs#subQuery seem to not support nested subqueries.

When applying the rule to the following plan
{code}
LogicalFilter(condition=[EXISTS({
LogicalJoin(condition=[=($0, $5)], joinType=[left])
  LogicalFilter(condition=[=($cor0.empid, $0)])
    LogicalTableScan(table=[[hr, emps]])
  LogicalFilter(condition=[EXISTS({
LogicalFilter(condition=[=($cor1.empid, $0)])
  LogicalTableScan(table=[[hr, emps]])
})])
    LogicalTableScan(table=[[hr, emps]])
})])
  LogicalTableScan(table=[[hr, emps]])
{code}

it gets transformed into

{code}
LogicalProject(empid=[$0], deptno=[$1], name=[$2], salary=[$3], commission=[$4])
  LogicalJoin(condition=[true], joinType=[inner])
    LogicalTableScan(table=[[hr, emps]])
    LogicalAggregate(group=[{0}])
      LogicalProject(i=[true])
        LogicalJoin(condition=[=($0, $5)], joinType=[left])
          LogicalFilter(condition=[=($cor0.empid, $0)])
            LogicalTableScan(table=[[hr, emps]])
          LogicalProject(empid=[$0], deptno=[$1], name=[$2], salary=[$3], commission=[$4])
            LogicalCorrelate(correlation=[$cor1], joinType=[inner], requiredColumns=[{0}])
              LogicalTableScan(table=[[hr, emps]])
              LogicalAggregate(group=[{0}])
                LogicalProject(i=[true])
                  LogicalFilter(condition=[=($cor1.empid, $0)])
                    LogicalTableScan(table=[[hr, emps]])
{code}

The $cor0 has no associated LogicalCorrelate. My guess is that the first LogicalJoin should probably be a LogicalCorrelate.

Please note that this is a minimal example. The plan has been obtained by simplifying a larger plan and _has no meaning by itself._



--
This message was sent by Atlassian Jira
(v8.3.4#803005)