[
https://issues.apache.org/jira/browse/KYLIN-5839?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17836492#comment-17836492
]
ASF subversion and git services commented on KYLIN-5839:
--------------------------------------------------------
Commit be22ca0de7e512df5dc443b99ed6df63635f9dfe in kylin's branch
refs/heads/kylin5 from Pengfei Zhan
[ https://gitbox.apache.org/repos/asf?p=kylin.git;h=be22ca0de7 ]
KYLIN-5839 Block agg-push-down for non-equal-join
KYLIN-5382 only deals with the equal-join conditions and gives the
corresponding test cases.
KYLIN-5831 fixed the problem where non-equiv-join conditions were
incorrectly converted to equivalent conditions. Due to the lack of test
cases, a regression bug occurs in ContextUtil.isJoinFromSameContext.
The related non-equiv-join sql is as follows.
If you want a corresponding equal-join sql, just remove the condition
content `or (t2.fcol_10 is null and t5.fcol_17 is null)`.
```sql
select t2.fcol_7 fcol_7, count(distinct t2.fcol_6) fcol_6
from (select t1.company_code fcol_6, t1.type_name fcol_7,
case when t1.created_date = t0.fcol_1 then 'TRUE'
else 'FALSE' end fcol_10
from ( select company_code, created_date, type_name
from "DEFAULT"."TEST_AGG_PUSH_DOWN" ) t1
join ( select company_code, max(created_date) fcol_1
from "DEFAULT"."TEST_AGG_PUSH_DOWN"
group by company_code
) t0 on t1.company_code = t0.company_code
) t2 join ( select 'TRUE' fcol_17 ) t5
on t2.fcol_10 = t5.fcol_17 or (t2.fcol_10 is null and t5.fcol_17 is null)
group by t2.fcol_7
```
> Block agg-push-down for non-equal-join
> --------------------------------------
>
> Key: KYLIN-5839
> URL: https://issues.apache.org/jira/browse/KYLIN-5839
> Project: Kylin
> Issue Type: Bug
> Components: Query Engine
> Affects Versions: 5.0-beta
> Reporter: Zhimin Wu
> Assignee: Zhimin Wu
> Priority: Major
> Fix For: 5.0.0
>
>
> The related non-equiv-join sql is as follows. If you want a corresponding
> equal-join sql, just remove the condition content `or (t2.fcol_10 is null and
> t5.fcol_17 is null)`.
> {code:java}
> select t2.fcol_7 fcol_7, count(distinct t2.fcol_6) fcol_6
> from (select t1.company_code fcol_6, t1.type_name fcol_7,
> case when t1.created_date = t0.fcol_1 then 'TRUE'
> else 'FALSE' end fcol_10
> from ( select company_code, created_date, type_name
> from "DEFAULT"."TEST_AGG_PUSH_DOWN" ) t1
> join ( select company_code, max(created_date) fcol_1
> from "DEFAULT"."TEST_AGG_PUSH_DOWN"
> group by company_code
> ) t0 on t1.company_code = t0.company_code
> ) t2 join ( select 'TRUE' fcol_17 ) t5
> on t2.fcol_10 = t5.fcol_17 or (t2.fcol_10 is null and t5.fcol_17 is null)
> group by t2.fcol_7{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)