cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcin Szymaniuk (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-7281) SELECT on tuple relations are broken for mixed ASC/DESC clustering order
Date Thu, 20 Nov 2014 18:14:34 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-7281?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Marcin Szymaniuk updated CASSANDRA-7281:
----------------------------------------
    Attachment: 0001-CASSANDRA-7281-SELECT-on-tuple-relations-are-broken-v2.patch

New patch uploaded.
I decided to just change <= to <. So far I create as many restrictions (slices) as the
number of clustering columns in tuple. The fact we query  two slices next to each other instead
of one is ok in terms of the final effect. I don't think it harms performance. We might want
to change it to be more consistent from conceptual point of view. I will wait for your thoughts
before doing anything more.
Also I did dtests pull-request related to that change: 
https://github.com/riptano/cassandra-dtest/pull/118

> SELECT on tuple relations are broken for mixed ASC/DESC clustering order
> ------------------------------------------------------------------------
>
>                 Key: CASSANDRA-7281
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7281
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Sylvain Lebresne
>             Fix For: 2.0.12
>
>         Attachments: 0001-CASSANDRA-7281-SELECT-on-tuple-relations-are-broken-.patch,
0001-CASSANDRA-7281-SELECT-on-tuple-relations-are-broken-v2.patch
>
>
> As noted on [CASSANDRA-6875|https://issues.apache.org/jira/browse/CASSANDRA-6875?focusedCommentId=13992153&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13992153],
the tuple notation is broken when the clustering order mixes ASC and DESC directives because
the range of data they describe don't correspond to a single continuous slice internally.
To copy the example from CASSANDRA-6875:
> {noformat}
> cqlsh:ks> create table foo (a int, b int, c int, PRIMARY KEY (a, b, c)) WITH CLUSTERING
ORDER BY (b DESC, c ASC);
> cqlsh:ks> INSERT INTO foo (a, b, c) VALUES (0, 2, 0);
> cqlsh:ks> INSERT INTO foo (a, b, c) VALUES (0, 1, 0);
> cqlsh:ks> INSERT INTO foo (a, b, c) VALUES (0, 1, 1);
> cqlsh:ks> INSERT INTO foo (a, b, c) VALUES (0, 0, 0);
> cqlsh:ks> SELECT * FROM foo WHERE a=0;
>  a | b | c
> ---+---+---
>  0 | 2 | 0
>  0 | 1 | 0
>  0 | 1 | 1
>  0 | 0 | 0
> (4 rows)
> cqlsh:ks> SELECT * FROM foo WHERE a=0 AND (b, c) > (1, 0);
>  a | b | c
> ---+---+---
>  0 | 2 | 0
> (1 rows)
> {noformat}
> The last query should really return {{(0, 2, 0)}} and {{(0, 1, 1)}}.
> For that specific example we should generate 2 internal slices, but I believe that with
more clustering columns we may have more slices.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message