You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Benjamin Lerer (JIRA)" <ji...@apache.org> on 2015/01/28 21:52:34 UTC

[jira] [Commented] (CASSANDRA-8275) Some queries with multicolumn relation do not behave properly when secondary index is used

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

Benjamin Lerer commented on CASSANDRA-8275:
-------------------------------------------

While working on this problem I discovered that there was 2 issues with multicolumn restrictions and secondary indices:
# The first problem was caused by the fact that the code was not retrieving the proper value for the clustering column {{IndexExpression}} when multicolumn restrictions were being used. This problem could be reproduced by the unit test provided in the description
# The second problem was that for the table:
{code}CREATE TABLE test (a int, b int, c int, d int, e int, f int, PRIMARY KEY ((a, b), c, d, e)){code}
the following query:
{code}SELECT * FROM test WHERE a = ? AND (c) IN ((?), (?)) AND f = ? ALLOW FILTERING{code}
was working fine if the clustering column {{c}} was not indexed but was rejected if it was.
The reason was that the code was trying to create an {{IndexExpression}} for the {{c}} column which was not needed.
This problem was also affecting single column restrictions.  

> Some queries with multicolumn relation do not behave properly when secondary index is used
> ------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-8275
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8275
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Benjamin Lerer
>            Assignee: Benjamin Lerer
>             Fix For: 3.0, 2.1.3, 2.0.13
>
>         Attachments: CASSANDRA-8275-2.0.txt, CASSANDRA-8275-2.1.txt, CASSANDRA-8275-trunk.txt
>
>
> In the case where we perform a select using a multicolumn relation over multiple columns that use a secondary index the error message returned is wrong.
> The following unit test can be use to reproduce the problem:
> {code}
>     @Test
>     public void testMultipleClusteringWithIndex() throws Throwable
>     {
>         createTable("CREATE TABLE %s (a int, b int, c int, d int, PRIMARY KEY (a, b, c, d))");
>         createIndex("CREATE INDEX ON %s (b)"); 
>         
>         execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 0, 0, 0);
>         execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 0, 1, 0);
>         execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 0, 1, 1);
>         execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 1, 0, 0);
>         execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 1, 1, 0);
>         execute("INSERT INTO %s (a, b, c, d) VALUES (?, ?, ?, ?)", 0, 1, 1, 1);
>         assertRows(execute("SELECT * FROM %s WHERE (b) = (?)", 1),
>                    row(0, 1, 0, 0),
>                    row(0, 1, 1, 0),
>                    row(0, 1, 1, 1)
>                );
>         
>         assertRows(execute("SELECT * FROM %s WHERE (b, c) = (?, ?) ALLOW FILTERING", 1, 1),
>                    row(0, 1, 1, 0),
>                    row(0, 1, 1, 1)
>                );
>     }
> {code}



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