Author: brandonwilliams
Date: Fri Jul 15 22:17:58 2011
New Revision: 1147336

URL: http://svn.apache.org/viewvc?rev=1147336&view=rev
Log:
Proper support of key validation class and function calls for COUNT in
the cli.
Patch by Pavel Yaskevich, reviewed by brandonwilliams for CASSANDRA-2902

Modified:
    
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/cli/CliClient.java
    
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/cli/CliTest.java

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/cli/CliClient.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/cli/CliClient.java?rev=1147336&r1=1147335&r2=1147336&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/cli/CliClient.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/cli/CliClient.java
 Fri Jul 15 22:17:58 2011
@@ -349,7 +349,6 @@ public class CliClient
 
         Tree columnFamilySpec = statement.getChild(0);
 
-        String key = CliCompiler.getKey(columnFamilySpec);
         String columnFamily = CliCompiler.getColumnFamily(columnFamilySpec, 
keyspacesMap.get(keySpace).cf_defs);
         int columnSpecCnt = CliCompiler.numColumnSpecifiers(columnFamilySpec);
        
@@ -357,14 +356,19 @@ public class CliClient
        
         if (columnSpecCnt != 0)
         {
-            byte[] superColumn = 
columnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 0), columnFamily);
+            Tree columnTree = columnFamilySpec.getChild(2);
+
+            byte[] superColumn = (columnTree.getType() == 
CliParser.FUNCTION_CALL)
+                                  ? convertValueByFunction(columnTree, null, 
null).array()
+                                  : 
columnNameAsByteArray(CliCompiler.getColumn(columnFamilySpec, 0), columnFamily);
+
             colParent = new 
ColumnParent(columnFamily).setSuper_column(superColumn);
         }
 
         SliceRange range = new SliceRange(ByteBufferUtil.EMPTY_BYTE_BUFFER, 
ByteBufferUtil.EMPTY_BYTE_BUFFER, false, Integer.MAX_VALUE);
         SlicePredicate predicate = new 
SlicePredicate().setColumn_names(null).setSlice_range(range);
 
-        int count = thriftClient.get_count(ByteBufferUtil.bytes(key), 
colParent, predicate, consistencyLevel);
+        int count = thriftClient.get_count(getKeyAsBytes(columnFamily, 
columnFamilySpec.getChild(1)), colParent, predicate, consistencyLevel);
         sessionState.out.printf("%d columns%n", count);
     }
     

Modified: 
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/cli/CliTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/cli/CliTest.java?rev=1147336&r1=1147335&r2=1147336&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/cli/CliTest.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/cli/CliTest.java
 Fri Jul 15 22:17:58 2011
@@ -134,6 +134,10 @@ public class CliTest extends CleanupHelp
         "set sCf1['hello'][1][9999] = 938;",
         "set sCf1['hello'][1][9999] = 938 with ttl = 30;",
         "set sCf1['hello'][1][9999] = 938 with ttl = 560;",
+        "count sCf1[hello];",
+        "count sCf1[utf8('hello')];",
+        "count sCf1[utf8('hello')][integer(1)];",
+        "count sCF1[hello][1];",
         "list sCf1;",
         "del SCF1['hello'][1][9999];",
         "assume sCf1 comparator as utf8;",


Reply via email to