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