[
https://issues.apache.org/jira/browse/CASSANDRA-242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12737719#action_12737719
]
Jonathan Ellis commented on CASSANDRA-242:
------------------------------------------
Maybe I am slow -- I don't see what problem this is solving.
It looks like the reasoning is
- we can't just convert all Tokens to byte[] and average them to get a new
midpoint Token, because you are not guaranteed to be able to invert the
averaged byte[] to a valid Token
- so let's do all Token comparisons as byte[] and not try to do the inversion
But this means the only comparator you can use is the byte-order one. You
can't do Range comparisons with byte order, and then sort keys with the "real"
comparator. Bootstrap and cross-node range queries both rely on using the same
comparator with Tokens as with keys. That is why IMO the split code should
just be left up to the Partitioner.
Have I misunderstood?
> Implement method to "evenly" split a Range
> ------------------------------------------
>
> Key: CASSANDRA-242
> URL: https://issues.apache.org/jira/browse/CASSANDRA-242
> Project: Cassandra
> Issue Type: New Feature
> Components: Core
> Reporter: Stu Hood
> Assignee: Stu Hood
> Attachments: CASSANDRA-242.diff
>
>
> Two tickets currently depend on being able to deterministically split a Range
> object into two "even" Ranges.
> This can be accomplished with RandomPartitioner/BigIntegerToken by taking the
> average of the tokens, but the OrderPreservingPartitioner/StringToken
> implementation uses a Java Collator to define the sort order of Tokens, which
> means that they are not necessarily sorted in byte/char order.
> Collator.getCollationKey(String).toByteArray() gets you a sortable byte
> array, but there is no publicly accessible API for converting a similar byte
> array back into a String.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.