[jira] [Commented] (KYLIN-3812) optimize the child CompareTupleFilter in a CompareTupleFilter
[ https://issues.apache.org/jira/browse/KYLIN-3812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16835241#comment-16835241 ] ASF subversion and git services commented on KYLIN-3812: Commit 8957a03006059b815eb57a905b71f51da7661479 in kylin's branch refs/heads/master from Chunen Ni [ https://gitbox.apache.org/repos/asf?p=kylin.git;h=8957a03 ] KYLIN-3812, add it query test case > optimize the child CompareTupleFilter in a CompareTupleFilter > - > > Key: KYLIN-3812 > URL: https://issues.apache.org/jira/browse/KYLIN-3812 > Project: Kylin > Issue Type: Improvement > Components: Query Engine >Reporter: Zhong Yanghong >Assignee: Zhong Yanghong >Priority: Major > Fix For: v3.0.0 > > > Currently it's not well supported for CompareTupleFilter to have a child of > CompareTupleFilter. However, in some cases, it's better to support it. > {code} > where (colA = (1=1)) > {code} > The *(1=1)* can be transformed to "true". And then this filter can be pushed > down to hbase. Otherwise, the filter *(colA = (1=1))* does not work in hbase. > And it may return incorrect results for the following SQL: > {code} > select colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end as phase, >count(*) > from T > where session_date between '2018-08-01' and '2018-08-31' > group by colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end; > {code} > In the final result, all of the keys will become 'B'. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (KYLIN-3812) optimize the child CompareTupleFilter in a CompareTupleFilter
[ https://issues.apache.org/jira/browse/KYLIN-3812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16835239#comment-16835239 ] ASF subversion and git services commented on KYLIN-3812: Commit a0ed26d1a733912db49775e4d5cf405a3e0bb3ae in kylin's branch refs/heads/master from kyotoYaho [ https://gitbox.apache.org/repos/asf?p=kylin.git;h=a0ed26d ] KYLIN-3812 optimize the child CompareTupleFilter in a CompareTupleFilter > optimize the child CompareTupleFilter in a CompareTupleFilter > - > > Key: KYLIN-3812 > URL: https://issues.apache.org/jira/browse/KYLIN-3812 > Project: Kylin > Issue Type: Improvement > Components: Query Engine >Reporter: Zhong Yanghong >Assignee: Zhong Yanghong >Priority: Major > Fix For: v3.0.0 > > > Currently it's not well supported for CompareTupleFilter to have a child of > CompareTupleFilter. However, in some cases, it's better to support it. > {code} > where (colA = (1=1)) > {code} > The *(1=1)* can be transformed to "true". And then this filter can be pushed > down to hbase. Otherwise, the filter *(colA = (1=1))* does not work in hbase. > And it may return incorrect results for the following SQL: > {code} > select colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end as phase, >count(*) > from T > where session_date between '2018-08-01' and '2018-08-31' > group by colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end; > {code} > In the final result, all of the keys will become 'B'. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (KYLIN-3812) optimize the child CompareTupleFilter in a CompareTupleFilter
[ https://issues.apache.org/jira/browse/KYLIN-3812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16833790#comment-16833790 ] nichunen commented on KYLIN-3812: - Tested on 1.16.0-kylin-r2, not fixed yet > optimize the child CompareTupleFilter in a CompareTupleFilter > - > > Key: KYLIN-3812 > URL: https://issues.apache.org/jira/browse/KYLIN-3812 > Project: Kylin > Issue Type: Improvement > Components: Query Engine >Reporter: Zhong Yanghong >Assignee: Zhong Yanghong >Priority: Major > Fix For: v3.0.0 > > > Currently it's not well supported for CompareTupleFilter to have a child of > CompareTupleFilter. However, in some cases, it's better to support it. > {code} > where (colA = (1=1)) > {code} > The *(1=1)* can be transformed to "true". And then this filter can be pushed > down to hbase. Otherwise, the filter *(colA = (1=1))* does not work in hbase. > And it may return incorrect results for the following SQL: > {code} > select colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end as phase, >count(*) > from T > where session_date between '2018-08-01' and '2018-08-31' > group by colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end; > {code} > In the final result, all of the keys will become 'B'. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (KYLIN-3812) optimize the child CompareTupleFilter in a CompareTupleFilter
[ https://issues.apache.org/jira/browse/KYLIN-3812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16814090#comment-16814090 ] Yifei Wu commented on KYLIN-3812: - Hi, [~yaho] I found this will optimize in calcite-1.16 which is depended by the latest Kylin release. So upgrading the Calcite may be a better choice for u. > optimize the child CompareTupleFilter in a CompareTupleFilter > - > > Key: KYLIN-3812 > URL: https://issues.apache.org/jira/browse/KYLIN-3812 > Project: Kylin > Issue Type: Improvement > Components: Query Engine >Reporter: Zhong Yanghong >Assignee: Zhong Yanghong >Priority: Major > Fix For: v3.0.0 > > > Currently it's not well supported for CompareTupleFilter to have a child of > CompareTupleFilter. However, in some cases, it's better to support it. > {code} > where (colA = (1=1)) > {code} > The *(1=1)* can be transformed to "true". And then this filter can be pushed > down to hbase. Otherwise, the filter *(colA = (1=1))* does not work in hbase. > And it may return incorrect results for the following SQL: > {code} > select colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end as phase, >count(*) > from T > where session_date between '2018-08-01' and '2018-08-31' > group by colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end; > {code} > In the final result, all of the keys will become 'B'. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (KYLIN-3812) optimize the child CompareTupleFilter in a CompareTupleFilter
[ https://issues.apache.org/jira/browse/KYLIN-3812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16813484#comment-16813484 ] Zhong Yanghong commented on KYLIN-3812: --- It's better to refine Kylin's IT and to include a boolean type column. Then this case can be covered. Anyone can help on this? > optimize the child CompareTupleFilter in a CompareTupleFilter > - > > Key: KYLIN-3812 > URL: https://issues.apache.org/jira/browse/KYLIN-3812 > Project: Kylin > Issue Type: Improvement > Components: Query Engine >Reporter: Zhong Yanghong >Assignee: Zhong Yanghong >Priority: Major > Fix For: v3.0.0 > > > Currently it's not well supported for CompareTupleFilter to have a child of > CompareTupleFilter. However, in some cases, it's better to support it. > {code} > where (colA = (1=1)) > {code} > The *(1=1)* can be transformed to "true". And then this filter can be pushed > down to hbase. Otherwise, the filter *(colA = (1=1))* does not work in hbase. > And it may return incorrect results for the following SQL: > {code} > select colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end as phase, >count(*) > from T > where session_date between '2018-08-01' and '2018-08-31' > group by colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end; > {code} > In the final result, all of the keys will become 'B'. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (KYLIN-3812) optimize the child CompareTupleFilter in a CompareTupleFilter
[ https://issues.apache.org/jira/browse/KYLIN-3812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16813482#comment-16813482 ] Zhong Yanghong commented on KYLIN-3812: --- Hi [~Yifei_Wu94], at least for calcite 1.12.0, the 1=1 constant part is not optimized. > optimize the child CompareTupleFilter in a CompareTupleFilter > - > > Key: KYLIN-3812 > URL: https://issues.apache.org/jira/browse/KYLIN-3812 > Project: Kylin > Issue Type: Improvement > Components: Query Engine >Reporter: Zhong Yanghong >Assignee: Zhong Yanghong >Priority: Major > Fix For: v3.0.0 > > > Currently it's not well supported for CompareTupleFilter to have a child of > CompareTupleFilter. However, in some cases, it's better to support it. > {code} > where (colA = (1=1)) > {code} > The *(1=1)* can be transformed to "true". And then this filter can be pushed > down to hbase. Otherwise, the filter *(colA = (1=1))* does not work in hbase. > And it may return incorrect results for the following SQL: > {code} > select colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end as phase, >count(*) > from T > where session_date between '2018-08-01' and '2018-08-31' > group by colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end; > {code} > In the final result, all of the keys will become 'B'. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (KYLIN-3812) optimize the child CompareTupleFilter in a CompareTupleFilter
[ https://issues.apache.org/jira/browse/KYLIN-3812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16802393#comment-16802393 ] Yifei Wu commented on KYLIN-3812: - hello [~yaho], added some comments for ur PR > optimize the child CompareTupleFilter in a CompareTupleFilter > - > > Key: KYLIN-3812 > URL: https://issues.apache.org/jira/browse/KYLIN-3812 > Project: Kylin > Issue Type: Improvement > Components: Query Engine >Reporter: Zhong Yanghong >Assignee: Zhong Yanghong >Priority: Major > Fix For: v3.0.0 > > > Currently it's not well supported for CompareTupleFilter to have a child of > CompareTupleFilter. However, in some cases, it's better to support it. > {code} > where (colA = (1=1)) > {code} > The *(1=1)* can be transformed to "true". And then this filter can be pushed > down to hbase. Otherwise, the filter *(colA = (1=1))* does not work in hbase. > And it may return incorrect results for the following SQL: > {code} > select colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end as phase, >count(*) > from T > where session_date between '2018-08-01' and '2018-08-31' > group by colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end; > {code} > In the final result, all of the keys will become 'B'. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (KYLIN-3812) optimize the child CompareTupleFilter in a CompareTupleFilter
[ https://issues.apache.org/jira/browse/KYLIN-3812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16802391#comment-16802391 ] Yifei Wu commented on KYLIN-3812: - plz add some comment for this root cause, and the confused point is that calcite won't optimize the constant part? > optimize the child CompareTupleFilter in a CompareTupleFilter > - > > Key: KYLIN-3812 > URL: https://issues.apache.org/jira/browse/KYLIN-3812 > Project: Kylin > Issue Type: Improvement > Components: Query Engine >Reporter: Zhong Yanghong >Assignee: Zhong Yanghong >Priority: Major > Fix For: v3.0.0 > > > Currently it's not well supported for CompareTupleFilter to have a child of > CompareTupleFilter. However, in some cases, it's better to support it. > {code} > where (colA = (1=1)) > {code} > The *(1=1)* can be transformed to "true". And then this filter can be pushed > down to hbase. Otherwise, the filter *(colA = (1=1))* does not work in hbase. > And it may return incorrect results for the following SQL: > {code} > select colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end as phase, >count(*) > from T > where session_date between '2018-08-01' and '2018-08-31' > group by colA >case >when colB = (1 = 1) then 'B' >when colC = (1 = 1) then 'C' >when colD = (1 = 1) then 'D' >else 'n/a' >end; > {code} > In the final result, all of the keys will become 'B'. -- This message was sent by Atlassian JIRA (v7.6.3#76005)