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);

Reply via email to