Author: brandonwilliams Date: Fri Jul 15 17:33:41 2011 New Revision: 1147258
URL: http://svn.apache.org/viewvc?rev=1147258&view=rev Log: Fix column deletion in the cli. Patch by Pavel Yaskevich, reviewed by brandonwilliams for CASSANDRA-2821 Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java?rev=1147258&r1=1147257&r2=1147258&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java (original) +++ cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java Fri Jul 15 17:33:41 2011 @@ -278,20 +278,42 @@ public class CliClient extends CliUserHe sessionState.out.println("Invalid row, super column, or column specification."); return; } - + + Tree columnTree = (columnSpecCnt >= 1) + ? columnFamilySpec.getChild(2) + : null; + + Tree subColumnTree = (columnSpecCnt == 2) + ? columnFamilySpec.getChild(3) + : null; + if (columnSpecCnt == 1) { // table.cf['key']['column'] + assert columnTree != null; + + byte[] columnNameBytes = (columnTree.getType() == CliParser.FUNCTION_CALL) + ? convertValueByFunction(columnTree, null, null).array() + : columnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 0), cfDef); + if (isSuper) - superColumnName = columnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 0), cfDef); + superColumnName = columnNameBytes; else - columnName = columnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 0), cfDef); + columnName = columnNameBytes; } else if (columnSpecCnt == 2) { + assert columnTree != null; + assert subColumnTree != null; + // table.cf['key']['column']['column'] - superColumnName = columnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 0), cfDef); - columnName = subColumnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 1), cfDef); + superColumnName = (columnTree.getType() == CliParser.FUNCTION_CALL) + ? convertValueByFunction(columnTree, null, null).array() + : columnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 0), cfDef); + + columnName = (subColumnTree.getType() == CliParser.FUNCTION_CALL) + ? convertValueByFunction(subColumnTree, null, null).array() + : subColumnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 1), cfDef); } ColumnPath path = new ColumnPath(columnFamily); Modified: cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java?rev=1147258&r1=1147257&r2=1147258&view=diff ============================================================================== --- cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java (original) +++ cassandra/branches/cassandra-0.7/test/unit/org/apache/cassandra/cli/CliTest.java Fri Jul 15 17:33:41 2011 @@ -53,6 +53,8 @@ public class CliTest extends CleanupHelp "get CF1 where world2 = long(15);", "get cF1 where world2 = long(15);", "get Cf1 where world2 = long(15);", + "del CF1[utf8('hello')][utf8('world')];", + "del CF1[hello][world2];", "set CF1['hello'][time_spent_uuid] = timeuuid(a8098c1a-f86e-11da-bd1a-00112444be1e);", "create column family CF2 with comparator=IntegerType;", "set CF2['key'][98349387493847748398334] = 'some text';",