You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ee...@apache.org on 2010/06/17 21:59:29 UTC
svn commit: r955717 - in /cassandra/trunk: interface/cassandra.genavro
src/java/org/apache/cassandra/avro/CassandraServer.java
test/system/test_avro_server.py
Author: eevans
Date: Thu Jun 17 19:59:29 2010
New Revision: 955717
URL: http://svn.apache.org/viewvc?rev=955717&view=rev
Log:
get_count() for avro + system tests
Patch by eevans
Modified:
cassandra/trunk/interface/cassandra.genavro
cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java
cassandra/trunk/test/system/test_avro_server.py
Modified: cassandra/trunk/interface/cassandra.genavro
URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.genavro?rev=955717&r1=955716&r2=955717&view=diff
==============================================================================
--- cassandra/trunk/interface/cassandra.genavro (original)
+++ cassandra/trunk/interface/cassandra.genavro Thu Jun 17 19:59:29 2010
@@ -146,6 +146,16 @@ protocol Cassandra {
ConsistencyLevel consistency_level)
throws InvalidRequestException, UnavailableException, TimedOutException;
+ /**
+ * Returns the number of columns matching a predicate for a particular
+ * key, ColumnFamily, and optionally SuperColumn.
+ */
+ int get_count(bytes key,
+ ColumnParent column_parent,
+ SlicePredicate predicate,
+ ConsistencyLevel consistency_level)
+ throws InvalidRequestException, UnavailableException, TimedOutException;
+
void insert(bytes key,
ColumnParent column_parent,
Column column,
Modified: cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java?rev=955717&r1=955716&r2=955717&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/avro/CassandraServer.java Thu Jun 17 19:59:29 2010
@@ -320,6 +320,16 @@ public class CassandraServer implements
}
@Override
+ public int get_count(ByteBuffer key, ColumnParent columnParent, SlicePredicate predicate, ConsistencyLevel consistencyLevel)
+ throws AvroRemoteException, InvalidRequestException, UnavailableException, TimedOutException
+ {
+ if (logger.isDebugEnabled())
+ logger.debug("get_count");
+
+ return (int)get_slice(key, columnParent, predicate, consistencyLevel).size();
+ }
+
+ @Override
public Void insert(ByteBuffer key, ColumnParent parent, Column column, ConsistencyLevel consistencyLevel)
throws AvroRemoteException, InvalidRequestException, UnavailableException, TimedOutException
{
Modified: cassandra/trunk/test/system/test_avro_server.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_avro_server.py?rev=955717&r1=955716&r2=955717&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_avro_server.py (original)
+++ cassandra/trunk/test/system/test_avro_server.py Thu Jun 17 19:59:29 2010
@@ -237,6 +237,33 @@ class TestRpcOperations(AvroTester):
assert_columns_match(coscs[0]['column'], columns[2])
assert_columns_match(coscs[3]['column'], columns[5])
+ def test_get_count(self):
+ "counting columns"
+ self.__set_keyspace('Keyspace1')
+
+ mutations = list()
+
+ for i in range(10):
+ mutation = {'column_or_supercolumn': {'column': new_column(i)}}
+ mutations.append(mutation)
+
+ mutation_params = dict()
+ map_entry = {'key': 'key1', 'mutations': {'Standard1': mutations}}
+ mutation_params['mutation_map'] = [map_entry]
+ mutation_params['consistency_level'] = 'ONE'
+
+ self.client.request('batch_mutate', mutation_params)
+
+ count_params = dict()
+ count_params['key'] = 'key1'
+ count_params['column_parent'] = {'column_family': 'Standard1'}
+ sr = {'start': '', 'finish': '', 'reversed': False, 'count': 1000}
+ count_params['predicate'] = {'slice_range': sr}
+ count_params['consistency_level'] = 'ONE'
+
+ num_columns = self.client.request('get_count', count_params)
+ assert(num_columns == 10), "expected 10 results, got %d" % num_columns
+
def test_describe_keyspaces(self):
"retrieving a list of all keyspaces"
keyspaces = self.client.request('describe_keyspaces', {})