[
https://issues.apache.org/jira/browse/PHOENIX-1987?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14582787#comment-14582787
]
James Taylor commented on PHOENIX-1987:
---------------------------------------
Don't override getKeyFormationTraversalIndex. That's only used for cases in
which a function preserves the original identify of the argument. An example is
CoerceExpression which changes the type, but preserves the identify. Another is
the INVERT(x) which is the same as the original with just the bits inverted.
That won't be the case for these math functions.
I believe the following query should use a reverse scan:
{code}
SELECT * FROM T ORDER BY TRUNC(k1, 'DAY') DESC, CEIL(k2, 'HOUR')
{code}
All the CEIL, TRUNC, FLOOR, ROUND functions output their argument in ASC order,
even if they come in DESC. So having an ORDER BY clause like the above, it
should be order preserving. Is that what you're finding?
FYI, you can check if the order is forward versus reverse by comparing the
plan.getOrderBy() with OrderBy.FWD_ROW_KEY_ORDER_BY or
OrderBy.REV_ROW_KEY_ORDER_BY as you can see in some of the tests in
QueryCompilerTest.
> SIGN built-in function should be order preserving
> -------------------------------------------------
>
> Key: PHOENIX-1987
> URL: https://issues.apache.org/jira/browse/PHOENIX-1987
> Project: Phoenix
> Issue Type: Sub-task
> Reporter: James Taylor
> Assignee: Shuxiong Ye
> Fix For: 5.0.0, 4.5.0, 4.4.1
>
> Attachments:
> 0001-PHOENIX-1987-SIGN-built-in-function-should-be-order_v2.patch,
> 0001-PHOENIX-1987-fixing-getKeyFormationTraversalIndex-in-SIGN-function.patch
>
>
> The SIGN built-in function preserves the order of its input. This needs to be
> explicitly implemented in SignFunction by implementing the following method:
> {code}
> public OrderPreserving preservesOrder() {
> return OrderPreserving.YES;
> }
> {code}
> This will allow certain optimizations reducing the amount of memory and/or
> buffering that is required if SIGN is used in a GROUP BY or ORDER BY clause.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)