[
https://issues.apache.org/jira/browse/CALCITE-5568?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
libopeng updated CALCITE-5568:
------------------------------
Description:
Decorrelate will fail. If the RelNode tree has LogicalValues
case:
{code:java}
SELECT
( SELECT COUNT(tbl2.deptno) FROM emp AS tbl2 WHERE tbl1.deptno = tbl2.deptno )
AS c0,
( SELECT 1 ) AS c1
FROM emp AS tbl1 {code}
after decorrelate
(org.apache.calcite.sql2rel.RelDecorrelator#decorrelateQuery(org.apache.calcite.rel.RelNode,
org.apache.calcite.tools.RelBuilder))
{code:java}
LogicalProject(C0=[$9], C1=[$10])
LogicalJoin(condition=[true], joinType=[left])
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4],
SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EXPR$0=[CASE(IS NULL($9),
0:BIGINT, $9)])
LogicalCorrelate(correlation=[$cor0], joinType=[left],
requiredColumns=[{7}])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], EXPR$0=[COUNT()])
LogicalProject(DEPTNO=[$7])
LogicalFilter(condition=[=($cor0.DEPTNO, $7)])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
LogicalAggregate(group=[{}], agg#0=[SINGLE_VALUE($0)])
LogicalValues(tuples=[[{ 1 }]]){code}
LogicalCorrelate will not be processed when the RelNode tree has LogicalValues
[https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java#L491]
Is this as expected?
was:
Decorrelate will fail. If the RelNode tree has LogicalValues
case:
{code:java}
SELECT
( SELECT COUNT(tbl2.deptno) FROM emp AS tbl2 WHERE tbl1.deptno = tbl2.deptno )
AS c0,
( SELECT 1 ) AS c1
FROM emp AS tbl1 {code}
after decorrelate
(org.apache.calcite.sql2rel.RelDecorrelator#decorrelateQuery(org.apache.calcite.rel.RelNode,
org.apache.calcite.tools.RelBuilder))
{code:java}
LogicalProject(sub_1=[$1])
LogicalJoin(condition=[true], joinType=[left])
LogicalValues(tuples=[[{ 0 }]]) <----
LogicalAggregate(group=[{}], agg#0=[SINGLE_VALUE($0)])
LogicalAggregate(group=[{}], SUM=[SUM($0)])
LogicalProject(count=[$10])
LogicalProject(id=[$0], gmt_create=[$1], service_begin=[$2],
driver_id=[$3], passenger_id=[$4], province=[$5], city=[$6],
service_minute=[$7], service_mileage=[$8], order_amount=[$9], $f0=[$10])
LogicalProject(id=[$0], gmt_create=[$1], service_begin=[$2],
driver_id=[$3], passenger_id=[$4], province=[$5], city=[$6],
service_minute=[$7], service_mileage=[$8], order_amount=[$9], $f0=[$10])
LogicalCorrelate(correlation=[$cor0], joinType=[left],
requiredColumns=[{5}]) <---- See here, the decorrelate didn't work
LogicalTableScan(table=[[trip_order]])
LogicalAggregate(group=[{}], agg#0=[SINGLE_VALUE($0)])
LogicalAggregate(group=[{}], COUNT=[COUNT()])
LogicalFilter(condition=[=($cor0.province, $5)])
LogicalTableScan(table=[[trip_order]]){code}
LogicalCorrelate will not be processed when the RelNode tree has LogicalValues
[https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java#L491]
Is this as expected?
> Decorrelate will fail. If the RelNode tree has LogicalValues
> ------------------------------------------------------------
>
> Key: CALCITE-5568
> URL: https://issues.apache.org/jira/browse/CALCITE-5568
> Project: Calcite
> Issue Type: Bug
> Reporter: libopeng
> Priority: Major
> Labels: pull-request-available
> Time Spent: 20m
> Remaining Estimate: 0h
>
> Decorrelate will fail. If the RelNode tree has LogicalValues
> case:
> {code:java}
> SELECT
> ( SELECT COUNT(tbl2.deptno) FROM emp AS tbl2 WHERE tbl1.deptno = tbl2.deptno
> ) AS c0,
> ( SELECT 1 ) AS c1
> FROM emp AS tbl1 {code}
> after decorrelate
> (org.apache.calcite.sql2rel.RelDecorrelator#decorrelateQuery(org.apache.calcite.rel.RelNode,
> org.apache.calcite.tools.RelBuilder))
> {code:java}
> LogicalProject(C0=[$9], C1=[$10])
> LogicalJoin(condition=[true], joinType=[left])
> LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4],
> SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8], EXPR$0=[CASE(IS NULL($9),
> 0:BIGINT, $9)])
> LogicalCorrelate(correlation=[$cor0], joinType=[left],
> requiredColumns=[{7}])
> LogicalTableScan(table=[[CATALOG, SALES, EMP]])
> LogicalAggregate(group=[{}], EXPR$0=[COUNT()])
> LogicalProject(DEPTNO=[$7])
> LogicalFilter(condition=[=($cor0.DEPTNO, $7)])
> LogicalTableScan(table=[[CATALOG, SALES, EMP]])
> LogicalAggregate(group=[{}], agg#0=[SINGLE_VALUE($0)])
> LogicalValues(tuples=[[{ 1 }]]){code}
> LogicalCorrelate will not be processed when the RelNode tree has
> LogicalValues
> [https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql2rel/RelDecorrelator.java#L491]
>
> Is this as expected?
>
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)