drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-5691) multiple count distinct query planning error at physical phase
Date Wed, 08 Nov 2017 19:15:00 GMT

    [ https://issues.apache.org/jira/browse/DRILL-5691?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16244567#comment-16244567
] 

ASF GitHub Bot commented on DRILL-5691:
---------------------------------------

Github user amansinha100 commented on the issue:

    https://github.com/apache/drill/pull/889
  
    @weijietong I ran the functional tests with the PR and saw some failures.  While debugging
those failures, I found the simple scalar aggregate case works but anything with compound
aggregate expressions  throws a CannotPlanException, for example:  
    
    explain plan for select count(*) from cp.`tpch/lineitem.parquet` l where l_quantity <
(select max(l2.l_quantity) + 1 from cp.`tpch/lineitem.parquet` l2)
     
    Here, the right side of the inequality join is actually a scalar but the JoinUtils.isScalar()
method does not detect it correctly.  The reason is the right side is a DrillProjectRel whose
input is a RelSubSet.  The RelSubSet has a DrillAggregateRel but it looks like currently Calcite
does not detect this is a scalar aggregate if it occurs as part of a RelSubSet.   I see Calcite
has a comment in [1] which points to an open JIRA CALCITE-1048.  
    
    [1] https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/rel/metadata/RelMdMaxRowCount.java#L165


> multiple count distinct query planning error at physical phase 
> ---------------------------------------------------------------
>
>                 Key: DRILL-5691
>                 URL: https://issues.apache.org/jira/browse/DRILL-5691
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Execution - Relational Operators
>    Affects Versions: 1.9.0, 1.10.0
>            Reporter: weijie.tong
>
> I materialized the count distinct query result in a cache , added a plugin rule to translate
the (Aggregate、Aggregate、Project、Scan) or (Aggregate、Aggregate、Scan) to (Project、Scan)
at the PARTITION_PRUNING phase. Then ,once user issue count distinct queries , it will be
translated to query the cache to get the result.
> eg1: " select count(*),sum(a) ,count(distinct b)  from t where dt=xx " 
> eg2:"select count(*),sum(a) ,count(distinct b) ,count(distinct c) from t where dt=xxx
"
> eg3:"select count(distinct b), count(distinct c) from t where dt=xxx"
> eg1 will be right and have a query result as I expected , but eg2 will be wrong at the
physical phase.The error info is here: https://gist.github.com/weijietong/1b8ed12db9490bf006e8b3fe0ee52269.

> eg3 will also get the similar error.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message