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)