[
https://issues.apache.org/jira/browse/CASSANDRA-8730?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14311947#comment-14311947
]
Sylvain Lebresne commented on CASSANDRA-8730:
---------------------------------------------
bq. It looks to me like TimeUUID had the behaviour downgraded to CQL2 only,
whereas UUID has not.
The code inconsistency is likely just a historical accident, but it kind of
doesn't matter much since {{fromString}} will never be called by CQL3 (on a
date-string) as CQL3 only accepts UUID literals for UUID (not string literals,
contrarily to CQL2). So as long as we preserve the behavior for CQL2 until 3.0,
we can make the {{fromString}} implementations consistent by either accepting
or rejecting dates in both case (I'd personally go with rejecting dates as it's
dangerous in the first place, but I don't care enough to argument more than
that if someone disagree).
bq. makes TimeUUIDType extend UUIDType
While I don't mind the extension per-se, we have to be careful on the
comparison because unfortunately, TimeUUIDType does *not* compare as UUIDType
does. That is, after having compared the timestamps, UUIDType perform an
unsigned comparison of the lsb, while TimeUUIDType uses
[ByteBuffer.compareTo|http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html#compareTo(java.nio.ByteBuffer)]
which does a byte-signed comparison. Before someone asks, there is no good
excuse for doing so, it's a pretty old "mistake", but it's not something we can
afford to break now.
As an aside, I personally think this should be targeted at 3.0 (it's not a bug
fix). Also, as even subtly changing the comparison would have desastrous
consequence, it would be nice to add a few tests that checks that old and new
versions compare the same way (we can't be exhaustive, but we can get a fair
coverage of all code path easily enough).
> Optimize UUIDType comparisons
> -----------------------------
>
> Key: CASSANDRA-8730
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8730
> Project: Cassandra
> Issue Type: Improvement
> Reporter: J.B. Langston
> Assignee: Benedict
> Fix For: 2.1.4
>
>
> Compaction is slow on tables using compound keys containing UUIDs due to
> being CPU bound by key comparison. [~benedict] said he sees some easy
> optimizations that could be made for UUID comparison.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)