Author: eevans
Date: Sat Dec  5 05:26:56 2009
New Revision: 887497

URL: http://svn.apache.org/viewvc?rev=887497&view=rev
Log:
refactor of executeSet() to support super columns

Patch by eevans for CASSANDRA-567

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

Modified: incubator/cassandra/trunk/bin/cassandra-cli
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/bin/cassandra-cli?rev=887497&r1=887496&r2=887497&view=diff
==============================================================================
--- incubator/cassandra/trunk/bin/cassandra-cli (original)
+++ incubator/cassandra/trunk/bin/cassandra-cli Sat Dec  5 05:26:56 2009
@@ -43,6 +43,6 @@
     exit 1
 fi
 
-$JAVA -cp $CLASSPATH  org.apache.cassandra.cli.CliMain "$@"
+$JAVA -ea -cp $CLASSPATH  org.apache.cassandra.cli.CliMain "$@"
 
 # vi:ai sw=4 ts=4 tw=0 et

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=887497&r1=887496&r2=887497&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 
Sat Dec  5 05:26:56 2009
@@ -259,45 +259,49 @@
         if (!CliMain.isConnected())
             return;
 
-        int childCount = ast.getChildCount();
-        assert(childCount == 2);
+        assert (ast.getChildCount() == 2) : "serious parsing error (this is a 
bug).";
 
         CommonTree columnFamilySpec = (CommonTree)ast.getChild(0);
         assert(columnFamilySpec.getType() == CliParser.NODE_COLUMN_ACCESS);
 
-        String tableName     = CliCompiler.getTableName(columnFamilySpec);
-        String key           = CliCompiler.getKey(columnFamilySpec);
-        String columnFamily  = CliCompiler.getColumnFamily(columnFamilySpec);
-        int    columnSpecCnt = 
CliCompiler.numColumnSpecifiers(columnFamilySpec);
-        String value         = 
CliUtils.unescapeSQLString(ast.getChild(1).getText());
-
-        // assume simple columnFamily for now
-        if (columnSpecCnt == 1)
+        String tableName = CliCompiler.getTableName(columnFamilySpec);
+        String key = CliCompiler.getKey(columnFamilySpec);
+        String columnFamily = CliCompiler.getColumnFamily(columnFamilySpec);
+        int columnSpecCnt = CliCompiler.numColumnSpecifiers(columnFamilySpec);
+        String value = CliUtils.unescapeSQLString(ast.getChild(1).getText());
+
+        byte[] superColumnName = null;
+        byte[] columnName = null;
+ 
+        try
         {
-            // We have the table.cf['key']['column'] = 'value' case.
-
-            // get the column name
-            String columnName = CliCompiler.getColumn(columnFamilySpec, 0);
-
-            // do the insert
-            try
+            // table.cf['key']['column'] = 'value'
+            if (columnSpecCnt == 1)
             {
-                thriftClient_.insert(tableName, key, new 
ColumnPath(columnFamily, null, columnName.getBytes("UTF-8")),
-                                     value.getBytes(), 
System.currentTimeMillis(), ConsistencyLevel.ONE);
+                // get the column name
+                columnName = CliCompiler.getColumn(columnFamilySpec, 
0).getBytes("UTF-8");
             }
-            catch (UnsupportedEncodingException e)
+            // table.cf['key']['super_column']['column'] = 'value'
+            else
             {
-                throw new RuntimeException(e);
+                assert (columnSpecCnt == 2) : "serious parsing error (this is 
a bug).";
+                
+                // get the super column and column names
+                superColumnName = CliCompiler.getColumn(columnFamilySpec, 
0).getBytes("UTF-8");
+                columnName = CliCompiler.getColumn(columnFamilySpec, 
1).getBytes("UTF-8");
             }
-
-            css_.out.println("Value inserted.");
         }
-        else
+        catch (UnsupportedEncodingException e)
         {
-            /* for now (until we support batch sets) */
-            assert(false);
+            throw new RuntimeException("Unable to encode column name as 
UTF-8", e);
         }
-    } 
+        
+        // do the insert
+        thriftClient_.insert(tableName, key, new ColumnPath(columnFamily, 
superColumnName, columnName),
+                             value.getBytes(), System.currentTimeMillis(), 
ConsistencyLevel.ONE);
+        
+        css_.out.println("Value inserted.");
+    }
 
     private void executeShowProperty(CommonTree ast, String propertyName) 
throws TException
     {


Reply via email to