diff --git a/src/java/org/apache/cassandra/db/ReadCommand.java b/src/java/org/apache/cassandra/db/ReadCommand.java index eed9b9f208..adb9452807 100644 --- a/src/java/org/apache/cassandra/db/ReadCommand.java +++ b/src/java/org/apache/cassandra/db/ReadCommand.java @@ -88,7 +88,9 @@ public abstract class ReadCommand protected AbstractType getComparator() { - return DatabaseDescriptor.getComparator(table, getColumnFamilyName()); + return queryPath.superColumnName == null + ? DatabaseDescriptor.getComparator(table, getColumnFamilyName()) + : DatabaseDescriptor.getSubComparator(table, getColumnFamilyName()); } } diff --git a/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java b/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java index a9a8e6e0cb..292629214f 100644 --- a/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java +++ b/src/java/org/apache/cassandra/db/marshal/LexicalUUIDType.java @@ -48,6 +48,10 @@ public class LexicalUUIDType extends AbstractType public String getString(byte[] bytes) { + if (bytes.length == 0) + { + return ""; + } if (bytes.length != 16) { throw new MarshalException("UUIDs must be exactly 16 bytes"); diff --git a/src/java/org/apache/cassandra/db/marshal/LongType.java b/src/java/org/apache/cassandra/db/marshal/LongType.java index f29064586e..234fa671b1 100644 --- a/src/java/org/apache/cassandra/db/marshal/LongType.java +++ b/src/java/org/apache/cassandra/db/marshal/LongType.java @@ -44,6 +44,10 @@ public class LongType extends AbstractType public String getString(byte[] bytes) { + if (bytes.length == 0) + { + return ""; + } if (bytes.length != 8) { throw new MarshalException("A long is exactly 8 bytes"); diff --git a/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java b/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java index 79fd1e38d6..cfbf5cd6f0 100644 --- a/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java +++ b/src/java/org/apache/cassandra/db/marshal/TimeUUIDType.java @@ -43,6 +43,10 @@ public class TimeUUIDType extends AbstractType public String getString(byte[] bytes) { + if (bytes.length == 0) + { + return ""; + } if (bytes.length != 16) { throw new MarshalException("UUIDs must be exactly 16 bytes"); diff --git a/test/system/test_server.py b/test/system/test_server.py index e6a7d3b74b..54af1b8160 100644 --- a/test/system/test_server.py +++ b/test/system/test_server.py @@ -149,7 +149,7 @@ class TestMutations(CassandraTester): 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()