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