[
https://issues.apache.org/jira/browse/PHOENIX-995?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14007361#comment-14007361
]
Thomas D'Silva commented on PHOENIX-995:
----------------------------------------
I have a question about the getKeyFormationTraversalIndex(), newKeyPart() and
preservesOrder() functions. I used the default implementation of these
functions because I was not sure how to implement them correctly.
I think for both LPAD and TO_STRING getKeyFormationTraversalIndex() should
return NO_TRAVERSAL since its not possible to generate the start/stop key if
these functions are used in the where clause.
I was not able to understand how the preservesOrder() is supposed to be
implemented. Does OrderPreserving.YES mean that if inputs to the function are
ordered in a particular way, applying the function will not re-order the
outputs wrt to inputs? However, can they be sorted differently, for eg INVERT
has OrderPreserving.YES, even thought it inverts the bits of the input?
I think preservesOrder() should return NO_TRAVERSAL since TO_STRING returns a
string which is sorted lexicographically compared to numeric sort. of the
original input.
I think LPAD also should return NO_TRAVERSAL.
> ADD TO_STRING AND LPAD functions
> ---------------------------------
>
> Key: PHOENIX-995
> URL: https://issues.apache.org/jira/browse/PHOENIX-995
> Project: Phoenix
> Issue Type: New Feature
> Reporter: Thomas D'Silva
> Attachments: PHOENIX-995.patch
>
>
> Add TO_STRING(input number, base number) which can be used to convert a base
> 10 number to a number in any base between 2 to 62.
> Add LPAD(input string, length int [, fill string]) which can be used to left
> pad an input string.
> Together these two functions can be used to generate IDs using sequences, for
> example:
> {code:sql}
> CREATE SEQUENCE foo.bar START WITH 0 INCREMENT BY 62
> SELECT LPAD(TO_STRING(NEXT VALUE FOR foo.bar,62), 10,'0') FROM
> SYSTEM."SEQUENCE"
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)