You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2012/12/12 11:21:02 UTC

svn commit: r1420608 - in /jena/trunk/jena-tdb: ReleaseNotes.txt src/main/java/com/hp/hpl/jena/tdb/store/IntegerNode.java src/test/java/com/hp/hpl/jena/tdb/nodetable/TestCodec.java src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java

Author: andy
Date: Wed Dec 12 10:21:00 2012
New Revision: 1420608

URL: http://svn.apache.org/viewvc?rev=1420608&view=rev
Log:
JENA-363 : Fix to integer handling for absolute values between 2^56 and 2^63

Modified:
    jena/trunk/jena-tdb/ReleaseNotes.txt
    jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/IntegerNode.java
    jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/nodetable/TestCodec.java
    jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java

Modified: jena/trunk/jena-tdb/ReleaseNotes.txt
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/ReleaseNotes.txt?rev=1420608&r1=1420607&r2=1420608&view=diff
==============================================================================
--- jena/trunk/jena-tdb/ReleaseNotes.txt (original)
+++ jena/trunk/jena-tdb/ReleaseNotes.txt Wed Dec 12 10:21:00 2012
@@ -1,8 +1,11 @@
 ChangeLog for TDB
 =================
 
-==== Jena 2.10.0
+==== TDB 0.10.0
 
+** TDB 0.10.0 depends on Jena 2.10.0 (ARQ 2.10.0)
+
++ JENA-363 : Fix to handling of integers with absolute values between 2^56 and 2^63.  
 + JENA-346 : Further fixes for default union graph + write transactions.
 + Consolidation of versions numbers.
 + JENA-344 : Union default graph now works for SPARQL Update WHERE clauses. 
@@ -18,7 +21,7 @@ ChangeLog for TDB
 + Bug fix: out-of-range derived integers (e.g. xsd:int)
 + Cache read transaction datastructures and reuse view when possible.
 + Add StoreConnection flush() operation to push delayed writer-commits if possible.    
-+ JENA-290 - TDB txn creation touched stats unnecessarily, causing slow down. 
++ JENA-290 : TDB txn creation touched stats unnecessarily, causing slow down. 
 
 ==== TDB 0.9.3
 

Modified: jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/IntegerNode.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/IntegerNode.java?rev=1420608&r1=1420607&r2=1420608&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/IntegerNode.java (original)
+++ jena/trunk/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/store/IntegerNode.java Wed Dec 12 10:21:00 2012
@@ -25,12 +25,12 @@ public class IntegerNode
     // 56 bits of value, including sign bit.
     public static int LEN = 56 ;
     public static int LBITS = Long.SIZE ;
-    public static long MAX = (1L<< (LEN-1) ) ;
-    public static long MIN = (1L<< (LEN-1) ) ;
+    public static long MAX = (1L<< (LEN-1) )-1;
+    public static long MIN = -(1L<< (LEN-1) ) ;
 
     public static long pack(long v) 
     {
-        if ( v < MIN || v > MAX )
+        if ( v >= MIN && v <= MAX )
         {
             v = BitsLong.clear(v, LEN, LBITS) ;
             v = NodeId.setType(v, NodeId.INTEGER) ;

Modified: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/nodetable/TestCodec.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/nodetable/TestCodec.java?rev=1420608&r1=1420607&r2=1420608&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/nodetable/TestCodec.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/nodetable/TestCodec.java Wed Dec 12 10:21:00 2012
@@ -55,7 +55,6 @@ public class TestCodec extends BaseTest 
                                         ) ;                                        
     }
 
-
     private Nodec nodec ;
     
     public TestCodec(Nodec nodec) { this.nodec = nodec ; }

Modified: jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java?rev=1420608&r1=1420607&r2=1420608&view=diff
==============================================================================
--- jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java (original)
+++ jena/trunk/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/store/TestNodeId.java Wed Dec 12 10:21:00 2012
@@ -23,6 +23,7 @@ import org.junit.Test ;
 
 import com.hp.hpl.jena.datatypes.xsd.XSDDatatype ;
 import com.hp.hpl.jena.graph.Node ;
+import com.hp.hpl.jena.sparql.expr.NodeValue ;
 import com.hp.hpl.jena.sparql.util.NodeFactory ;
 
 public class TestNodeId extends BaseTest
@@ -69,9 +70,33 @@ public class TestNodeId extends BaseTest
     // More than Long.MAX_VALUE
     { test("92233720368547758070",  (Node)null) ; }
 
+    // On the edge.
+    
+    static long X = 1L<<55 ;        // Just too large 
+    static long Y = -((1L<<55) +1) ;   // Just too small 
+    
     @Test public void nodeId_int_10()
+    { test("\""+Long.toString(X)+"\"^^xsd:integer",  (Node)null) ; }
+
+    @Test public void nodeId_int_11()
+    { 
+        Node n = NodeValue.makeInteger(X-1).asNode() ;
+        test("\""+Long.toString(X-1)+"\"^^xsd:integer",  n) ; 
+    }
+
+    @Test public void nodeId_int_12()
+    { test("\""+Long.toString(Y)+"\"^^xsd:integer",  (Node)null) ; }
+
+    @Test public void nodeId_int_13()
+    { 
+        Node n = NodeValue.makeInteger(Y+1).asNode() ;
+        test("\""+Long.toString(Y+1)+"\"^^xsd:integer",  n) ; 
+    }
+
+    @Test public void nodeId_int_20()
     { test("'300'^^xsd:byte",  (Node)null) ; }
     
+
     @Test public void nodeId_decimal_1()
     { test("3.14", NodeFactory.parseNode("3.14")) ; }