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

Alex Petrov commented on CASSANDRA-11182:
-----------------------------------------

I've looked at how it could possibly implemented. `CONTAINS` itself is fairly 
simple as it has similar semantics to `EQ`. I've implemented a rough prototype 
that would index and flush collections, which was touching a lot of SASI but 
it's mostly adding the {{target}} everywhere it's not currently passed and 
moving away from reading the value from {{Cell#value}}, and going picking up 
the right thing depending on the context.

The only possible performance implication is the fact that we still do 
post-filtering. Since the index is storing the partition key position, we check 
if the row from the row cluster satisfies all conditions with 
{{Operation#localSatisfiedBy}}. Having to iterate through all the cells in the 
collection might be quite costly. After talking with [~beobal] briefly about 
it, the one possible way to implement it is to add offsets to the concrete 
rows, although that would also mean a larger change.

cc [~xedin] 

> Enable SASI index for collections
> ---------------------------------
>
>                 Key: CASSANDRA-11182
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11182
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: CQL
>            Reporter: DOAN DuyHai
>            Assignee: Alex Petrov
>            Priority: Minor
>
> This is a follow up ticket for post Cassandra 3.4 SASI integration.
> Right now it is possible with standard Cassandra 2nd index to:
> 1. index list and set elements ( {{WHERE list CONTAINS xxx}})
> 2. index map keys ( {{WHERE map CONTAINS KEYS 'abc'}} )
> 3. index map entries ( {{WHERE map\['key'\]=value}})
>  It would be nice to enable these features in SASI too.
>  With regard to tokenizing, we might want to allow wildcards ({{%}}) with the 
> CONTAINS syntax as well as with index map entries. Ex:
> * {{WHERE list CONTAINS 'John%'}}
> * {{WHERE map CONTAINS KEY '%an%'}}
> * {{WHERE map\['key'\] LIKE '%val%'}}
> /cc [~xedin] [~rustyrazorblade] [~jkrupan]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to