cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benjamin Lerer (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CASSANDRA-8147) Secondary indexing of map keys does not work properly when mixing contains and contains_key
Date Wed, 22 Oct 2014 09:21:34 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-8147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Benjamin Lerer updated CASSANDRA-8147:
--------------------------------------
    Attachment: CASSANDRA-8147.txt

The problem was cause by the fact that the IndexSearcher was trying to use the key index to
search for the contains value.
This patch fix this problem and also fix the SelectStatement check for the indexed column
(if we do a select contains on a map were only the key is indexed we should reject the query).
The patch also replace the index option Strings with constants to avoid typos issues.

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