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

Tyler Hobbs updated CASSANDRA-6950:
-----------------------------------

    Attachment: 6950-pycassa-repro.py

bq. 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.

Actually, I think that would *fix* thrift, because the current behavior could 
be considered wrong.  See the attached script to reproduce the issue, but to 
summarize, if we create an index on two columns:
* indexed: LongType
* indexed2: ReversedType(LongType)

insert data, then run a query equivalent to {{... WHERE indexed = 1 AND 
indexed2 < 4}}, you'll get results where indexed2 > 4.

I have to admit that it's a little confusing as to whether using ReversedType 
on indexed2 should invert the comparison, but I feel like ReversedType should 
only really affect the storage format and not value comparisons.

In any case, it doesn't really make sense to use ReversedType on a column 
validator, so this is unlikely to affect anybody in practice.  So, unless I'm 
missing another Thrift case that this could affect, I would just make your 
suggested fix in {{ExtendedFilter.isSatisfiedBy}}.

> 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-pycassa-repro.py, 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)

Reply via email to