[ 
https://issues.apache.org/jira/browse/CASSANDRA-6875?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13993078#comment-13993078
 ] 

Tyler Hobbs commented on CASSANDRA-6875:
----------------------------------------

Okay, most of your concerns should be addressed on the [same 
branch|https://github.com/thobbs/cassandra/compare/3808c2b35993fed50554f13a73b2444afb598715...CASSANDRA-6875-2.0].

As I mentioned, I've kept the same behavior for slices over mixed-asc/desc 
comparators; I'll wait for your response to decide what to do about that.

Tuples.Value no longer returns serialized values, so {{buildBounds}} takes care 
of that work.  It seemed cleanest to just split out different functions for 
building the different types of multi-column bounds instead of fitting it all 
into one loop.

I did try moving MultiColumnRestrictions into a separate attribute in 
SelectStatement, but that didn't seem to make things much clearer.  The column 
names that the restriction applies to would need to be separately tracked.  
When processing restrictions, you would have to refer back to that list and 
check it or update it.  I think the current behavior is reasonably clear if you 
think of it like this: SelectStatement.columnRestrictions tracks restrictions 
on each column; in the case of multi-column restrictions, some columns may 
share a single restriction object.

Once ASF mail is working again, I'll start that thread about tests on the dev 
ML.

> CQL3: select multiple CQL rows in a single partition using IN
> -------------------------------------------------------------
>
>                 Key: CASSANDRA-6875
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6875
>             Project: Cassandra
>          Issue Type: Bug
>          Components: API
>            Reporter: Nicolas Favre-Felix
>            Assignee: Tyler Hobbs
>            Priority: Minor
>             Fix For: 2.0.8
>
>
> In the spirit of CASSANDRA-4851 and to bring CQL to parity with Thrift, it is 
> important to support reading several distinct CQL rows from a given partition 
> using a distinct set of "coordinates" for these rows within the partition.
> CASSANDRA-4851 introduced a range scan over the multi-dimensional space of 
> clustering keys. We also need to support a "multi-get" of CQL rows, 
> potentially using the "IN" keyword to define a set of clustering keys to 
> fetch at once.
> (reusing the same example\:)
> Consider the following table:
> {code}
> CREATE TABLE test (
>   k int,
>   c1 int,
>   c2 int,
>   PRIMARY KEY (k, c1, c2)
> );
> {code}
> with the following data:
> {code}
>  k | c1 | c2
> ---+----+----
>  0 |  0 |  0
>  0 |  0 |  1
>  0 |  1 |  0
>  0 |  1 |  1
> {code}
> We can fetch a single row or a range of rows, but not a set of them:
> {code}
> > SELECT * FROM test WHERE k = 0 AND (c1, c2) IN ((0, 0), (1,1)) ;
> Bad Request: line 1:54 missing EOF at ','
> {code}
> Supporting this syntax would return:
> {code}
>  k | c1 | c2
> ---+----+----
>  0 |  0 |  0
>  0 |  1 |  1
> {code}
> Being able to fetch these two CQL rows in a single read is important to 
> maintain partition-level isolation.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to