[ 
https://issues.apache.org/jira/browse/PHOENIX-4237?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16208205#comment-16208205
 ] 

ASF GitHub Bot commented on PHOENIX-4237:
-----------------------------------------

Github user JamesRTaylor commented on a diff in the pull request:

    https://github.com/apache/phoenix/pull/275#discussion_r145232171
  
    --- Diff: 
phoenix-core/src/test/java/org/apache/phoenix/expression/function/CollationKeyFunctionTest.java
 ---
    @@ -96,33 +96,35 @@ private static boolean testExpression(String inputStr, 
String localeIsoCode, Sor
                strengthLiteral = LiteralExpression.newConstant(null, 
PInteger.INSTANCE, sortOrder);
                decompositionLiteral = LiteralExpression.newConstant(null, 
PInteger.INSTANCE, sortOrder);
                boolean ret = testExpression(inputStrLiteral, 
localeIsoCodeLiteral, upperCaseBooleanLiteral, strengthLiteral,
    -                           decompositionLiteral, new 
PhoenixArray(PInteger.INSTANCE, expectedCollationKeyBytes));
    +                           decompositionLiteral, 
expectedCollationKeyBytesHex);
                return ret;
        }
     
        private static boolean testExpression(LiteralExpression 
inputStrLiteral, LiteralExpression localeIsoCodeLiteral,
                        LiteralExpression upperCaseBooleanLiteral, 
LiteralExpression strengthLiteral,
    -                   LiteralExpression decompositionLiteral, PhoenixArray 
expectedCollationKeyByteArray) throws SQLException {
    +                   LiteralExpression decompositionLiteral, String 
expectedCollationKeyBytesHex) throws Exception {
                List<Expression> expressions = Lists.newArrayList((Expression) 
inputStrLiteral,
                                (Expression) localeIsoCodeLiteral, (Expression) 
upperCaseBooleanLiteral, (Expression) strengthLiteral,
                                (Expression) decompositionLiteral);
                Expression collationKeyFunction = new 
CollationKeyFunction(expressions);
                ImmutableBytesWritable ptr = new ImmutableBytesWritable();
                boolean ret = collationKeyFunction.evaluate(null, ptr);
                if (ret) {
    -                   PhoenixArray result = (PhoenixArray) 
collationKeyFunction.getDataType().toObject(ptr,
    +                   byte[] result = (byte[]) 
collationKeyFunction.getDataType().toObject(ptr,
                                        collationKeyFunction.getSortOrder());
     
    +                   byte[] expectedCollationKeyByteArray = 
Hex.decodeHex(expectedCollationKeyBytesHex.toCharArray());
    +                   
    --- End diff --
    
    Why not use assertArrayEquals here instead?


> Allow sorting on (Java) collation keys for non-English locales
> --------------------------------------------------------------
>
>                 Key: PHOENIX-4237
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4237
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: Shehzaad Nakhoda
>             Fix For: 4.12.0
>
>
> Strings stored via Phoenix can be composed from a subset of the entire set of 
> Unicode characters. The natural sort order for strings for different 
> languages often differs from the order dictated by the binary representation 
> of the characters of these strings. Java provides the idea of a Collator 
> which given an input string and a (language) locale can generate a Collation 
> Key which can then be used to compare strings in that natural order.
> Salesforce has recently open-sourced grammaticus. IBM has open-sourced ICU4J 
> some time ago. These technologies can be combined to provide a robust new 
> Phoenix function that can be used in an ORDER BY clause to sort strings 
> according to the user's locale.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to