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 2011/03/30 21:02:42 UTC
svn commit: r1087040 - in /cassandra/trunk/drivers/py/cql: connection.py
decoders.py results.py
Author: eevans
Date: Wed Mar 30 19:02:41 2011
New Revision: 1087040
URL: http://svn.apache.org/viewvc?rev=1087040&view=rev
Log:
decode keys according to type too
Patch by eevans
Modified:
cassandra/trunk/drivers/py/cql/connection.py
cassandra/trunk/drivers/py/cql/decoders.py
cassandra/trunk/drivers/py/cql/results.py
Modified: cassandra/trunk/drivers/py/cql/connection.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/connection.py?rev=1087040&r1=1087039&r2=1087040&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/connection.py (original)
+++ cassandra/trunk/drivers/py/cql/connection.py Wed Mar 30 19:02:41 2011
@@ -97,6 +97,8 @@ class Connection(object):
cfresults[cf.name] = {"comparator": cf.comparator_type}
cfresults[cf.name]["default_validation_class"] = \
cf.default_validation_class
+ cfresults[cf.name]["key_validation_class"] = \
+ cf.key_validation_class
cfresults[cf.name]["columns"] = columns(cf.column_metadata)
return cfresults
Modified: cassandra/trunk/drivers/py/cql/decoders.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/decoders.py?rev=1087040&r1=1087039&r2=1087040&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/decoders.py (original)
+++ cassandra/trunk/drivers/py/cql/decoders.py Wed Mar 30 19:02:41 2011
@@ -21,10 +21,16 @@ from marshal import unmarshal
class BaseDecoder(object):
def decode_column(self, keyspace, column_family, name, value):
raise NotImplementedError()
+
+ def decode_key(self, keyspace, column_family, key):
+ raise NotImplementedError()
class NoopDecoder(BaseDecoder):
def decode_column(self, keyspace, column_family, name, value):
return (name, value)
+
+ def decode_key(self, keyspace, column_family, key):
+ return key
class SchemaDecoder(BaseDecoder):
"""
@@ -53,9 +59,18 @@ class SchemaDecoder(BaseDecoder):
else:
return cfam["default_validation_class"]
return None
+
+ def __keytype_for(self, keyspace, column_family, key):
+ cfam = self.__get_column_family_def(keyspace, column_family)
+ if cfam and cfam.has_key("key_validation_class"):
+ return cfam["key_validation_class"]
+ return None
def decode_column(self, keyspace, column_family, name, value):
comparator = self.__comparator_for(keyspace, column_family)
validator = self.__validator_for(keyspace, column_family, name)
return (unmarshal(name, comparator), unmarshal(value, validator))
+
+ def decode_key(self, keyspace, column_family, key):
+ return unmarshal(key, self.__keytype_for(keyspace, column_family, key))
Modified: cassandra/trunk/drivers/py/cql/results.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/drivers/py/cql/results.py?rev=1087040&r1=1087039&r2=1087040&view=diff
==============================================================================
--- cassandra/trunk/drivers/py/cql/results.py (original)
+++ cassandra/trunk/drivers/py/cql/results.py Wed Mar 30 19:02:41 2011
@@ -38,9 +38,16 @@ class RowsProxy(object):
class Row(object):
def __init__(self, key, columns, keyspace, cfam, decoder):
- self.key = key
+ self._key = key
+ self.keyspace = keyspace
+ self.cfam = cfam
+ self.decoder = decoder
self.columns = ColumnsProxy(columns, keyspace, cfam, decoder)
-
+
+ def __get_key(self):
+ return self.decoder.decode_key(self.keyspace, self.cfam, self._key)
+ key = property(__get_key)
+
def __iter__(self):
return iter(self.columns)
@@ -88,4 +95,4 @@ class Column(object):
return "Column(%s, %s)" % (self.name, self.value)
def __repr__(self):
- return str(self)
\ No newline at end of file
+ return str(self)