Thomas Rebele created CALCITE-3977:
--------------------------------------

             Summary: RelDecorrelator produces incorrect plans if the input 
plan contains field accesses
                 Key: CALCITE-3977
                 URL: https://issues.apache.org/jira/browse/CALCITE-3977
             Project: Calcite
          Issue Type: Bug
            Reporter: Thomas Rebele


The RelCorrelator seems to have problems with some plans that contain a field 
access (probably a RexFieldAccess, but I haven't looked further into it). In 
this ticket there's a filter on *$cor0.birthPlace.city*.

Here the complete plan:
{code:java}
before decorrelate
LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{}])
  LogicalTableScan(table=[[bookstore, authors]])
  LogicalFilter(condition=[=('Munich', $cor0.birthPlace.city)])
    LogicalTableScan(table=[[bookstore, authors]])

after decorrelate
LogicalJoin(condition=[=($2, $8)], joinType=[left])
  LogicalTableScan(table=[[bookstore, authors]])
  LogicalJoin(condition=[true], joinType=[inner])
    LogicalFilter(condition=[=('Munich', $cor0.birthPlace.city)])
      LogicalTableScan(table=[[bookstore, authors]])
    LogicalAggregate(group=[{0}])
      LogicalProject(birthPlace=[$2])
        LogicalTableScan(table=[[bookstore, authors]])
{code}
There seem to be two problems:
 * The LogicalCorrelate has been removed, but the $cor0.birthPlace.city is 
still in the filter condition.
 * The inner join does not seem to be necessary. If it is, could somebody 
explain, why?



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

Reply via email to