Details
-
Bug
-
Status: Resolved
-
Urgent
-
Resolution: Not A Problem
-
None
-
None
-
Cassandra 3.4
-
Critical
Description
There is a regression since Cassandra 3.4 with query using clustering tuple values:
cqlsh:test> CREATE TABLE IF NOT EXISTS entity_with_clusterings( id bigint, uuid uuid, date timestamp, value text, PRIMARY KEY(id, uuid, date)) WITH CLUSTERING ORDER BY(uuid ASC, date DESC); cqlsh:test> INSERT INTO entity_with_clusterings(id, uuid, date, value) VALUES(3233835834146573312, 00000000-0000-0000-0000-000000000000, '2015-10-01 00:00:00+0000', 'val1'); cqlsh:test> INSERT INTO entity_with_clusterings(id, uuid, date, value) VALUES(3233835834146573312, 00000000-0000-0000-0000-000000000000, '2015-10-02 00:00:00+0000', 'val2'); cqlsh:test> INSERT INTO entity_with_clusterings(id, uuid, date, value) VALUES(3233835834146573312, 00000000-0000-0000-0000-000000000000, '2015-10-03 00:00:00+0000', 'val3'); cqlsh:test> INSERT INTO entity_with_clusterings(id, uuid, date, value) VALUES(3233835834146573312, 00000000-0000-0000-0000-000000000001, '2015-10-04 00:00:00+0000', 'val4'); cqlsh:test> INSERT INTO entity_with_clusterings(id, uuid, date, value) VALUES(3233835834146573312, 00000000-0000-0000-0000-000000000001, '2015-10-05 00:00:00+0000', 'val5'); cqlsh:test> SELECT * FROM entity_with_clusterings; id | uuid | date | value ---------------------+--------------------------------------+--------------------------+------- 3233835834146573312 | 00000000-0000-0000-0000-000000000000 | 2015-10-03 00:00:00+0000 | val3 3233835834146573312 | 00000000-0000-0000-0000-000000000000 | 2015-10-02 00:00:00+0000 | val2 3233835834146573312 | 00000000-0000-0000-0000-000000000000 | 2015-10-01 00:00:00+0000 | val1 3233835834146573312 | 00000000-0000-0000-0000-000000000001 | 2015-10-05 00:00:00+0000 | val5 3233835834146573312 | 00000000-0000-0000-0000-000000000001 | 2015-10-04 00:00:00+0000 | val4 (5 rows) cqlsh:test > SELECT uuid,date,value FROM entity_with_clusterings WHERE id=3233835834146573312 AND (uuid,date)>=(00000000-0000-0000-0000-000000000000,'2015-10-02 00:00:00+0000') AND (uuid,date)<(00000000-0000-0000-0000-000000000001, '2015-10-04 00:00:00+0000'); uuid | date | value --------------------------------------+---------------------------------+------- 00000000-0000-0000-0000-000000000000 | 2015-10-03 00:00:00.000000+0000 | val3 00000000-0000-0000-0000-000000000000 | 2015-10-02 00:00:00.000000+0000 | val2
The same query with Cassandra 3.3 returns correct answer:
cqlsh:test> SELECT uuid,date,value FROM entity_with_clusterings WHERE id=3233835834146573312 AND (uuid,date)>=(00000000-0000-0000-0000-000000000000,'2015-10-02 00:00:00+0000') AND (uuid,date)<(00000000-0000-0000-0000-000000000001, '2015-10-04 00:00:00+0000'); uuid | date | value --------------------------------------+--------------------------+------- 00000000-0000-0000-0000-000000000000 | 2015-10-02 00:00:00+0000 | val2 00000000-0000-0000-0000-000000000000 | 2015-10-01 00:00:00+0000 | val1 00000000-0000-0000-0000-000000000001 | 2015-10-05 00:00:00+0000 | val5