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