You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Paul Rogers (JIRA)" <ji...@apache.org> on 2016/11/07 16:59:58 UTC

[jira] [Commented] (DRILL-4815) Run-time code compilation may take dozen seconds for complex expression

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

Paul Rogers commented on DRILL-4815:
------------------------------------

See DRILL-4777 for suggestions about how to simplify the generated code and the CG process.

> Run-time code compilation may take dozen seconds for complex expression
> -----------------------------------------------------------------------
>
>                 Key: DRILL-4815
>                 URL: https://issues.apache.org/jira/browse/DRILL-4815
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Execution - Codegen
>            Reporter: Jinfeng Ni
>
> We are seeing that for a relatively complex filter expression, Drill may spend ~ 10-20 seconds on run-time code compilation. Although it's true that the expression is a bit complex and the next same query would enjoy the benefit of cached run-time code,  we still may have to consider way to reduce the time spent on the compilation when the query is processed for the 1st time, in order to make Drill more "interactive". 
> For instance, for the following query, the log shows it spent 7 seconds on code compilation, while the query returns within 9 seconds.
> {code}
> select * from cp.`tpch/nation.parquet` t
> WHERE  (((
>                             cast(substring(t.CID, 9) as integer) = 28)
>               AND    (((
>                                           cast(substring(t.LID, 8) as integer) = 1)
>                             AND    (((
>                                                         cast(substring(t.TYEAR, 11) as integer) = 2011)
>                                           AND    ((
>                                                                cast(t.GRP_ID as integer) IN (1,
>                                                                                                       2))
>                                                  AND    (
>                                                                cast(t.VM_DATEID as integer) = 20111201)))
>                                    OR     ((
>                                                         cast(t.TYEAR as integer) = 2012)
>                                           AND    ((
>                                                                cast(t.GRP_ID as integer) IN (1,
>                                                                                                       2))
>                                                  AND    (
>                                                                cast(t.VM_DATEID as integer)= 20121201)))
>                                    OR     ((
>                                                         cast(substring(t.TYEAR, 11) as integer) = 2013)
>                                           AND    ((
>                                                                cast(t.GRP_ID as integer) IN (1,
>                                                                                                       2))
>                                                  AND    (
>                                                                cast(t.VM_DATEID as integer) = 20131201)))))
>                      OR     ((
>                                           cast(substring(t.LID, 8) as integer) = 2)
>                             AND    (((
>                                                         cast(substring(t.TYEAR, 11) as integer) = 2011)
>                                           AND    ((
>                                                                cast(t.GRP_ID as integer) IN (-1,
>                                                                                                       1,
>                                                                                                       2))
>                                                  AND    (
>                                                                cast(t.VM_DATEID as integer)= 20111201)))
>                                    OR     ((
>                                                         cast(t.TYEAR as integer) = 2013)
>                                           AND    ((
>                                                                cast(t.GRP_ID as integer) IN (-1,
>                                                                                                       1,
>                                                                                                       2))
>                                                  AND    (
>                                                                cast(t.VM_DATEID as integer) = 20131201)))))))
>        AND    ((
>                             cast(t.FLAG as integer) = -1)
>               OR     (
>                             cast(t.FLAG as integer) = 0)) )
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)