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

Thomas D'Silva updated PHOENIX-3489:
------------------------------------
    Fix Version/s:     (was: 4.15.0)

> Compile out expressions formed by only columns with WHERE clause equality 
> constraints in GROUP BY and ORDER BY
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-3489
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-3489
>             Project: Phoenix
>          Issue Type: Bug
>            Reporter: James Taylor
>            Priority: Major
>
> Since columns constrained by equality constraints evaluate to the same 
> constant value, expressions formed only by them may be stripped out of GROUP 
> BY and ORDER BY clauses.
> For example, the group by key for this query can be only pk2:
> {code}
> SELECT FLOOR(pk1), pk2 FROM t WHERE pk1 = 1 
> GROUP BY FLOOR(pk1), pk2
> {code}
> This can be implemented by
> - using OrderPreservingTracker.IsConstantVisitor to detect this case
> - evaluating the expression at compilation time
> - storing the resulting LiteralExpression as the leading group by expressions
> - storing the count of constant expressions in GroupBy as constantGroupByCount
> - modifying ExpressionCompiler.wrapGroupByExpression() to return the 
> LiteralExpression when the position is less that the constantGroupByCount
> - sending to the server only non constants in the GroupBy.keyExpressions list
> For ORDER BY, we can simply remove these expressions from the 
> OrderBy.orderByExpressions lists. A further optimization would be to not even 
> project the constant ORDER BY expression and transform it into a literal on 
> the client side.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to