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


Reply via email to