You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2009/12/09 00:33:51 UTC

svn commit: r888628 - /incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java

Author: eevans
Date: Tue Dec  8 23:33:51 2009
New Revision: 888628

URL: http://svn.apache.org/viewvc?rev=888628&view=rev
Log:
super column support for deletes

Patch by eevans; reviewed by jbellis

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=888628&r1=888627&r2=888628&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Tue Dec  8 23:33:51 2009
@@ -26,6 +26,7 @@
 import java.io.UnsupportedEncodingException;
 
 import org.apache.commons.lang.ArrayUtils;
+import org.hamcrest.core.IsSame;
 
 // Cli Client Side Library
 public class CliClient 
@@ -121,7 +122,8 @@
        css_.out.println("set <ksp>.<cf>['<key>']['<super>']['<col>'] = '<value>'        Set a sub column.");
        css_.out.println("del <ksp>.<cf>['<key>']                                           Delete record.");
        css_.out.println("del <ksp>.<cf>['<key>']['<col>']                                  Delete column.");
-       css_.out.println("count <ksp>.<cf>['<key>']                                  Count columns in row.");
+       css_.out.println("del <ksp>.<cf>['<key>']['<super>']['<col>']                   Delete sub column.");
+       css_.out.println("count <ksp>.<cf>['<key>']                               Count columns in record.");
     }
 
     private void cleanupAndExit()
@@ -184,22 +186,49 @@
         String columnFamily = CliCompiler.getColumnFamily(columnFamilySpec);
         int columnSpecCnt = CliCompiler.numColumnSpecifiers(columnFamilySpec);
 
-        // assume simple columnFamily for now
-        String columnName = null;
-        final byte[] name;
-        if (columnSpecCnt == 0)
+        byte[] superColumnName = null;
+        byte[] columnName = null;
+        boolean isSuper;
+        
+        try
         {
-            // table.cf['key']
-            name = null;
+            if (!(getCFMetaData(tableName).containsKey(columnFamily)))
+            {
+                css_.out.println("No such column family: " + columnFamily);
+                return;
+            }
+            
+            isSuper = getCFMetaData(tableName).get(columnFamily).get("Type").equals("Super") ? true : false;
         }
-        else
+        catch (NotFoundException nfe)
+        {
+            css_.out.printf("No such keyspace: %s\n", tableName);
+            return;
+        }
+     
+        if ((columnSpecCnt < 0) || (columnSpecCnt > 2))
+        {
+            css_.out.println("Invalid row, super column, or column specification.");
+            return;
+        }
+        
+        if (columnSpecCnt == 1)
         {
-            assert columnSpecCnt == 1;
             // table.cf['key']['column']
-            columnName = CliCompiler.getColumn(columnFamilySpec, 0);
-            name = columnName.getBytes("UTF-8");
+            if (isSuper)
+                superColumnName = CliCompiler.getColumn(columnFamilySpec, 0).getBytes("UTF-8");
+            else
+                columnName = CliCompiler.getColumn(columnFamilySpec, 0).getBytes("UTF-8");
         }
-        thriftClient_.remove(tableName, key, new ColumnPath(columnFamily, null, name), System.currentTimeMillis(), ConsistencyLevel.ONE);
+        else if (columnSpecCnt == 2)
+        {
+            // table.cf['key']['column']['column']
+            superColumnName = CliCompiler.getColumn(columnFamilySpec, 0).getBytes("UTF-8");
+            columnName = CliCompiler.getColumn(columnFamilySpec, 1).getBytes("UTF-8");
+        }
+        
+        thriftClient_.remove(tableName, key, new ColumnPath(columnFamily, superColumnName, columnName),
+                             System.currentTimeMillis(), ConsistencyLevel.ONE);
         css_.out.println(String.format("%s removed.", (columnSpecCnt == 0) ? "row" : "column"));
     }