[
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)