[ 
https://issues.apache.org/jira/browse/CALCITE-7272?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mihai Budiu resolved CALCITE-7272.
----------------------------------
    Fix Version/s: 1.42.0
       Resolution: Fixed

Fixed in 
[https://github.com/apache/calcite/commit/3eac1f7d567217e7fce13857712c7e0b6a1ab1e3]

Thank you for the fix [~zwhtx]  

Thank you for the review [~suibianwanwan33] 

> Subqueries cannot be decorrelated if have set op
> ------------------------------------------------
>
>                 Key: CALCITE-7272
>                 URL: https://issues.apache.org/jira/browse/CALCITE-7272
>             Project: Calcite
>          Issue Type: Improvement
>            Reporter: weihua zhang
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.42.0
>
>
> case 1:
> {code:sql}
> SELECT ename,
>   (
>     SELECT sum(c)
>     FROM (
>       SELECT deptno AS c
>       FROM   dept
>       WHERE  dept.deptno = emp.deptno
>       UNION ALL
>       SELECT 2 AS c
>       FROM   bonus
>       WHERE  bonus.job = emp.job
>     ) AS union_subquery
>   ) AS correlated_sum FROM
>   emp;
> LogicalProject(ENAME=[$1], CORRELATED_SUM=[$8]), id = 2619
>   LogicalProject(empno=[$0], ename=[$1], job=[$2], mgr=[$3], hiredate=[$4], 
> sal=[$5], comm=[$6], deptno=[$7], EXPR$0=[$8]), id = 2628
>     LogicalCorrelate(correlation=[$cor0], joinType=[left], 
> requiredColumns=[{2, 7}]), id = 2626
>       LogicalTableScan(table=[[testdb, emp]]), id = 2542
>       LogicalAggregate(group=[{}], EXPR$0=[SUM($0)]), id = 2615
>         LogicalUnion(all=[true]), id = 2613
>           LogicalProject(C=[$0]), id = 2606
>             LogicalFilter(condition=[=($0, $cor0.deptno)]), id = 2604
>               LogicalTableScan(table=[[testdb, dept]]), id = 2544
>           LogicalProject(C=[2]), id = 2611
>             LogicalFilter(condition=[=($1, $cor0.job)]), id = 2609
>               LogicalTableScan(table=[[testdb, bonus]]), id = 2548
> {code}
> case 2:
> {code:sql}
> SELECT *,
>   (SELECT COUNT(*)
>    FROM (
>      SELECT * FROM emp WHERE emp.deptno = dept.deptno
>      UNION ALL
>      SELECT * FROM emp
>    ) AS sub
>    GROUP BY deptno
>   ) AS num_dept_groups
> FROM dept;
> {code}



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

Reply via email to