[
https://issues.apache.org/jira/browse/CASSANDRA-13666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Semb Wever updated CASSANDRA-13666:
-------------------------------------------
Fix Version/s: 4.0-beta1
> 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
> Components: Feature/2i Index
> Reporter: Benjamin Lerer
> Assignee: Berenguer Blasi
> Priority: Normal
> Fix For: 3.0.21, 3.11.7, 4.0, 4.0-beta1
>
> Time Spent: 1.5h
> Remaining Estimate: 0h
>
> 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
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]