cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Hobbs (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-8147) Secondary indexing of map keys does not work properly when mixing contains and contains_key
Date Tue, 28 Oct 2014 16:25:35 GMT

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

Tyler Hobbs commented on CASSANDRA-8147:
----------------------------------------

Overall this looks good.

The only remaining use of {{Relation.allowsIndexQueryOn()}} is in {{SelectStatement.processRelationEntity()}}.
 We could remove {{allowsIndexQueryOn()}} (and {{CollectionType.isMap()}}) by doing something
like this in {{processRelationEntity()}}:

{code}
SecondaryIndex index = indexManager.getIndexForColumn(def.name.bytes);
if (index != null && index.supportsOperator(relation.operator()))
    return new boolean[]{true, def.kind == ColumnDefinition.Kind.CLUSTERING_COLUMN};
{code}

(It looks like we need to be able to convert {{Relation.Type}} enum values to {{IndexExpression.Operator}}
enum values, though.)

> Secondary indexing of map keys does not work properly when mixing contains and contains_key
> -------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-8147
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8147
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Benjamin Lerer
>            Assignee: Benjamin Lerer
>            Priority: Minor
>         Attachments: CASSANDRA-8147-V2.txt, CASSANDRA-8147.txt
>
>
> If you have a table with a map column and an index on the map key selecting data using
a contains key and a contains will not return the expected data.
> The problem can be reproduced using the following unit test:
> {code}
>     @Test
>     public void testMapKeyContainsAndValueContains() throws Throwable
>     {
>         createTable("CREATE TABLE %s (account text, id int, categories map<text,text>,
PRIMARY KEY (account, id))");
>         createIndex("CREATE INDEX ON %s(keys(categories))");
>         execute("INSERT INTO %s (account, id , categories) VALUES (?, ?, ?)", "test",
5, map("lmn", "foo"));
>         assertRows(execute("SELECT * FROM %s WHERE account = ? AND id = ? AND categories
CONTAINS KEY ? AND categories CONTAINS ? ALLOW FILTERING", "test", 5, "lmn", "foo"), row("test",
5, map("lmn", "foo")));  
>     }
> {code}



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

Mime
View raw message