Author: jbellis
Date: Sun Dec 19 03:38:41 2010
New Revision: 1050753

URL: http://svn.apache.org/viewvc?rev=1050753&view=rev
Log:
backport CASSANDRA-1866 from 0.7

Modified:
    
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/ThriftValidation.java
    cassandra/branches/cassandra-0.6/test/system/test_server.py

Modified: 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1050753&r1=1050752&r2=1050753&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/ThriftValidation.java
 (original)
+++ 
cassandra/branches/cassandra-0.6/src/java/org/apache/cassandra/thrift/ThriftValidation.java
 Sun Dec 19 03:38:41 2010
@@ -133,6 +133,13 @@ public class ThriftValidation
                 throw new InvalidRequestException("supercolumn may not be 
specified for standard CF " + column_path_or_parent.column_family);
             }
         }
+        if (cfType.equals("Super"))
+        {
+            if (column_path_or_parent.super_column == null && 
column_path_or_parent.column != null)
+            {
+                throw new InvalidRequestException("A column cannot be 
specified without specifying a super column for removal on super CF " + 
column_path_or_parent.column_family);
+            }
+        }
         if (column_path_or_parent.column != null)
         {
             validateColumns(tablename, column_path_or_parent.column_family, 
column_path_or_parent.super_column, 
Arrays.asList(column_path_or_parent.column));

Modified: cassandra/branches/cassandra-0.6/test/system/test_server.py
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.6/test/system/test_server.py?rev=1050753&r1=1050752&r2=1050753&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.6/test/system/test_server.py (original)
+++ cassandra/branches/cassandra-0.6/test/system/test_server.py Sun Dec 19 
03:38:41 2010
@@ -163,8 +163,8 @@ def _verify_super(supercf='Super1', key=
 def _expect_exception(fn, type_):
     try:
         r = fn()
-    except type_:
-        pass
+    except type_, e:
+        return e
     else:
         raise Exception('expected %s; got %s' % (type_.__name__, r))
     
@@ -712,6 +712,11 @@ class TestMutations(CassandraTester):
                                                                    
Column(_i64(7), 'value7', 0)])]
         assert super_columns == super_columns_expected, super_columns
 
+        # shouldn't be able to specify a column w/o a super column for remove
+        cp = ColumnPath(column_family='Super1', column=_i64(6))
+        e = _expect_exception(lambda: client.remove('Keyspace1', 'key1', cp, 
5, ConsistencyLevel.ONE), InvalidRequestException)
+        assert e.why.find("column cannot be specified without") >= 0
+
     def test_super_cf_remove_supercolumn(self):
         _insert_simple()
         _insert_super()


Reply via email to