You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Sylvain Lebresne (JIRA)" <ji...@apache.org> on 2014/05/06 15:21:15 UTC
[jira] [Updated] (CASSANDRA-6950) Secondary index query fails with
tc range query when ordered by DESC
[ https://issues.apache.org/jira/browse/CASSANDRA-6950?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sylvain Lebresne updated CASSANDRA-6950:
----------------------------------------
Attachment: 6950.txt
The problem is that when the 2ndary code checks if an indexed row satisfies the extra filters (so {{tc>0}} in the example of the description), it does so (in {{ExtendedFilter.isSatisfiedBy}}) using the underlying reverse comparator (so it check if the {{tc}} value is greated than 0 in reverse order, i.e. if {{tc}} is negative basically).
As far as CQL3 goes we could fix it in {{ExtendedFilter.isSatisfiedBy}} by check for ReversedType and ignoring it since the IndexExpression are really refering to the non-reverse order, but I guess that would break thrift. So attaching a patch that just reverse the IndexExpression in the first place in SelectStatement.
> Secondary index query fails with tc range query when ordered by DESC
> --------------------------------------------------------------------
>
> Key: CASSANDRA-6950
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6950
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Environment: RHEL 6.3 virtual guest, apache-cassandra-2.0.6-SNAPSHOT-src.tar.gz from build #284 (also tried with 2.0.5 with CASSANDRA-6666 patch custom-applied with same result).
> Reporter: Andre Campeau
> Assignee: Sylvain Lebresne
> Fix For: 2.0.8
>
> Attachments: 6950.txt
>
>
> create table test4 ( name text, lname text, tc bigint, record text, PRIMARY KEY ((name, lname), tc)) WITH CLUSTERING ORDER BY (tc DESC) AND compaction={'class': 'LeveledCompactionStrategy'};
> create index test4_index ON test4(lname);
> Populate it with some data and non-zero tc values, then try:
> select * from test4 where lname='blah' and tc>0 allow filtering;
> And, (0 rows) returned, even though there are rows which should be found.
> When I create the table using CLUSTERING ORDER BY (tc ASC), the above query works. Rows are correctly returned based on the range check.
> Tried various combinations but with descending order on tc nothing works.
--
This message was sent by Atlassian JIRA
(v6.2#6252)