Zhen Chen created CALCITE-7071:
----------------------------------

             Summary: Support replacing Join node with its child node when Join 
condition is false in ProjectJoinRemoveRule
                 Key: CALCITE-7071
                 URL: https://issues.apache.org/jira/browse/CALCITE-7071
             Project: Calcite
          Issue Type: Improvement
            Reporter: Zhen Chen
            Assignee: Zhen Chen
             Fix For: 1.41.0


SQL

{code:java}
SELECT e.deptno
FROM sales.emp e
LEFT JOIN sales.dept d ON e.deptno = d.deptno and e.deptno between 3 and 1
{code}

Plan before

{code:java}
LogicalProject(DEPTNO=[$7])
  LogicalJoin(condition=[false], joinType=[left])
    LogicalTableScan(table=[[CATALOG, SALES, EMP]])
    LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
{code}

Plan after

{code:java}
LogicalProject(DEPTNO=[$7])
  LogicalTableScan(table=[[CATALOG, SALES, EMP]])
{code}

In ProjectJoinRemoveRule, when the Join condition is false, replace the Join 
with its left child for a left join or its right child for a right join. The 
above is an example of a left join.



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

Reply via email to