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 2009/08/20 22:37:45 UTC

svn commit: r806342 - in /incubator/cassandra/trunk: src/java/org/apache/cassandra/db/marshal/LongType.java test/system/test_server.py

Author: jbellis
Date: Thu Aug 20 20:37:45 2009
New Revision: 806342

URL: http://svn.apache.org/viewvc?rev=806342&view=rev
Log:
change LongType to read longs in big endian order to be consistent with network order and the UUID types.
patch by jbellis and Evan Weaver; reviewed by Michael Greene for CASSANDRA-384

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

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=806342&r1=806341&r2=806342&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 Thu Aug 20 20:37:45 2009
@@ -37,8 +37,8 @@
             return 1;
         }
 
-        long L1 = ByteBuffer.wrap(o1).order(ByteOrder.LITTLE_ENDIAN).getLong();
-        long L2 = ByteBuffer.wrap(o2).order(ByteOrder.LITTLE_ENDIAN).getLong();
+        long L1 = ByteBuffer.wrap(o1).getLong();
+        long L2 = ByteBuffer.wrap(o2).getLong();
         return Long.valueOf(L1).compareTo(Long.valueOf(L2));
     }
 

Modified: incubator/cassandra/trunk/test/system/test_server.py
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/test/system/test_server.py?rev=806342&r1=806341&r2=806342&view=diff
==============================================================================
--- incubator/cassandra/trunk/test/system/test_server.py (original)
+++ incubator/cassandra/trunk/test/system/test_server.py Thu Aug 20 20:37:45 2009
@@ -26,7 +26,7 @@
 
 
 def _i64(n):
-    return struct.pack('<q', n) # little endian, to match cassandra.db.marshal.LongType
+    return struct.pack('>q', n) # big endian = network order
 
 _SIMPLE_COLUMNS = [Column('c1', 'value1', 0),
                    Column('c2', 'value2', 0)]
@@ -179,6 +179,20 @@
                  for result in client.get_slice('Keyspace1', 'key1', column_parent, p, ConsistencyLevel.ONE)]
         assert slice == [Column(_i64(6), 'value6', 0)], slice
         
+    def test_long_order(self):
+        def long_xrange(start, stop, step):
+            i = start
+            while i < stop:
+                yield i
+                i += step
+        L = []
+        for i in long_xrange(0, 104294967296, 429496729):
+            name = _i64(i)
+            client.insert('Keyspace1', 'key1', ColumnPath('StandardLong1', column=name), 'v', 0, ConsistencyLevel.ONE)
+            L.append(name)
+        slice = [result.column.name for result in _big_slice('Keyspace1', 'key1', ColumnParent('StandardLong1'))]
+        assert slice == L, slice
+        
     def test_time_uuid(self):
         import uuid
         L = []