[
https://issues.apache.org/jira/browse/CASSANDRA-11401?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15206993#comment-15206993
]
Tyler Hobbs commented on CASSANDRA-11401:
-----------------------------------------
bq. My problem here is that if you say that Cassandra 3.4 is returning the
correct result, then it is not consistent with what is displayed by SELECT *
...
You're still thinking in terms of how things are stored on disk, not the
logical ordering. With the mixed ASC/DESC clustering order, you've explicitly
specified that the rows should be stored in a non-logical order on disk.
What CASSANDRA-7281 did was to break the old restriction of requiring a single
contiguous slice in order to return logically correct results. When you do
{{SELECT * WHERE (uuid, date) >= (00....000, 2015-10-02 00:00:00+0000)}},
you're asking Cassandra to return rows where {{(uuid, date)}} is logically >=
{{(00....000, 2015-10-02 00:00:00+0000)}}. You are _not_ asking Cassandra to
return rows that are stored on disk after {{(00....000, 2015-10-02
00:00:00+0000)}}, regardless of how they logically compare -- we don't even
have a way to express that request in CQL.
> [Regression] Incorrect results for clustering tuples query
> ----------------------------------------------------------
>
> Key: CASSANDRA-11401
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11401
> Project: Cassandra
> Issue Type: Bug
> Components: CQL
> Environment: *Cassandra 3.4*
> Reporter: DOAN DuyHai
> Priority: Critical
>
> There is a regression since *Cassandra 3.4* with query using clustering tuple
> values:
> {noformat}
> 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
> {noformat}
> The same query with *Cassandra 3.3* returns correct answer:
> {noformat}
> 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
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)