Author: jbellis
Date: Fri Dec 17 15:34:01 2010
New Revision: 1050426

URL: http://svn.apache.org/viewvc?rev=1050426&view=rev
Log:
return InvalidRequest when remove ofsubcolumn without supercolumn is requested
patch by thobbs; reviewed by jbellis for CASSANDRA-1866

Modified:
    cassandra/branches/cassandra-0.7/CHANGES.txt
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java
    cassandra/branches/cassandra-0.7/test/system/test_thrift_server.py

Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1050426&r1=1050425&r2=1050426&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Fri Dec 17 15:34:01 2010
@@ -14,6 +14,8 @@ dev
  * deleted columns resurrected after a flush on slice read path 
    (CASSANDRA-1837)
  * ReadResponseResolver check digests against each other (CASSANDRA-1830)
+ * return InvalidRequest when remove of subcolumn without supercolumn
+   is requested (CASSANDRA-1866)
 
 
 0.7.0-rc2

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1050426&r1=1050425&r2=1050426&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/thrift/ThriftValidation.java
 Fri Dec 17 15:34:01 2010
@@ -141,6 +141,13 @@ public class ThriftValidation
                 throw new InvalidRequestException("supercolumn may not be 
specified for standard CF " + column_path_or_parent.column_family);
             }
         }
+        if (cfType == ColumnFamilyType.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.7/test/system/test_thrift_server.py
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/system/test_thrift_server.py?rev=1050426&r1=1050425&r2=1050426&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/test/system/test_thrift_server.py 
(original)
+++ cassandra/branches/cassandra-0.7/test/system/test_thrift_server.py Fri Dec 
17 15:34:01 2010
@@ -779,6 +779,11 @@ class TestMutations(ThriftTester):
                                                                    
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='sc2')
+        e = _expect_exception(lambda: client.remove('key1', cp, 5, 
ConsistencyLevel.ONE), InvalidRequestException)
+        assert e.why.find("column cannot be specified without") >= 0
+
     def test_super_cf_remove_supercolumn(self):
         _set_keyspace('Keyspace1')
         


Reply via email to