You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2012/10/29 11:14:16 UTC

git commit: Fix DynamicCompositeType same type comparison

Updated Branches:
  refs/heads/cassandra-1.1 d51643cad -> 5e15927ff


Fix DynamicCompositeType same type comparison

patch by slebresne; reviewed by jbellis for CASSANDRA-4711


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5e15927f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5e15927f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5e15927f

Branch: refs/heads/cassandra-1.1
Commit: 5e15927ffffb9aa47b69a7089b1aa2d8f3f1f093
Parents: d51643c
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Mon Oct 29 11:12:48 2012 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Mon Oct 29 11:12:48 2012 +0100

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../cassandra/db/marshal/DynamicCompositeType.java |   20 ++++++++++----
 2 files changed, 15 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e15927f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 191c935..05b7ef3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -9,6 +9,7 @@
  * fix potential infinite loop in get_count (CASSANDRA-4833)
  * fix compositeType.{get/from}String methods (CASSANDRA-4842)
  * (CQL) fix CREATE COLUMNFAMILY permissions check (CASSANDRA-4864)
+ * Fix DynamicCompositeType same type comparison (CASSANDRA-4711)
 
 
 1.1.6

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e15927f/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java b/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
index 0f0127a..06ecdfc 100644
--- a/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
+++ b/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java
@@ -120,15 +120,15 @@ public class DynamicCompositeType extends AbstractCompositeType
              * We compare component of different types by comparing the
              * comparator class names. We start with the simple classname
              * first because that will be faster in almost all cases, but
-             * allback on the full name if necessary
-            */
+             * fallback on the full name if necessary
+             */
             int cmp = comp1.getClass().getSimpleName().compareTo(comp2.getClass().getSimpleName());
             if (cmp != 0)
-                return cmp < 0 ? FixedValueComparator.instance : ReversedType.getInstance(FixedValueComparator.instance);
+                return cmp < 0 ? FixedValueComparator.alwaysLesserThan : FixedValueComparator.alwaysGreaterThan;
 
             cmp = comp1.getClass().getName().compareTo(comp2.getClass().getName());
             if (cmp != 0)
-                return cmp < 0 ? FixedValueComparator.instance : ReversedType.getInstance(FixedValueComparator.instance);
+                return cmp < 0 ? FixedValueComparator.alwaysLesserThan : FixedValueComparator.alwaysGreaterThan;
 
             // if cmp == 0, we're actually having the same type, but one that
             // did not have a singleton instance. It's ok (though inefficient).
@@ -307,11 +307,19 @@ public class DynamicCompositeType extends AbstractCompositeType
      */
     private static class FixedValueComparator extends AbstractType<Void>
     {
-        public static final FixedValueComparator instance = new FixedValueComparator();
+        public static final FixedValueComparator alwaysLesserThan = new FixedValueComparator(-1);
+        public static final FixedValueComparator alwaysGreaterThan = new FixedValueComparator(1);
+
+        private final int cmp;
+
+        public FixedValueComparator(int cmp)
+        {
+            this.cmp = cmp;
+        }
 
         public int compare(ByteBuffer v1, ByteBuffer v2)
         {
-            return -1;
+            return cmp;
         }
 
         public Void compose(ByteBuffer bytes)