Validate keys from CQL mutations.
Patch by paul cannon, reviewed by xedin for CASSANDRA-3612


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

Branch: refs/heads/cassandra-1.1
Commit: 281af5e4f7e37cc82a8f37ce56bd7754ec38306b
Parents: 270d016
Author: Brandon Williams <[email protected]>
Authored: Wed Mar 28 11:54:17 2012 -0500
Committer: Brandon Williams <[email protected]>
Committed: Wed Mar 28 11:54:17 2012 -0500

----------------------------------------------------------------------
 .../org/apache/cassandra/cql/QueryProcessor.java   |   22 +++++++++++++--
 1 files changed, 19 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/281af5e4/src/java/org/apache/cassandra/cql/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql/QueryProcessor.java 
b/src/java/org/apache/cassandra/cql/QueryProcessor.java
index 3008d99..9900f47 100644
--- a/src/java/org/apache/cassandra/cql/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql/QueryProcessor.java
@@ -283,7 +283,12 @@ public class QueryProcessor
 
             rowMutations.addAll(update.prepareRowMutations(keyspace, 
clientState));
         }
-        
+
+        for (IMutation mutation : rowMutations)
+        {
+            validateKey(mutation.key());
+        }
+
         try
         {
             StorageProxy.mutate(rowMutations, consistency);
@@ -692,9 +697,15 @@ public class QueryProcessor
                                 "Timestamp must be set either on BATCH or 
individual statements");
                 }
 
+                List<IMutation> mutations = batch.getMutations(keyspace, 
clientState);
+                for (IMutation mutation : mutations)
+                {
+                    validateKey(mutation.key());
+                }
+
                 try
                 {
-                    StorageProxy.mutate(batch.getMutations(keyspace, 
clientState), batch.getConsistencyLevel());
+                    StorageProxy.mutate(mutations, 
batch.getConsistencyLevel());
                 }
                 catch (org.apache.cassandra.thrift.UnavailableException e)
                 {
@@ -741,10 +752,15 @@ public class QueryProcessor
                 DeleteStatement delete = (DeleteStatement)statement.statement;
 
                 keyspace = delete.keyspace == null ? clientState.getKeyspace() 
: delete.keyspace;
+                List<IMutation> deletions = 
delete.prepareRowMutations(keyspace, clientState);
+                for (IMutation deletion : deletions)
+                {
+                    validateKey(deletion.key());
+                }
 
                 try
                 {
-                    StorageProxy.mutate(delete.prepareRowMutations(keyspace, 
clientState), delete.getConsistencyLevel());
+                    StorageProxy.mutate(deletions, 
delete.getConsistencyLevel());
                 }
                 catch (TimeoutException e)
                 {

Reply via email to