You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2012/11/01 10:42:58 UTC
git commit: Fix bug in collection code
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 <sy...@datastax.com>
Authored: Thu Nov 1 10:42:51 2012 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
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;
}
}