xiong duan created CALCITE-7313:
-----------------------------------

             Summary: Enhance SetOpToFilterRule to support complex input
                 Key: CALCITE-7313
                 URL: https://issues.apache.org/jira/browse/CALCITE-7313
             Project: Calcite
          Issue Type: Bug
    Affects Versions: 1.41.0
            Reporter: xiong duan


In Test testUnionToFilterRuleWithOneFilter.
The SQL:
{code:java}
SELECT mgr, comm FROM emp
UNION
SELECT mgr, comm FROM emp WHERE comm = 5{code}
Before optimize:
{code:java}
LogicalUnion(all=[false])
  LogicalProject(MGR=[$3], COMM=[$6])
    LogicalTableScan(table=[[CATALOG, SALES, EMP]])
  LogicalFilter(condition=[=($1, 5)])
    LogicalProject(MGR=[$3], COMM=[$6])
      LogicalTableScan(table=[[CATALOG, SALES, EMP]]){code}
After optimize:
{code:java}
LogicalAggregate(group=[{0, 1}])
  LogicalProject(MGR=[$3], COMM=[$6])
    LogicalTableScan(table=[[CATALOG, SALES, EMP]]){code}
But When this SQL is :
{code:java}
SELECT mgr FROM emp
UNION
SELECT mgr FROM emp WHERE comm = 5{code}
Before optimize:
{code:java}
LogicalUnion(all=[false])
  LogicalProject(MGR=[$3])
    LogicalTableScan(table=[[CATALOG, SALES, EMP]])
  LogicalProject(MGR=[$0])
    LogicalFilter(condition=[=($1, 5)])
      LogicalProject(MGR=[$3], COMM=[$6])
        LogicalTableScan(table=[[CATALOG, SALES, EMP]]){code}
can't be optimized.
Should be optimized to:
{code:java}
LogicalAggregate(group=[{0}])
  LogicalProject(MGR=[$3)
    LogicalTableScan(table=[[CATALOG, SALES, EMP]]){code}



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

Reply via email to