You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Abe Ratnofsky (Jira)" <ji...@apache.org> on 2022/06/21 20:29:00 UTC

[jira] [Updated] (CASSANDRA-17704) Cannot specify ORDER BY of clustering columns after IN-clause constraints on clustering prefix

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

Abe Ratnofsky updated CASSANDRA-17704:
--------------------------------------
    Description: 
When a user specifies a partition key and clustering key prefix with equality predicates, C* supports sorting by the next clustering key (CASSANDRA-10271):
{code:java}
SELECT * FROM tbl WHERE pk = 1 AND ck1 = 1 ORDER BY ck2;{code}
 
When a user specifies a partition key with a set-membership predicate, C* supports sorting by the next clustering key (requires merge sort of results for each pk):
{code:java}
SELECT * FROM tbl WHERE pk IN (1, 2) ORDER BY ck1;{code}
 
But when a user specifies a partition key with an equality predicate and a clustering key prefix with a set membership predicate, C* *does not* support sorting by the next clustering key:
{code:java}
SELECT * FROM tbl WHERE pk = 1 AND ck1 IN (1, 2) ORDER BY ck2;
org.apache.cassandra.exceptions.InvalidRequestException: Order by currently only supports the ordering of columns following their declared order in the PRIMARY KEY
{code}
 
This last situation requires a merge sort, but so does the multi-pk situation.
 
The docs seem to indicate that this pattern is supported, as well: [https://docs.datastax.com/en/cql-oss/3.3/cql/cql_using/useQueryIN.html]

  was:
When a user specifies a partition key and clustering key prefix with equality predicates, C* supports sorting by the next clustering key (CASSANDRA-10271):
SELECT * FROM tbl WHERE pk = 1 AND ck1 = 1 ORDER BY ck2;
 
When a user specifies a partition key with a set-membership predicate, C* supports sorting by the next clustering key (requires merge sort of results for each pk):
SELECT * FROM tbl WHERE pk IN (1, 2) ORDER BY ck1;
 
But when a user specifies a partition key with an equality predicate and a clustering key prefix with a set membership predicate, C* *does not* support sorting by the next clustering key:
SELECT * FROM tbl WHERE pk = 1 AND ck1 IN (1, 2) ORDER BY ck2;

org.apache.cassandra.exceptions.InvalidRequestException: Order by currently only supports the ordering of columns following their declared order in the PRIMARY KEY
 
This last situation requires a merge sort, but so does the multi-pk situation.
 
The docs seem to indicate that this pattern is supported, as well: https://docs.datastax.com/en/cql-oss/3.3/cql/cql_using/useQueryIN.html


> Cannot specify ORDER BY of clustering columns after IN-clause constraints on clustering prefix
> ----------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-17704
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17704
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL/Semantics, Documentation
>            Reporter: Abe Ratnofsky
>            Priority: Normal
>
> When a user specifies a partition key and clustering key prefix with equality predicates, C* supports sorting by the next clustering key (CASSANDRA-10271):
> {code:java}
> SELECT * FROM tbl WHERE pk = 1 AND ck1 = 1 ORDER BY ck2;{code}
>  
> When a user specifies a partition key with a set-membership predicate, C* supports sorting by the next clustering key (requires merge sort of results for each pk):
> {code:java}
> SELECT * FROM tbl WHERE pk IN (1, 2) ORDER BY ck1;{code}
>  
> But when a user specifies a partition key with an equality predicate and a clustering key prefix with a set membership predicate, C* *does not* support sorting by the next clustering key:
> {code:java}
> SELECT * FROM tbl WHERE pk = 1 AND ck1 IN (1, 2) ORDER BY ck2;
> org.apache.cassandra.exceptions.InvalidRequestException: Order by currently only supports the ordering of columns following their declared order in the PRIMARY KEY
> {code}
>  
> This last situation requires a merge sort, but so does the multi-pk situation.
>  
> The docs seem to indicate that this pattern is supported, as well: [https://docs.datastax.com/en/cql-oss/3.3/cql/cql_using/useQueryIN.html]



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org