Updated Branches: refs/heads/trunk 41175282d -> d564a2f02
Don't share slice query filter in SelectStatement patch by slebresne; reviewed by jbellis for CASSANDRA-4928 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d564a2f0 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d564a2f0 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d564a2f0 Branch: refs/heads/trunk Commit: d564a2f02bcbfd850b51e9eea5297b79a4bd369c Parents: 4117528 Author: Sylvain Lebresne <[email protected]> Authored: Wed Nov 7 19:32:38 2012 +0100 Committer: Sylvain Lebresne <[email protected]> Committed: Wed Nov 7 19:32:38 2012 +0100 ---------------------------------------------------------------------- CHANGES.txt | 3 +++ .../cassandra/cql3/statements/SelectStatement.java | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d564a2f0/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index a84b3b0..1544a7a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,6 @@ +1.2-rc1 + * Don't share slice query filter in CQL3 SelectStatement (CASSANDRA-4928) + 1.2-beta2 * fp rate of 1.0 disables BF entirely; LCS defaults to 1.0 (CASSANDRA-4876) * off-heap bloom filters for row keys (CASSANDRA_4865) http://git-wip-us.apache.org/repos/asf/cassandra/blob/d564a2f0/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java index 945d2e8..44188de 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java @@ -202,7 +202,6 @@ public class SelectStatement implements CQLStatement Collection<ByteBuffer> keys = getKeys(variables); List<ReadCommand> commands = new ArrayList<ReadCommand>(keys.size()); - IDiskAtomFilter filter = makeFilter(variables); // ...a range (slice) of column names if (isColumnRange()) { @@ -212,12 +211,17 @@ public class SelectStatement implements CQLStatement for (ByteBuffer key : keys) { QueryProcessor.validateKey(key); - commands.add(new SliceFromReadCommand(keyspace(), key, queryPath, (SliceQueryFilter)filter)); + // Note that we should not share the slice filter amongst the command, due to SliceQueryFilter not + // being immutable due to its columnCounter used by the lastCounted() method + // (this is fairly ugly and we should change that but that's probably not a tiny refactor to do that cleanly) + commands.add(new SliceFromReadCommand(keyspace(), key, queryPath, (SliceQueryFilter)makeFilter(variables))); } } // ...of a list of column names else { + // ByNames commands can share the filter + IDiskAtomFilter filter = makeFilter(variables); for (ByteBuffer key: keys) { QueryProcessor.validateKey(key);
