Updated Branches:
  refs/heads/trunk 45b4fd8e9 -> 25f8b6fae

Fix bug in collection code


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/25f8b6fa
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/25f8b6fa
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/25f8b6fa

Branch: refs/heads/trunk
Commit: 25f8b6faebe9e0b9f7ccf3bb18492e9542727612
Parents: 45b4fd8
Author: Sylvain Lebresne <[email protected]>
Authored: Thu Nov 1 10:42:51 2012 +0100
Committer: Sylvain Lebresne <[email protected]>
Committed: Thu Nov 1 10:42:51 2012 +0100

----------------------------------------------------------------------
 .../cassandra/cql3/statements/DeleteStatement.java |   10 +++-------
 .../cql3/statements/ModificationStatement.java     |   11 ++++++-----
 .../cassandra/cql3/statements/UpdateStatement.java |    5 ++---
 3 files changed, 11 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/25f8b6fa/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
index d08ded9..7d543dc 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
@@ -30,10 +30,7 @@ import org.apache.cassandra.db.ConsistencyLevel;
 import org.apache.cassandra.db.ColumnFamily;
 import org.apache.cassandra.db.DeletionInfo;
 import org.apache.cassandra.db.RowMutation;
-import org.apache.cassandra.db.marshal.CollectionType;
-import org.apache.cassandra.db.marshal.CompositeType;
-import org.apache.cassandra.db.marshal.ListType;
-import org.apache.cassandra.db.marshal.MapType;
+import org.apache.cassandra.db.marshal.*;
 import org.apache.cassandra.exceptions.*;
 import org.apache.cassandra.thrift.ThriftValidation;
 import org.apache.cassandra.utils.Pair;
@@ -85,7 +82,7 @@ public class DeleteStatement extends ModificationStatement
             throw new InvalidRequestException(String.format("Missing mandatory 
PRIMARY KEY part %s since %s specified", firstEmpty, 
toRemove.iterator().next().left));
 
         // Lists DISCARD operation incurs a read. Do that now.
-        List<ByteBuffer> toRead = null;
+        Set<ByteBuffer> toRead = null;
         for (Pair<CFDefinition.Name, Term> p : toRemove)
         {
             CFDefinition.Name name = p.left;
@@ -94,9 +91,8 @@ public class DeleteStatement extends ModificationStatement
             if ((name.type instanceof ListType) && value != null)
             {
                 if (toRead == null)
-                    toRead = new ArrayList<ByteBuffer>();
+                    toRead = new TreeSet<ByteBuffer>(UTF8Type.instance);
                 toRead.add(name.name.key);
-                break;
             }
         }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25f8b6fa/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
index ea50ea7..a9ddb14 100644
--- a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
@@ -141,7 +141,7 @@ public abstract class ModificationStatement extends 
CFStatement implements CQLSt
         return timeToLive;
     }
 
-    protected Map<ByteBuffer, ColumnGroupMap> readRows(List<ByteBuffer> keys, 
ColumnNameBuilder builder, List<ByteBuffer> toRead, CompositeType composite, 
boolean local, ConsistencyLevel cl)
+    protected Map<ByteBuffer, ColumnGroupMap> readRows(List<ByteBuffer> keys, 
ColumnNameBuilder builder, Set<ByteBuffer> toRead, CompositeType composite, 
boolean local, ConsistencyLevel cl)
     throws RequestExecutionException, RequestValidationException
     {
         try
@@ -154,11 +154,12 @@ public abstract class ModificationStatement extends 
CFStatement implements CQLSt
         }
 
         ColumnSlice[] slices = new ColumnSlice[toRead.size()];
-        for (int i = 0; i < toRead.size(); i++)
+        int i = 0;
+        for (ByteBuffer name : toRead)
         {
-            ByteBuffer start = builder.copy().add(toRead.get(i)).build();
-            ByteBuffer finish = 
builder.copy().add(toRead.get(i)).buildAsEndOfRange();
-            slices[i] = new ColumnSlice(start, finish);
+            ByteBuffer start = builder.copy().add(name).build();
+            ByteBuffer finish = builder.copy().add(name).buildAsEndOfRange();
+            slices[i++] = new ColumnSlice(start, finish);
         }
 
         List<ReadCommand> commands = new ArrayList<ReadCommand>(keys.size());

http://git-wip-us.apache.org/repos/asf/cassandra/blob/25f8b6fa/src/java/org/apache/cassandra/cql3/statements/UpdateStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/UpdateStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/UpdateStatement.java
index 6fbf444..915e8ed 100644
--- a/src/java/org/apache/cassandra/cql3/statements/UpdateStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/UpdateStatement.java
@@ -113,7 +113,7 @@ public class UpdateStatement extends ModificationStatement
         buildColumnNames(cfDef, processedKeys, builder, variables, true);
 
         // Lists SET operation incurs a read.
-        List<ByteBuffer> toRead = null;
+        Set<ByteBuffer> toRead = null;
         for (Map.Entry<CFDefinition.Name, Operation> entry : 
processedColumns.entries())
         {
             CFDefinition.Name name = entry.getKey();
@@ -125,9 +125,8 @@ public class UpdateStatement extends ModificationStatement
             if (value.requiresRead())
             {
                 if (toRead == null)
-                    toRead = new ArrayList<ByteBuffer>();
+                    toRead = new TreeSet<ByteBuffer>(UTF8Type.instance);
                 toRead.add(name.name.key);
-                break;
             }
         }
 

Reply via email to