You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2010/11/14 10:05:51 UTC

svn commit: r1034960 - /cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.java

Author: jbellis
Date: Sun Nov 14 09:05:50 2010
New Revision: 1034960

URL: http://svn.apache.org/viewvc?rev=1034960&view=rev
Log:
cli: use key type conversion on list ranges, and reject invalid set of super columns
patch by jbellis

Modified:
    cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/cli/CliClient.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=1034960&r1=1034959&r2=1034960&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 Sun Nov 14 09:05:50 2010
@@ -283,12 +283,12 @@ public class CliClient extends CliUserHe
         }
 
         ColumnPath path = new ColumnPath(columnFamily);
-        if(superColumnName != null)
+        if (superColumnName != null)
             path.setSuper_column(superColumnName);
-        
-        if(columnName != null)
+
+        if (columnName != null)
             path.setColumn(columnName);
-        
+
         thriftClient.remove(ByteBuffer.wrap(key.getBytes(Charsets.UTF_8)), path,
                              FBUtilities.timestampMicros(), ConsistencyLevel.ONE);
         sessionState.out.println(String.format("%s removed.", (columnSpecCnt == 0) ? "row" : "column"));
@@ -563,10 +563,11 @@ public class CliClient extends CliUserHe
         Tree keyTree = columnFamilySpec.getChild(1); // could be a function or regular text
 
         String columnFamily = CliCompiler.getColumnFamily(columnFamilySpec);
+        CfDef cfDef = getCfDef(columnFamily);
         int columnSpecCnt = CliCompiler.numColumnSpecifiers(columnFamilySpec);
         String value = CliUtils.unescapeSQLString(statement.getChild(1).getText());
         Tree valueTree = statement.getChild(1);
-        
+
         byte[] superColumnName = null;
         ByteBuffer columnName;
 
@@ -580,6 +581,11 @@ public class CliClient extends CliUserHe
         else if (columnSpecCnt == 1)
         {
             // get the column name
+            if (cfDef.column_type.equals("Super"))
+            {
+                sessionState.out.println("Column family " + columnFamily + " may only contain SuperColumns");
+                return;
+            }
             columnName = getColumnName(columnFamily, columnFamilySpec.getChild(2));
         }
         // table.cf['key']['super_column']['column'] = 'value'
@@ -596,7 +602,7 @@ public class CliClient extends CliUserHe
         switch (valueTree.getType())
         {
         case CliParser.FUNCTION_CALL:
-            columnValueInBytes = convertValueByFunction(valueTree, getCfDef(columnFamily), columnName, true);
+            columnValueInBytes = convertValueByFunction(valueTree, cfDef, columnName, true);
             break;
         default:
             columnValueInBytes = columnValueAsBytes(columnName, columnFamily, value);
@@ -948,7 +954,9 @@ public class CliClient extends CliUserHe
 
         // set the key range
         KeyRange range = new KeyRange(limitCount);
-        range.setStart_key(startKey.getBytes()).setEnd_key(endKey.getBytes());
+        AbstractType keyComparator = this.cfKeysComparators.get(columnFamily);
+        range.setStart_key(getBytesAccordingToType(startKey, keyComparator))
+             .setEnd_key(getBytesAccordingToType(endKey, keyComparator));
 
         ColumnParent columnParent = new ColumnParent(columnFamily);
         List<KeySlice> keySlices = thriftClient.get_range_slices(columnParent, predicate, range, ConsistencyLevel.ONE);
@@ -1870,10 +1878,6 @@ public class CliClient extends CliUserHe
         String key = CliUtils.unescapeSQLString(keyTree.getText());
 
         AbstractType keyComparator = this.cfKeysComparators.get(columnFamily);
-        return keyComparator == null
-                ? ByteBuffer.wrap(key.getBytes(Charsets.UTF_8))
-                : getBytesAccordingToType(key, keyComparator);
-
+        return getBytesAccordingToType(key, keyComparator);
     }
-
 }