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

Hyunsik Choi updated TAJO-501:
------------------------------

    Attachment:     (was: TAJO-501_3.patch)

> Rewrite the projection part of logical planning
> -----------------------------------------------
>
>                 Key: TAJO-501
>                 URL: https://issues.apache.org/jira/browse/TAJO-501
>             Project: Tajo
>          Issue Type: Improvement
>          Components: planner/optimizer
>            Reporter: Hyunsik Choi
>            Assignee: Hyunsik Choi
>            Priority: Critical
>             Fix For: 0.8-incubating
>
>         Attachments: TAJO-501.patch, TAJO-501_2.patch, TAJO-501_3.patch, 
> TAJO-501_4.patch
>
>
> The projection part of LogicalPlanner was designed long time ago. It has 
> evolved to support many SQL expressions. However, due to its rough design, it 
> is hard to be improved for further SQL expressions and it causes many bugs.
> The current logical planner has the following problems:
> * other expressions except for column can be used in group-by clause.
>   ** TAJO-422
> * other expressions except for column can not be used in order-by clause.
>   ** TAJO-444
> * An expression including some aggregation function must be evaluated in 
> group-by executor.
>   ** As a result, some aggregation operator like HashAggregateExec has to 
> keep all intermediate results of a complex expression in a hash table.
>   ** It also causes frequent GC and large memory consumption.
> The too high code complexity also causes many bugs like
>  * TAJO-434 - java.lang.NullPointerException for invalid column name
>  * TAJO-428 - CASE WHEN IS NULL condition is a problem using LEFT OUTER JOIN
>  * TAJO-463 - ProjectionPushDownRule incorrectly rewrite the output schema of 
> StoreTableNode
>  * TAJO-443 - Order by query gives NullPointerException at at 
> org.apache.tajo.catalog.Schema.getColumnId(Schema.java:142)
> The major reason of this problem is as follows:
> * TargetListManager keeps only the final target list.
>   ** SELECT col1, sum(col2) as col2, ... <- the final target list
> * TargetListManager deals with each expression described in a target list or  
> other clauses like group-by clause as a singleton expression.
> The main objective of this issue is to rewrite the projection part of logical 
> planning in order to those problems.
> For 2 weeks, I've rewritten this part. I'll submit the patch soon.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to