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