You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2011/07/16 00:17:58 UTC

svn commit: r1147336 - in /cassandra/branches/cassandra-0.8: src/java/org/apache/cassandra/cli/CliClient.java test/unit/org/apache/cassandra/cli/CliTest.java

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;",