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

Jinfeng Ni commented on DRILL-3912:
-----------------------------------

I actually had one patch to remove the redundancy in run-time generated code.  
https://issues.apache.org/jira/browse/DRILL-3754

The only failure with the patch is for it hit failure in scalar replacement 
logic for case where same column appear twice in a HashJoin. The run-time code 
seems valid, but the scalar replacement fails. 

{code} 
select t1.full_name from cp.`employee.json` t1, cp.`department.json` t2 
where t1.department_id = t2.department_id and t1.position_id = 
t2.department_id");
{code}

I just rebase on master branch. Can you check if the two patches address same 
problem?

See: https://github.com/jinfengni/incubator-drill/tree/DRILL-3754


> Common subexpression elimination in code generation
> ---------------------------------------------------
>
>                 Key: DRILL-3912
>                 URL: https://issues.apache.org/jira/browse/DRILL-3912
>             Project: Apache Drill
>          Issue Type: Bug
>            Reporter: Steven Phillips
>            Assignee: Jinfeng Ni
>
> Drill currently will evaluate the full expression tree, even if there are 
> redundant subtrees. Many of these redundant evaluations can be eliminated by 
> reusing the results from previously evaluated expression trees.
> For example,
> {code}
> select a + 1, (a + 1)* (a - 1) from t
> {code}
> Will compute the entire (a + 1) expression twice. With CSE, it will only be 
> evaluated once.
> The benefit will be reducing the work done when evaluating expressions, as 
> well as reducing the amount of code that is generated, which could also lead 
> to better JIT optimization.



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

Reply via email to