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

James Taylor updated PHOENIX-3489:
----------------------------------
    Fix Version/s: 4.10.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
>             Fix For: 4.10.0
>
>
> 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
(v6.3.4#6332)

Reply via email to