cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Hobbs (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-4936) Less than operator when comparing timeuuids behaves as less than equal.
Date Sat, 10 Nov 2012 00:07:12 GMT


Tyler Hobbs commented on CASSANDRA-4936:

bq. Are you sure the UUIDs do not differ in their non-time-based component?

(Note: I suggested that Cesar open this ticket.)  It almost certainly is a problem with the
non-time-based component.  However, the intention of the user is pretty clear for this query:
select anything where the timestamp component is less than the provided one.

I've been handling this specially in pycassa for quite a while.  If the comparator is TimeUUID,
and a datetime/timestamp is passed as a slice end, it will create a TimeUUID with special
non-timestamp components.  For example, since slice ends are inclusive in the thrift api,
when creating the TimeUUID for the slice 'finish', the highest possible TimeUUID with the
given timestamp will be used.

We could do something similar with CQL, it would just require passing along information about
whether to create the highest or lowest TimeUUID representation for a given datestamp based
on the comparison operator that's used.

If details about what non-timestamp components pycassa uses would be useful, let me know.
> Less than operator when comparing timeuuids behaves as less than equal.
> -----------------------------------------------------------------------
>                 Key: CASSANDRA-4936
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.1.6
>         Environment: Linux CentOS.
> Linux localhost.localdomain 2.6.18-308.16.1.el5 #1 SMP Tue Oct 2 22:01:37 EDT 2012 i686
i686 i386 GNU/Linux
>            Reporter: Cesar Lopez-Nataren
> If we define the following column family using CQL3:
> CREATE TABLE useractivity (
>   user_id int,
>   activity_id 'TimeUUIDType',
>   data text,
>   PRIMARY KEY (user_id, activity_id)
> );
> Add some values to it.
> And then query it like:
> SELECT * FROM useractivity WHERE user_id = '3' AND activity_id < '2012-11-07 18:18:22-0800'
ORDER BY activity_id DESC LIMIT 1;
> the record with timeuuid '2012-11-07 18:18:22-0800' returns in the results.
> According to the documentation, on CQL3 the '<' and '>' operators are strict, meaning
not inclusive, so this seems to be a bug.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message