mazhenlin created CASSANDRA-15169:
-------------------------------------

             Summary: 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


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
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to