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 2014/02/17 09:57:20 UTC
git commit: Properly validate cellname max size in CQL3
Repository: cassandra
Updated Branches:
refs/heads/trunk 110990401 -> 9ea99491e
Properly validate cellname max size in CQL3
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9ea99491
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9ea99491
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9ea99491
Branch: refs/heads/trunk
Commit: 9ea99491e846db82777bfdc740e409b827c07238
Parents: 1109904
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Mon Feb 17 09:57:07 2014 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Mon Feb 17 09:57:18 2014 +0100
----------------------------------------------------------------------
.../org/apache/cassandra/cql3/QueryProcessor.java | 18 +++++++++---------
.../apache/cassandra/cql3/UpdateParameters.java | 12 ++++++------
.../cql3/statements/SelectStatement.java | 2 +-
3 files changed, 16 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9ea99491/src/java/org/apache/cassandra/cql3/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
index 7035f63..f2559e6 100644
--- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
@@ -34,8 +34,7 @@ import org.apache.cassandra.cql3.hooks.*;
import org.apache.cassandra.cql3.statements.*;
import org.apache.cassandra.transport.messages.ResultMessage;
import org.apache.cassandra.db.*;
-import org.apache.cassandra.db.composites.CellName;
-import org.apache.cassandra.db.composites.Composite;
+import org.apache.cassandra.db.composites.*;
import org.apache.cassandra.exceptions.*;
import org.apache.cassandra.service.ClientState;
import org.apache.cassandra.service.QueryState;
@@ -145,24 +144,25 @@ public class QueryProcessor
}
}
- public static void validateCellNames(Iterable<CellName> cellNames) throws InvalidRequestException
+ public static void validateCellNames(Iterable<CellName> cellNames, CellNameType type) throws InvalidRequestException
{
for (CellName name : cellNames)
- validateCellName(name);
+ validateCellName(name, type);
}
- public static void validateCellName(CellName name) throws InvalidRequestException
+ public static void validateCellName(CellName name, CellNameType type) throws InvalidRequestException
{
- validateComposite(name);
+ validateComposite(name, type);
if (name.isEmpty())
throw new InvalidRequestException("Invalid empty value for clustering column of COMPACT TABLE");
}
- public static void validateComposite(Composite name) throws InvalidRequestException
+ public static void validateComposite(Composite name, CType type) throws InvalidRequestException
{
- if (name.dataSize() > Cell.MAX_NAME_LENGTH)
+ long serializedSize = type.serializer().serializedSize(name, TypeSizes.NATIVE);
+ if (serializedSize > Cell.MAX_NAME_LENGTH)
throw new InvalidRequestException(String.format("The sum of all clustering columns is too long (%s > %s)",
- name.dataSize(),
+ serializedSize,
Cell.MAX_NAME_LENGTH));
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9ea99491/src/java/org/apache/cassandra/cql3/UpdateParameters.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/UpdateParameters.java b/src/java/org/apache/cassandra/cql3/UpdateParameters.java
index a3553f4..87ce22e 100644
--- a/src/java/org/apache/cassandra/cql3/UpdateParameters.java
+++ b/src/java/org/apache/cassandra/cql3/UpdateParameters.java
@@ -54,27 +54,27 @@ public class UpdateParameters
public Cell makeColumn(CellName name, ByteBuffer value) throws InvalidRequestException
{
- QueryProcessor.validateCellName(name);
+ QueryProcessor.validateCellName(name, metadata.comparator);
return Cell.create(name, value, timestamp, ttl, metadata);
}
public Cell makeTombstone(CellName name) throws InvalidRequestException
{
- QueryProcessor.validateCellName(name);
+ QueryProcessor.validateCellName(name, metadata.comparator);
return new DeletedCell(name, localDeletionTime, timestamp);
}
public RangeTombstone makeRangeTombstone(ColumnSlice slice) throws InvalidRequestException
{
- QueryProcessor.validateComposite(slice.start);
- QueryProcessor.validateComposite(slice.finish);
+ QueryProcessor.validateComposite(slice.start, metadata.comparator);
+ QueryProcessor.validateComposite(slice.finish, metadata.comparator);
return new RangeTombstone(slice.start, slice.finish, timestamp, localDeletionTime);
}
public RangeTombstone makeTombstoneForOverwrite(ColumnSlice slice) throws InvalidRequestException
{
- QueryProcessor.validateComposite(slice.start);
- QueryProcessor.validateComposite(slice.finish);
+ QueryProcessor.validateComposite(slice.start, metadata.comparator);
+ QueryProcessor.validateComposite(slice.finish, metadata.comparator);
return new RangeTombstone(slice.start, slice.finish, timestamp - 1, localDeletionTime);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9ea99491/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index e2ccda1..5622e40 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -411,7 +411,7 @@ public class SelectStatement implements CQLStatement, MeasurableForPreparedCache
SortedSet<CellName> cellNames = getRequestedColumns(variables);
if (cellNames == null) // in case of IN () for the last column of the key
return null;
- QueryProcessor.validateCellNames(cellNames);
+ QueryProcessor.validateCellNames(cellNames, cfm.comparator);
return new NamesQueryFilter(cellNames, true);
}
}