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

Michael Semb Wever edited comment on CASSANDRA-15169 at 10/15/19 5:26 PM:
--------------------------------------------------------------------------

[~mazhenlin], if you look through the docs at 
https://github.com/apache/cassandra/blob/trunk/doc/SASI.md you see a few 
different use-cases.

I've updated the unit tests to go through more of these use-cases.

bq. there are many restrictions in the code for not applying RANGE on literal 
indexes(e.g. ColumnIndex.supports)…

thanks for pointing that out. i'm still getting my head around that. in the 
meantime we can figure out where {{forceFlush}} results in different behaviour, 
as that's the obvious breakages to deal with…


was (Author: michaelsembwever):
[~mazhenlin], if you look through the docs at 
https://github.com/apache/cassandra/blob/trunk/doc/SASI.md you see a few 
different use-cases.

It looks like we have broken the "equals queries perform prefix searches" on 
non-literal NORMAL indexes. See the "Equality & Prefix Queries" section.

I've update the unit tests to go through more of these use-cases.

bq. there are many restrictions in the code for not applying RANGE on literal 
indexes(e.g. ColumnIndex.supports)…

thanks for pointing that out. i'm still getting my head around that. in the 
meantime we can figure out where {{forceFlush}} results in different behaviour, 
as that's the obvious breakages to deal with…

> SASIIndex does not compare strings correctly
> --------------------------------------------
>
>                 Key: CASSANDRA-15169
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15169
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Feature/SASI
>            Reporter: mazhenlin
>            Assignee: mazhenlin
>            Priority: Normal
>         Attachments: CASSANDRA-15169-v1.patch, CASSANDRA-15169-v2.patch
>
>
> In our scenario, we need to query with '>' conditions on string columns. So I 
> created index with  is_literal = false. like the following:
>  
> {code:java}
> CREATE TABLE test (id int primary key, t text);
> CREATE CUSTOM INDEX ON test (t) USING 
> 'org.apache.cassandra.index.sasi.SASIIndex' WITH OPTIONS = {'is_literal': 
> 'false'};
> {code}
>  I also inserted some records and query:
>  
> {code:java}
> insert into test(id,t) values(1,'abc');
> select * from test where t > 'ab';
> {code}
> At first ,it worked. But after flush, the query returned none record.
> I have read the code of SASIIndex and found that it is because in the 
> {code:java}
> Expression.isLowerSatisfiedBy{code}
> function,
> {code:java}
> term.compareTo{code}
> was called with parameter checkFully=false, which cause the string 'abc' was 
> only compared with its first 2 characters( length of expression value).
>  
> I have wrote a UT for this case and fixed it.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to