[ 
https://issues.apache.org/jira/browse/DRILL-1167?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aditya Kishore updated DRILL-1167:
----------------------------------

    Attachment: DRILL-1167-Split-large-runtime-generated-functions-i.patch

* Modified few operators' (CopyUtil, TopNBatch, ExternalSortBatch) runtime code 
generators to start a code block for each value vector.
* With this change, we are able to project 2000+ expressions, sort on 500+, 
group by on 200+, filter on 150+ and join on 100+ columns.
* The test cases added with this patch adds 3 minutes to the test run and hence 
I have excluded them from default run. They can be enabled using 'largeTests' 
maven profile.


> Split large runtime generated functions into a chain of functions
> -----------------------------------------------------------------
>
>                 Key: DRILL-1167
>                 URL: https://issues.apache.org/jira/browse/DRILL-1167
>             Project: Apache Drill
>          Issue Type: Sub-task
>          Components: Execution - Codegen
>    Affects Versions: 1.0.0-BETA1
>            Reporter: Aditya Kishore
>            Assignee: Aditya Kishore
>         Attachments: 
> DRILL-1167-Split-large-runtime-generated-functions-i.patch
>
>
> Since a Java function can not grow beyond 64kb (of byte code), it would be 
> useful to split such functions into multiple functions and invoke them as a 
> chain.
> For example, the following function
> {code}
> public boolean doEval() {
>   //block 0:
>   {
>     ...
>   }
> ...
>   //block m-1:
>   {
>     ...
>   }
>   //block m:
>   {
>     ...
>   }
> ...
>   //block n:
>   {
>     ...
>   }
>   {
>     return true;
>   }
> }
> {code}
> Can be re-written as:
> {code}
> public boolean doEval() {
>   //block 0:
>   {
>     ...
>   }
> ...
>   //block m-1:
>   {
>     ...
>   }
>   return doEval0();
> }
> public boolean doEval0() {
>   //block m:
>   {
>     ...
>   }
> ...
>   //block n:
>   {
>     ...
>   }
>   {
>     return true;
>   }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to