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