You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/08/08 22:50:34 UTC
git commit: Correctly validate sparse composite cells patch by Tyler
Hobbs; reviewed by jbellis for CASSANDRA-5855
Updated Branches:
refs/heads/cassandra-1.1 238139cda -> eb884a582
Correctly validate sparse composite cells
patch by Tyler Hobbs; reviewed by jbellis for CASSANDRA-5855
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/eb884a58
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/eb884a58
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/eb884a58
Branch: refs/heads/cassandra-1.1
Commit: eb884a582b709d67fdd075aedf19facf6803bf93
Parents: 238139c
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Aug 8 15:33:39 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Aug 8 15:43:43 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/Column.java | 19 ++++++++++++++++++-
2 files changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb884a58/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 75b349f..8790518 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,6 @@
1.1.next
* Backport compaction exception handling from 1.2
+ * Correctly validate sparse composite cells in scrub (CASSANDRA-5855)
1.1.12
http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb884a58/src/java/org/apache/cassandra/db/Column.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Column.java b/src/java/org/apache/cassandra/db/Column.java
index 97aece0..ea83146 100644
--- a/src/java/org/apache/cassandra/db/Column.java
+++ b/src/java/org/apache/cassandra/db/Column.java
@@ -29,6 +29,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.config.CFMetaData;
+import org.apache.cassandra.cql3.CFDefinition;
import org.apache.cassandra.db.marshal.*;
import org.apache.cassandra.io.util.DataOutputBuffer;
import org.apache.cassandra.utils.Allocator;
@@ -277,7 +278,23 @@ public class Column implements IColumn
public void validateFields(CFMetaData metadata) throws MarshalException
{
validateName(metadata);
- AbstractType<?> valueValidator = metadata.getValueValidator(name());
+ CFDefinition cfdef = metadata.getCfDef();
+
+ // If this is a CQL table, we need to pull out the CQL column name to look up the correct column type.
+ // (Note that COMPACT composites are handled by validateName, above.)
+ ByteBuffer internalName;
+ if (cfdef.isComposite && !cfdef.isCompact)
+ {
+ AbstractCompositeType comparator = (AbstractCompositeType) metadata.comparator;
+ List<AbstractCompositeType.CompositeComponent> components = comparator.deconstruct(name);
+ internalName = components.get(components.size() - 1).value;
+ }
+ else
+ {
+ internalName = name;
+ }
+
+ AbstractType<?> valueValidator = metadata.getValueValidator(internalName);
if (valueValidator != null)
valueValidator.validate(value());
}