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

Sylvain Lebresne commented on CASSANDRA-8147:
---------------------------------------------

bq. As a map can only have one value associated to a given key, using such a 
query means that you want to check that the key exists and that the value is 
the one you think it should be.

That's not what the query means, no. Asking for maps that contains a given key 
and a given value does not imply that said given value must be associated to 
said given key.
Besides, even if that was what the query means, the query still make sense. It 
might not be terribly useful, but it make sense, so I'd still not think 
throwing an error would not be very user friendly.

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

Reply via email to