cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Hobbs (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-11401) [Regression] Incorrect results for clustering tuples query
Date Tue, 22 Mar 2016 18:36:25 GMT

    [ 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)

Mime
View raw message