[jira] [Updated] (CASSANDRA-13666) Secondary index query on partition key columns might not return partitions with only static data
[ 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: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[jira] [Updated] (CASSANDRA-13666) Secondary index query on partition key columns might not return partitions with only static data
[ https://issues.apache.org/jira/browse/CASSANDRA-13666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Lerer updated CASSANDRA-13666: --- Fix Version/s: 4.0 3.11.7 3.0.21 Since Version: 3.0.0 Source Control Link: https://github.com/apache/cassandra/commit/86e1590042116b35a63a705676ecdffd5dfcde6c Resolution: Fixed Status: Resolved (was: Ready to Commit) Committed into 3.0 at 86e1590042116b35a63a705676ecdffd5dfcde6c and merged into 3.11 and trunk > 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 > > Time Spent: 1h 20m > 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: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[jira] [Updated] (CASSANDRA-13666) Secondary index query on partition key columns might not return partitions with only static data
[ https://issues.apache.org/jira/browse/CASSANDRA-13666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Lerer updated CASSANDRA-13666: --- Status: Ready to Commit (was: Review In Progress) > 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 > Time Spent: 1h 20m > 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: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[jira] [Updated] (CASSANDRA-13666) Secondary index query on partition key columns might not return partitions with only static data
[ https://issues.apache.org/jira/browse/CASSANDRA-13666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Lerer updated CASSANDRA-13666: --- Reviewers: Benjamin Lerer, Benjamin Lerer (was: Benjamin Lerer) Benjamin Lerer, Benjamin Lerer (was: Benjamin Lerer) Status: Review In Progress (was: Patch Available) > 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 > Time Spent: 1h 20m > 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: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[jira] [Updated] (CASSANDRA-13666) Secondary index query on partition key columns might not return partitions with only static data
[ https://issues.apache.org/jira/browse/CASSANDRA-13666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Berenguer Blasi updated CASSANDRA-13666: Test and Documentation Plan: Attched to PRs Status: Patch Available (was: In Progress) > 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 > Time Spent: 0.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: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[jira] [Updated] (CASSANDRA-13666) Secondary index query on partition key columns might not return partitions with only static data
[ https://issues.apache.org/jira/browse/CASSANDRA-13666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Joshua McKenzie updated CASSANDRA-13666: Component/s: Secondary Indexes > 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: Secondary Indexes >Reporter: Benjamin Lerer >Assignee: Sam Tunnicliffe > > 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-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[jira] [Updated] (CASSANDRA-13666) Secondary index query on partition key columns might not return partitions with only static data
[ https://issues.apache.org/jira/browse/CASSANDRA-13666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Lerer updated CASSANDRA-13666: --- Reviewer: Benjamin Lerer > 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: Sam Tunnicliffe > > 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-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org