You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Benchao Li (Jira)" <ji...@apache.org> on 2022/04/24 00:39:00 UTC
[jira] [Commented] (CALCITE-4984) RelNode decorrelation is generating wrong group keys
[ https://issues.apache.org/jira/browse/CALCITE-4984?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17526943#comment-17526943 ]
Benchao Li commented on CALCITE-4984:
-------------------------------------
[~ShivenDvrk] This issue seems related with https://issues.apache.org/jira/browse/CALCITE-5081, I've raised a pr for CALCITE-5081, it would be nice if you can confirm that this issue is also resolved in that pr.
> RelNode decorrelation is generating wrong group keys
> ----------------------------------------------------
>
> Key: CALCITE-4984
> URL: https://issues.apache.org/jira/browse/CALCITE-4984
> Project: Calcite
> Issue Type: Bug
> Reporter: Shiven Dvrk
> Priority: Major
>
> We have a relnode of this format:
> {code:java}
> LogicalAggregate(group=[{0, 2}], agg#0=[SUM($1)])
> LogicalProject(C501=[$3], $f1=[-($2, $4)], $f2=[1])
> LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{0}])
> LogicalTableScan(table=[[T1]])
> LogicalAggregate(group=[{}], agg#0=[SUM($5)])
> LogicalJoin(condition=[=($1, $0)], joinType=[inner])
> LogicalProject(ID=[$0])
> LogicalTableScan(table=[[T2]])
> LogicalProject(ID=[$0], C508=[$1], C507=[$2], C501=[$3], C509=[$4])
> LogicalFilter(condition=[=($0, $cor0.ID)])
> LogicalTableScan(table=[[T3]]) {code}
> Which represents a query
> {code:java}
> SELECT
> t10.C501,
> 1 as Y,
> SUM(t10.C505 - t8.test_sum) AS Z
> FROM
> T1 AS t10,
> LATERAL (
> SELECT
> SUM(t0.C509) AS test_sum
> FROM
> (
> SELECT
> ID
> FROM
> T2
> )
> AS t
> INNER JOIN
> (
> SELECT
> *
> FROM
> T3
> WHERE
> C508 = t10.ID
> )
> AS t0
> ON t.ID = t0.C507) AS t8
> GROUP BY t10.C501, 1
> {code}
> When we use RelDecorrelator.decorrelateQuery(), it is decorrelating the relnode to following:
> {code}
> LogicalAggregate(group=[{0, 1}], Z=[SUM($1)])
> LogicalProject(C501=[$0], X=[-($1, $7)])
> LogicalJoin(condition=[=($5, $6)], joinType=[left])
> QueryTableScan(table=[[QU, T1]], fields=[[0, 1, 2, 3, 4, 5]])
> LogicalAggregate(group=[{0}], test_sum=[SUM($1)])
> LogicalProject(C508=[$4], C509=[$5])
> LogicalJoin(condition=[=($3, $0)], joinType=[inner])
> LogicalProject(ID=[$5])
> QueryTableScan(table=[[QUERY, T2]], fields=[[0, 1, 2, 3, 4, 5]])
> QueryTableScan(table=[[QUERY, T3]], fields=[[0, 1, 2, 3, 4]])
> {code}
> Representing the query like this:
> {code}
> SELECT
> t10.C501,
> t10.C505 - t18.test_sum AS X,
> SUM(t10.C505 - t18.test_sum) AS Z
> FROM
> T1 AS t10
> LEFT JOIN
> (
> SELECT
> T3.C508,
> SUM(T3.C509) AS test_sum
> FROM
> (
> SELECT
> ID
> FROM
> T2
> )
> AS t
> INNER JOIN
> T3
> ON t.ID = T3.C507
> GROUP BY
> T3.C508
> )
> AS t18
> ON t10.ID = t18.C508
> GROUP BY
> t10.C501,
> t10.C5633_505 - t18.test_sum
> {code}
>
> The decorrelation logic is changing the group by keys when the literal is involved. any idea on the reason behind this behavior?
--
This message was sent by Atlassian Jira
(v8.20.7#820007)