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 2012/08/18 06:49:49 UTC
git commit: make de/serializers agree to use a short length for index
expression value patch by jbellis; reviewed by David Alves for CASSANDRA-4555
Updated Branches:
refs/heads/trunk b25b12a0a -> 9d2b26dac
make de/serializers agree to use a short length for index expression value
patch by jbellis; reviewed by David Alves for CASSANDRA-4555
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9d2b26da
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9d2b26da
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9d2b26da
Branch: refs/heads/trunk
Commit: 9d2b26dac6115c2b6226c3aaebf5bae5cd381e44
Parents: b25b12a
Author: Jonathan Ellis <jb...@apache.org>
Authored: Fri Aug 17 23:49:25 2012 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Fri Aug 17 23:49:37 2012 -0500
----------------------------------------------------------------------
.../cassandra/cql3/statements/SelectStatement.java | 4 ++++
.../org/apache/cassandra/db/RangeSliceCommand.java | 2 +-
.../apache/cassandra/thrift/ThriftValidation.java | 3 +++
3 files changed, 8 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d2b26da/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 37dd205..adc8b34 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -528,6 +528,8 @@ public class SelectStatement implements CQLStatement
for (Term t : restriction.eqValues)
{
ByteBuffer value = t.getByteBuffer(name.type, variables);
+ if (value.remaining() > 0xFFFF)
+ throw new InvalidRequestException("Index expression values may not be larger than 64K");
expressions.add(new IndexExpression(name.name.key, IndexOperator.EQ, value));
}
}
@@ -538,6 +540,8 @@ public class SelectStatement implements CQLStatement
if (restriction.bound(b) != null)
{
ByteBuffer value = restriction.bound(b).getByteBuffer(name.type, variables);
+ if (value.remaining() > 0xFFFF)
+ throw new InvalidRequestException("Index expression values may not be larger than 64K");
expressions.add(new IndexExpression(name.name.key, restriction.getIndexOperator(b), value));
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d2b26da/src/java/org/apache/cassandra/db/RangeSliceCommand.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/RangeSliceCommand.java b/src/java/org/apache/cassandra/db/RangeSliceCommand.java
index 5511127..6632f39 100644
--- a/src/java/org/apache/cassandra/db/RangeSliceCommand.java
+++ b/src/java/org/apache/cassandra/db/RangeSliceCommand.java
@@ -233,7 +233,7 @@ class RangeSliceCommandSerializer implements IVersionedSerializer<RangeSliceComm
{
ByteBufferUtil.writeWithShortLength(expr.column_name, dos);
dos.writeInt(expr.op.getValue());
- ByteBufferUtil.writeWithLength(expr.value, dos);
+ ByteBufferUtil.writeWithShortLength(expr.value, dos);
}
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9d2b26da/src/java/org/apache/cassandra/thrift/ThriftValidation.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/thrift/ThriftValidation.java b/src/java/org/apache/cassandra/thrift/ThriftValidation.java
index 0b16eef..cf42f9e 100644
--- a/src/java/org/apache/cassandra/thrift/ThriftValidation.java
+++ b/src/java/org/apache/cassandra/thrift/ThriftValidation.java
@@ -555,6 +555,9 @@ public class ThriftValidation
me.getMessage()));
}
+ if (expression.value.remaining() > 0xFFFF)
+ throw new InvalidRequestException("Index expression values may not be larger than 64K");
+
AbstractType<?> valueValidator = Schema.instance.getValueValidator(metadata.ksName, metadata.cfName, expression.column_name);
try
{