cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Petrov (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-11182) Enable SASI index for collections
Date Wed, 08 Jun 2016 21:15:21 GMT


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

View raw message