Author: slebresne
Date: Fri Apr 29 16:48:40 2011
New Revision: 1097883
URL: http://svn.apache.org/viewvc?rev=1097883&view=rev
Log:
Merge CASSANDRA-2571 from 0.7
Modified:
cassandra/branches/cassandra-0.8/ (props changed)
cassandra/branches/cassandra-0.8/contrib/ (props changed)
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
(props changed)
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
(props changed)
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
(props changed)
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
(props changed)
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
(props changed)
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java
cassandra/branches/cassandra-0.8/test/system/__init__.py
cassandra/branches/cassandra-0.8/test/system/test_thrift_server.py
Propchange: cassandra/branches/cassandra-0.8/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Apr 29 16:48:40 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7:1026516-1096531,1096805,1097448,1097455,1097668,1097843
+/cassandra/branches/cassandra-0.7:1026516-1096531,1096805,1097448,1097455,1097668,1097843,1097852
/cassandra/branches/cassandra-0.7.0:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
/cassandra/trunk:1090978-1090979
Propchange: cassandra/branches/cassandra-0.8/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Apr 29 16:48:40 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
-/cassandra/branches/cassandra-0.7/contrib:1026516-1096531,1096805,1097448,1097455,1097668,1097843
+/cassandra/branches/cassandra-0.7/contrib:1026516-1096531,1096805,1097448,1097455,1097668,1097843,1097852
/cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
/cassandra/trunk/contrib:1090978-1090979
Propchange:
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Apr 29 16:48:40 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843,1097852
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090978-1090979
Propchange:
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Apr 29 16:48:40 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843,1097852
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090978-1090979
Propchange:
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Apr 29 16:48:40 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843,1097852
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090978-1090979
Propchange:
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Apr 29 16:48:40 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843,1097852
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090978-1090979
Propchange:
cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Apr 29 16:48:40 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1096531,1096805,1097448,1097455,1097668,1097843,1097852
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090978-1090979
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=1097883&r1=1097882&r2=1097883&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/CassandraServer.java
Fri Apr 29 16:48:40 2011
@@ -412,6 +412,13 @@ public class CassandraServer implements
state().hasColumnFamilyAccess(column_parent.column_family,
Permission.WRITE);
CFMetaData metadata =
ThriftValidation.validateColumnFamily(state().getKeyspace(),
column_parent.column_family, false);
+ ThriftValidation.validateKey(metadata, key);
+ ThriftValidation.validateColumnParent(metadata, column_parent);
+ // SuperColumn field is usually optional, but not when we're inserting
+ if (metadata.cfType == ColumnFamilyType.Super &&
column_parent.super_column == null)
+ {
+ throw new InvalidRequestException("missing mandatory super column
name for super CF " + column_parent.column_family);
+ }
ThriftValidation.validateColumnNames(metadata, column_parent,
Arrays.asList(column.name));
ThriftValidation.validateColumnData(metadata, column);
@@ -1043,6 +1050,11 @@ public class CassandraServer implements
ThriftValidation.validateKey(metadata, key);
ThriftValidation.validateCommutativeForWrite(metadata,
consistency_level);
ThriftValidation.validateColumnParent(metadata, column_parent);
+ // SuperColumn field is usually optional, but not when we're adding
+ if (metadata.cfType == ColumnFamilyType.Super &&
column_parent.super_column == null)
+ {
+ throw new InvalidRequestException("missing mandatory super column
name for super CF " + column_parent.column_family);
+ }
ThriftValidation.validateColumnNames(metadata, column_parent,
Arrays.asList(column.name));
RowMutation rm = new RowMutation(keyspace, key);
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1097883&r1=1097882&r2=1097883&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/thrift/ThriftValidation.java
Fri Apr 29 16:48:40 2011
@@ -150,6 +150,7 @@ public class ThriftValidation
throw new InvalidRequestException("columnfamily alone is
required for standard CF " + metadata.cfName);
}
}
+
if (column_parent.super_column != null)
{
validateColumnNames(metadata, (ByteBuffer)null,
Arrays.asList(column_parent.super_column));
@@ -337,6 +338,10 @@ public class ThriftValidation
public static void validateDeletion(CFMetaData metadata, Deletion del)
throws InvalidRequestException
{
+
+ if (del.super_column != null)
+ validateColumnNames(metadata, (ByteBuffer)null,
Arrays.asList(del.super_column));
+
if (del.predicate != null)
{
validateSlicePredicate(metadata, del.super_column, del.predicate);
Modified: cassandra/branches/cassandra-0.8/test/system/__init__.py
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/system/__init__.py?rev=1097883&r1=1097882&r2=1097883&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/test/system/__init__.py (original)
+++ cassandra/branches/cassandra-0.8/test/system/__init__.py Fri Apr 29
16:48:40 2011
@@ -159,6 +159,7 @@ class ThriftTester(BaseTester):
Cassandra.CfDef('Keyspace1', 'Super2', column_type='Super',
subcomparator_type='LongType'),
Cassandra.CfDef('Keyspace1', 'Super3', column_type='Super',
subcomparator_type='LongType'),
Cassandra.CfDef('Keyspace1', 'Super4', column_type='Super',
subcomparator_type='UTF8Type'),
+ Cassandra.CfDef('Keyspace1', 'Super5', column_type='Super',
comparator_type='LongType', subcomparator_type='UTF8Type'),
Cassandra.CfDef('Keyspace1', 'Counter1',
default_validation_class='CounterColumnType'),
Cassandra.CfDef('Keyspace1', 'SuperCounter1', column_type='Super',
default_validation_class='CounterColumnType'),
Cassandra.CfDef('Keyspace1', 'Indexed1',
column_metadata=[Cassandra.ColumnDef('birthdate', 'LongType',
Cassandra.IndexType.KEYS, 'birthdate_index')]),
Modified: cassandra/branches/cassandra-0.8/test/system/test_thrift_server.py
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/system/test_thrift_server.py?rev=1097883&r1=1097882&r2=1097883&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/test/system/test_thrift_server.py
(original)
+++ cassandra/branches/cassandra-0.8/test/system/test_thrift_server.py Fri Apr
29 16:48:40 2011
@@ -666,6 +666,12 @@ class TestMutations(ThriftTester):
_expect_exception(lambda: client.insert(None, None, None, None),
TApplicationException)
# supercolumn in a non-super CF
_expect_exception(lambda: client.insert('key1',
ColumnParent('Standard1', 'x'), Column('y', 'value', 0), ConsistencyLevel.ONE),
InvalidRequestException)
+ # no supercolumn in a super CF
+ _expect_exception(lambda: client.insert('key1',
ColumnParent('Super1'), Column('y', 'value', 0), ConsistencyLevel.ONE),
InvalidRequestException)
+ # column but no supercolumn in remove
+ _expect_exception(lambda: client.remove('key1', ColumnPath('Super1',
column='x'), 0, ConsistencyLevel.ONE), InvalidRequestException)
+ # super column in non-super CF
+ _expect_exception(lambda: client.remove('key1',
ColumnPath('Standard1', 'y', 'x'), 0, ConsistencyLevel.ONE),
InvalidRequestException)
# key too long
_expect_exception(lambda: client.get('x' * 2**16,
ColumnPath('Standard1', column='c1'), ConsistencyLevel.ONE),
InvalidRequestException)
# empty key
@@ -717,6 +723,11 @@ class TestMutations(ThriftTester):
mutations = {'key' : {'Standard1' : [mutation]}}
_expect_exception(lambda: client.batch_mutate(mutations,
ConsistencyLevel.QUORUM),
InvalidRequestException)
+ # 'x' is not a valid long
+ deletion = Deletion(1, 'x', None)
+ mutation = Mutation(deletion=deletion)
+ mutations = {'key' : {'Super5' : [mutation]}}
+ _expect_exception(lambda: client.batch_mutate(mutations,
ConsistencyLevel.QUORUM), InvalidRequestException)
def test_batch_insert_super(self):
_set_keyspace('Keyspace1')