Author: jbellis
Date: Wed Aug 19 16:27:20 2009
New Revision: 805868

URL: http://svn.apache.org/viewvc?rev=805868&view=rev
Log:
use the subcomparator when toStringing slice commands on subcolumns.  this 
exposes a couple bugs: fix getString in non-string types to accept byte[0], and 
fix a test to send a long to a LongType subcolumn.  patch by jbellis and Evan 
Weaver for CASSANDRA-377

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ReadCommand.java
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
    
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
    incubator/cassandra/trunk/test/system/test_server.py

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ReadCommand.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ReadCommand.java?rev=805868&r1=805867&r2=805868&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ReadCommand.java 
(original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/ReadCommand.java 
Wed Aug 19 16:27:20 2009
@@ -88,7 +88,9 @@
 
     protected AbstractType getComparator()
     {
-        return DatabaseDescriptor.getComparator(table, getColumnFamilyName());
+        return queryPath.superColumnName == null
+               ? DatabaseDescriptor.getComparator(table, getColumnFamilyName())
+               : DatabaseDescriptor.getSubComparator(table, 
getColumnFamilyName());
     }
 }
 

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java?rev=805868&r1=805867&r2=805868&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
 (original)
+++ 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java
 Wed Aug 19 16:27:20 2009
@@ -48,6 +48,10 @@
 
     public String getString(byte[] bytes)
     {
+        if (bytes.length == 0)
+        {
+            return "";
+        }
         if (bytes.length != 16)
         {
             throw new MarshalException("UUIDs must be exactly 16 bytes");

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java?rev=805868&r1=805867&r2=805868&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
 (original)
+++ 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/LongType.java
 Wed Aug 19 16:27:20 2009
@@ -44,6 +44,10 @@
 
     public String getString(byte[] bytes)
     {
+        if (bytes.length == 0)
+        {
+            return "";
+        }
         if (bytes.length != 8)
         {
             throw new MarshalException("A long is exactly 8 bytes");

Modified: 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java?rev=805868&r1=805867&r2=805868&view=diff
==============================================================================
--- 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
 (original)
+++ 
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java
 Wed Aug 19 16:27:20 2009
@@ -43,6 +43,10 @@
 
     public String getString(byte[] bytes)
     {
+        if (bytes.length == 0)
+        {
+            return "";
+        }
         if (bytes.length != 16)
         {
             throw new MarshalException("UUIDs must be exactly 16 bytes");

Modified: incubator/cassandra/trunk/test/system/test_server.py
URL: 
http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/system/test_server.py?rev=805868&r1=805867&r2=805868&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/system/test_server.py (original)
+++ incubator/cassandra/trunk/test/system/test_server.py Wed Aug 19 16:27:20 
2009
@@ -149,7 +149,7 @@
         assert _big_slice('Keyspace1', 'key1', ColumnParent('Super1')) == []
 
     def test_missing_super(self):
-        _expect_missing(lambda: client.get('Keyspace1', 'key1', 
ColumnPath('Super1', 'sc1', 'c1'), ConsistencyLevel.ONE))
+        _expect_missing(lambda: client.get('Keyspace1', 'key1', 
ColumnPath('Super1', 'sc1', _i64(1)), ConsistencyLevel.ONE))
 
     def test_count(self):
         _insert_simple()


Reply via email to