[ 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:43 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. agreed, using "ALLOW FILTERING" isn't exactly testing the index, but the at least it's testing that the index doesn't do that query and the results that will be returned otherwise. nonetheless, i've updated the tests to verify when the index will work (and won't). 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. 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. agreed, using "ALLOW FILTERING" isn't exactly testing the index, but the at least it's testing that the index doesn't do that query and the results that will be returned otherwise. nonetheless, i've updated the tests to verify when the index will work. > 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