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] [Created] (CASSANDRA-13666) Secondary index query on partition key columns might not return partitions with only static data
Date Tue, 04 Jul 2017 15:08:00 GMT
Benjamin Lerer created CASSANDRA-13666:
------------------------------------------

             Summary: Secondary index query on partition key columns might not return partitions
with only static data
                 Key: CASSANDRA-13666
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13666
             Project: Cassandra
          Issue Type: Bug
            Reporter: Benjamin Lerer
            Assignee: Benjamin Lerer


The problem can be reproduced with the following test in {{3.0}}:
{code}
   @Test
    public void testIndexOnPartitionKeyWithPartitionWithoutRows() throws Throwable
    {
        createTable("CREATE TABLE %s (pk1 int, pk2 int, c int, s int static, v int, PRIMARY
KEY((pk1, pk2), c))");
        createIndex("CREATE INDEX ON %s (pk2)");

        execute("INSERT INTO %s (pk1, pk2, c, s, v) VALUES (?, ?, ?, ?, ?)", 1, 1, 1, 9, 1);
        execute("INSERT INTO %s (pk1, pk2, c, s, v) VALUES (?, ?, ?, ?, ?)", 1, 1, 2, 9, 2);
        execute("INSERT INTO %s (pk1, pk2, c, s, v) VALUES (?, ?, ?, ?, ?)", 3, 1, 1, 9, 1);
        execute("INSERT INTO %s (pk1, pk2, c, s, v) VALUES (?, ?, ?, ?, ?)", 4, 1, 1, 9, 1);
        flush();

        assertRows(execute("SELECT * FROM %s WHERE pk2 = ?", 1),
                   row(1, 1, 1, 9, 1),
                   row(1, 1, 2, 9, 2),
                   row(3, 1, 1, 9, 1),
                   row(4, 1, 1, 9, 1));

        execute("DELETE FROM %s WHERE pk1 = ? AND pk2 = ? AND c = ?", 3, 1, 1);

        assertRows(execute("SELECT * FROM %s WHERE pk2 = ?", 1),
                   row(1, 1, 1, 9, 1),
                   row(1, 1, 2, 9, 2),
                   row(3, 1, null, 9, null),  // This row will not be returned
                   row(4, 1, 1, 9, 1));
    }
{code}

The problem seems to be that the index entries for the static data are inserted with an empty
clustering key. When the first {{SELECT}} is executed those entries are removed by {{CompositesSearcher::filterStaleEntries}}
which consider that those entries are stales. When the second {{SELECT}} is executed the index
ignore the (3, 1) partition as there is not entry for it anymore.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message