You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/05/23 04:11:22 UTC

svn commit: r1126294 - in /cassandra/branches/cassandra-0.8: ./ contrib/ drivers/java/src/org/apache/cassandra/cql/jdbc/ interface/thrift/gen-java/org/apache/cassandra/thrift/ src/java/org/apache/cassandra/db/marshal/ test/unit/org/apache/cassandra/db/...

Author: jbellis
Date: Mon May 23 02:11:21 2011
New Revision: 1126294

URL: http://svn.apache.org/viewvc?rev=1126294&view=rev
Log:
merge from 0.8.0

Modified:
    cassandra/branches/cassandra-0.8/   (props changed)
    cassandra/branches/cassandra-0.8/CHANGES.txt
    cassandra/branches/cassandra-0.8/contrib/   (props changed)
    cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/TypedColumn.java
    cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java   (props changed)
    cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java   (props changed)
    cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java   (props changed)
    cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java   (props changed)
    cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java   (props changed)
    cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java
    cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java
    cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/marshal/UUIDTypeTest.java

Propchange: cassandra/branches/cassandra-0.8/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 23 02:11:21 2011
@@ -1,8 +1,8 @@
 /cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7:1026516-1125002
+/cassandra/branches/cassandra-0.7:1026516-1125002,1126290
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
 /cassandra/branches/cassandra-0.8:1090934-1125013,1125041
-/cassandra/branches/cassandra-0.8.0:1125021-1125100
+/cassandra/branches/cassandra-0.8.0:1125021-1126293
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1:1102511-1125020
 /incubator/cassandra/branches/cassandra-0.3:774578-796573

Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1126294&r1=1126293&r2=1126294&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Mon May 23 02:11:21 2011
@@ -21,6 +21,7 @@
  * add ant generate-cql-html target (CASSANDRA-2526)
  * update CQL consistency levels (CASSANDRA-2566)
  * debian packaging fixes (CASSANDRA-2481, 2647)
+ * fix UUIDType, IntegerType for direct buffers (CASSANDRA-2682, 2684)
 
 
 0.8.0-rc1 
@@ -111,6 +112,7 @@
  * cli no longer divides read_repair_chance by 100 (CASSANDRA-2458)
  * made CompactionInfo.getTaskType return an enum (CASSANDRA-2482)
  * add a server-wide cap on measured memtable memory usage (CASSANDRA-2006)
+ * add unified UUIDType (CASSANDRA-2233)
 
 
 0.7.5

Propchange: cassandra/branches/cassandra-0.8/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 23 02:11:21 2011
@@ -1,8 +1,8 @@
 /cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
-/cassandra/branches/cassandra-0.7/contrib:1026516-1125002
+/cassandra/branches/cassandra-0.7/contrib:1026516-1125002,1126290
 /cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
 /cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125041
-/cassandra/branches/cassandra-0.8.0/contrib:1125021-1125100
+/cassandra/branches/cassandra-0.8.0/contrib:1125021-1126293
 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1/contrib:1102511-1125020
 /incubator/cassandra/branches/cassandra-0.3/contrib:774578-796573

Modified: cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/TypedColumn.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/TypedColumn.java?rev=1126294&r1=1126293&r2=1126294&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/TypedColumn.java (original)
+++ cassandra/branches/cassandra-0.8/drivers/java/src/org/apache/cassandra/cql/jdbc/TypedColumn.java Mon May 23 02:11:21 2011
@@ -26,7 +26,7 @@ import org.apache.cassandra.thrift.Colum
 
 import java.nio.ByteBuffer;
 
-class TypedColumn
+public class TypedColumn
 {
     private final Column rawColumn;
 

Propchange: cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 23 02:11:21 2011
@@ -1,8 +1,8 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1125002
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1125002,1126290
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125041
-/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1125100
+/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1126293
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1102511-1125020
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573

Propchange: cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 23 02:11:21 2011
@@ -1,8 +1,8 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1125002
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1125002,1126290
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1090934-1125013,1125041
-/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1125100
+/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1125021-1126293
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1102511-1125020
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198

Propchange: cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 23 02:11:21 2011
@@ -1,8 +1,8 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1125002
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1125002,1126290
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1090934-1125013,1125041
-/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1125100
+/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1125021-1126293
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1102511-1125020
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573

Propchange: cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 23 02:11:21 2011
@@ -1,8 +1,8 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1125002
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1125002,1126290
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1090934-1125013,1125041
-/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1125100
+/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1125021-1126293
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1102511-1125020
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573

Propchange: cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon May 23 02:11:21 2011
@@ -1,8 +1,8 @@
 /cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1081914,1083000
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1125002
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1125002,1126290
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
 /cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1090934-1125013,1125041
-/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1125100
+/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1125021-1126293
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
 /cassandra/tags/cassandra-0.8.0-rc1/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1102511-1125020
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198

Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java?rev=1126294&r1=1126293&r2=1126294&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java (original)
+++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/IntegerType.java Mon May 23 02:11:21 2011
@@ -133,7 +133,7 @@ public final class IntegerType extends A
         if (bytes.remaining() == 0)
             return "empty";
 
-        return new java.math.BigInteger(TBaseHelper.byteBufferToByteArray(bytes)).toString(10);
+        return new java.math.BigInteger(ByteBufferUtil.getArray(bytes)).toString(10);
     }
     
     public String toString(BigInteger bi)

Modified: cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java?rev=1126294&r1=1126293&r2=1126294&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java (original)
+++ cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/marshal/UUIDType.java Mon May 23 02:11:21 2011
@@ -25,11 +25,10 @@ import java.nio.ByteBuffer;
 import java.text.ParseException;
 import java.util.UUID;
 
-import org.apache.commons.lang.time.DateUtils;
-
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.FBUtilities;
 import org.apache.cassandra.utils.UUIDGen;
+import org.apache.commons.lang.time.DateUtils;
 
 /**
  * Compares UUIDs using the following criteria:<br>
@@ -39,9 +38,7 @@ import org.apache.cassandra.utils.UUIDGe
  * - compare timestamps if both are time-based<br>
  * - compare lexically, unsigned msb-to-lsb comparison<br>
  * 
- * @author edanuff
  * @see "com.fasterxml.uuid.UUIDComparator"
- * 
  */
 public class UUIDType extends AbstractUUIDType
 {
@@ -65,25 +62,13 @@ public class UUIDType extends AbstractUU
             return 1;
         }
 
-        int s1 = b1.arrayOffset() + b1.position();
-        byte[] o1 = b1.array();
-
-        int s2 = b2.arrayOffset() + b2.position();
-        byte[] o2 = b2.array();
-
-        if (o1.length == s1)
-        {
-            return o2.length == s2 ? 0 : -1;
-        }
-        if (o2.length == s2)
-        {
-            return 1;
-        }
+        int s1 = b1.position();
+        int s2 = b2.position();
 
         // Compare versions
 
-        int v1 = (o1[s1 + 6] >> 4) & 0x0f;
-        int v2 = (o2[s2 + 6] >> 4) & 0x0f;
+        int v1 = (b1.get(s1 + 6) >> 4) & 0x0f;
+        int v2 = (b2.get(s2 + 6) >> 4) & 0x0f;
 
         if (v1 != v2)
         {
@@ -95,7 +80,7 @@ public class UUIDType extends AbstractUU
         if (v1 == 1)
         {
             // if both time-based, compare as timestamps
-            int c = compareTimestampBytes(s1, o1, s2, o2);
+            int c = compareTimestampBytes(b1, b2);
             if (c != 0)
             {
                 return c;
@@ -109,10 +94,9 @@ public class UUIDType extends AbstractUU
         // Appendix A - Sample Implementation.
         // Note: java.util.UUID.compareTo is not a lexical
         // comparison
-
         for (int i = 0; i < 16; i++)
         {
-            int c = ((o1[s1 + i]) & 0xFF) - ((o2[s2 + i]) & 0xFF);
+            int c = ((b1.get(s1 + i)) & 0xFF) - ((b2.get(s2 + i)) & 0xFF);
             if (c != 0)
             {
                 return c;
@@ -122,45 +106,54 @@ public class UUIDType extends AbstractUU
         return 0;
     }
 
-    private static int compareTimestampBytes(int s1, byte[] o1, int s2,
-            byte[] o2)
+    private static int compareTimestampBytes(ByteBuffer o1, ByteBuffer o2)
     {
-        int d = (o1[s1 + 6] & 0xF) - (o2[s2 + 6] & 0xF);
+        int o1Pos = o1.position();
+        int o2Pos = o2.position();
+
+        int d = (o1.get(o1Pos + 6) & 0xF) - (o2.get(o2Pos + 6) & 0xF);
         if (d != 0)
         {
             return d;
         }
-        d = (o1[s1 + 7] & 0xFF) - (o2[s2 + 7] & 0xFF);
+
+        d = (o1.get(o1Pos + 7) & 0xFF) - (o2.get(o2Pos + 7) & 0xFF);
         if (d != 0)
         {
             return d;
         }
-        d = (o1[s1 + 4] & 0xFF) - (o2[s2 + 4] & 0xFF);
+
+        d = (o1.get(o1Pos + 4) & 0xFF) - (o2.get(o2Pos + 4) & 0xFF);
         if (d != 0)
         {
             return d;
         }
-        d = (o1[s1 + 5] & 0xFF) - (o2[s2 + 5] & 0xFF);
+
+        d = (o1.get(o1Pos + 5) & 0xFF) - (o2.get(o2Pos + 5) & 0xFF);
         if (d != 0)
         {
             return d;
         }
-        d = (o1[s1 + 0] & 0xFF) - (o2[s2 + 0] & 0xFF);
+
+        d = (o1.get(o1Pos) & 0xFF) - (o2.get(o2Pos) & 0xFF);
         if (d != 0)
         {
             return d;
         }
-        d = (o1[s1 + 1] & 0xFF) - (o2[s2 + 1] & 0xFF);
+
+        d = (o1.get(o1Pos + 1) & 0xFF) - (o2.get(o2Pos + 1) & 0xFF);
         if (d != 0)
         {
             return d;
         }
-        d = (o1[s1 + 2] & 0xFF) - (o2[s2 + 2] & 0xFF);
+
+        d = (o1.get(o1Pos + 2) & 0xFF) - (o2.get(o2Pos + 2) & 0xFF);
         if (d != 0)
         {
             return d;
         }
-        return (o1[s1 + 3] & 0xFF) - (o2[s2 + 3] & 0xFF);
+
+        return (o1.get(o1Pos + 3) & 0xFF) - (o2.get(o2Pos + 3) & 0xFF);
     }
 
     public UUID compose(ByteBuffer bytes)

Modified: cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/marshal/UUIDTypeTest.java
URL: http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/marshal/UUIDTypeTest.java?rev=1126294&r1=1126293&r2=1126294&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/marshal/UUIDTypeTest.java (original)
+++ cassandra/branches/cassandra-0.8/test/unit/org/apache/cassandra/db/marshal/UUIDTypeTest.java Mon May 23 02:11:21 2011
@@ -1,4 +1,5 @@
 package org.apache.cassandra.db.marshal;
+
 /*
  * 
  * Licensed to the Apache Software Foundation (ASF) under one
@@ -20,7 +21,6 @@ package org.apache.cassandra.db.marshal;
  * 
  */
 
-
 import static org.junit.Assert.assertEquals;
 
 import java.net.InetAddress;
@@ -30,6 +30,7 @@ import java.util.Arrays;
 import java.util.Random;
 import java.util.UUID;
 
+import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.UUIDGen;
 import org.apache.log4j.Logger;
 import org.junit.Test;
@@ -48,6 +49,9 @@ public class UUIDTypeTest
         UUID t1 = newTimeBasedUUID();
         UUID t2 = newTimeBasedUUID();
 
+        testCompare(null, t2, -1);
+        testCompare(t1, null, 1);
+
         testCompare(t1, t2, -1);
         testCompare(t1, t1, 0);
         testCompare(t2, t2, 0);
@@ -110,8 +114,8 @@ public class UUIDTypeTest
 
     public String describeCompare(UUID u1, UUID u2, int c)
     {
-        String tb1 = (u1.version() == 1) ? "time-based " : "random ";
-        String tb2 = (u2.version() == 1) ? "time-based " : "random ";
+        String tb1 = (u1 == null) ? "null" : (u1.version() == 1) ? "time-based " : "random ";
+        String tb2 = (u2 == null) ? "null" : (u2.version() == 1) ? "time-based " : "random ";
         String comp = (c < 0) ? " < " : ((c == 0) ? " = " : " > ");
         return tb1 + u1 + comp + tb2 + u2;
     }
@@ -131,6 +135,9 @@ public class UUIDTypeTest
 
     public static ByteBuffer bytebuffer(UUID uuid)
     {
+        if (uuid == null)
+            return ByteBufferUtil.EMPTY_BYTE_BUFFER;
+
         long msb = uuid.getMostSignificantBits();
         long lsb = uuid.getLeastSignificantBits();
         byte[] bytes = new byte[16];
@@ -149,29 +156,23 @@ public class UUIDTypeTest
 
     public void logJdkUUIDCompareToVariance(UUID u1, UUID u2, int expC)
     {
+        if ((u1 == null) || (u2 == null))
+            return;
         if (u1.version() != u2.version())
-        {
             return;
-        }
         if (u1.version() == 1)
-        {
             return;
-        }
         if (u1.compareTo(u2) != expC)
-        {
             logger.info("*** Note: java.util.UUID.compareTo() would have compared this differently");
-        }
-
     }
 
     public void testCompare(UUID u1, UUID u2, int expC)
     {
         int c = sign(uuidType.compare(bytebuffer(u1), bytebuffer(u2)));
         expC = sign(expC);
-        assertEquals("Expected " + describeCompare(u1, u2, expC) + ", got "
-                + describeCompare(u1, u2, c), expC, c);
+        assertEquals("Expected " + describeCompare(u1, u2, expC) + ", got " + describeCompare(u1, u2, c), expC, c);
 
-        if (u1.version() == 1 && u2.version() == 1)
+        if (((u1 != null) && (u1.version() == 1)) && ((u2 != null) && (u2.version() == 1)))
             assertEquals(c, sign(TimeUUIDType.instance.compare(bytebuffer(u1), bytebuffer(u2))));
 
         logJdkUUIDCompareToVariance(u1, u2, c);