You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by rv...@apache.org on 2013/05/29 22:46:24 UTC

svn commit: r1487637 - in /jena/Experimental/jena-jdbc: jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/ jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/ jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/ jena-jdbc-driver-...

Author: rvesse
Date: Wed May 29 20:46:24 2013
New Revision: 1487637

URL: http://svn.apache.org/r1487637
Log:
Make TDB connection default to HOLD_CURSORS_OVER_COMMIT as not doing so leads to weird transaction interactions, fix for use of previous() in MaterializedResults

Modified:
    jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/MaterializedResults.java
    jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbDiskConnection.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbMemConnection.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java
    jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java

Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/MaterializedResults.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/MaterializedResults.java?rev=1487637&r1=1487636&r2=1487637&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/MaterializedResults.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/main/java/org/apache/jena/jdbc/results/MaterializedResults.java Wed May 29 20:46:24 2013
@@ -309,6 +309,23 @@ public abstract class MaterializedResult
             }
         }
     }
+    
+    @Override
+    public final boolean previous() throws SQLException {
+        if (this.isClosed()) {
+            throw new SQLException("Cannot mvoe to the previous row in a closed result set");
+        } else {
+            if (this.hasPrevious()) {
+                this.currItem = this.movePrevious();
+                this.currRow--;
+                return true;
+            } else {
+                this.currItem = null;
+                this.currRow = 0;
+                return false;
+            }
+        }
+    }
 
     @Override
     public final boolean relative(int rows) throws SQLException {

Modified: jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java?rev=1487637&r1=1487636&r2=1487637&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-core/src/test/java/org/apache/jena/jdbc/results/AbstractResultSetTests.java Wed May 29 20:46:24 2013
@@ -923,4 +923,63 @@ public abstract class AbstractResultSetT
         rset.close();
         Assert.assertTrue(rset.isClosed());
     }
+    
+    /**
+     * Tests movement through SELECT results
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void test_results_select_movement_05() throws SQLException {
+        ResultSet rset = this.createResults(ds, "SELECT * { ?s ?p ?o . } LIMIT 1", ResultSet.TYPE_SCROLL_INSENSITIVE);
+        Assert.assertEquals(ResultSet.TYPE_SCROLL_INSENSITIVE, rset.getType());
+        Assert.assertNotNull(rset);
+        Assert.assertFalse(rset.isClosed());
+        Assert.assertTrue(rset.isBeforeFirst());
+        Assert.assertFalse(rset.isLast());
+        
+        // Expect exactly one row we can move to
+        Assert.assertTrue(rset.next());
+        Assert.assertFalse(rset.isAfterLast());
+        Assert.assertTrue(rset.isLast());
+        Assert.assertFalse(rset.next());
+
+        // Attempting to move backwards in a scrollable result set should result set should be fine
+        rset.beforeFirst();
+        Assert.assertTrue(rset.isBeforeFirst());
+
+        rset.close();
+        Assert.assertTrue(rset.isClosed());
+    }
+    
+    /**
+     * Tests movement through SELECT results
+     * 
+     * @throws SQLException
+     */
+    @Test
+    public void test_results_select_movement_06() throws SQLException {
+        ResultSet rset = this.createResults(ds, "SELECT * { ?s ?p ?o . } LIMIT 2", ResultSet.TYPE_SCROLL_INSENSITIVE);
+        Assert.assertEquals(ResultSet.TYPE_SCROLL_INSENSITIVE, rset.getType());
+        Assert.assertNotNull(rset);
+        Assert.assertFalse(rset.isClosed());
+        Assert.assertTrue(rset.isBeforeFirst());
+        Assert.assertFalse(rset.isLast());
+        
+        // Can move forwards to first row
+        Assert.assertTrue(rset.next());
+        Assert.assertTrue(rset.isFirst());
+        Assert.assertFalse(rset.isLast());
+        
+        // Then can move forwards to second row
+        Assert.assertTrue(rset.next());
+        Assert.assertTrue(rset.isLast());
+
+        // Can move backwards to previous row
+        Assert.assertTrue(rset.previous());
+        Assert.assertTrue(rset.isFirst());
+
+        rset.close();
+        Assert.assertTrue(rset.isClosed());
+    }
 }

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java?rev=1487637&r1=1487636&r2=1487637&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/main/java/org/apache/jena/jdbc/tdb/TDBDriver.java Wed May 29 20:46:24 2013
@@ -20,6 +20,7 @@ package org.apache.jena.jdbc.tdb;
 
 import java.io.File;
 import java.sql.DriverPropertyInfo;
+import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.List;
 import java.util.Properties;
@@ -133,7 +134,7 @@ public class TDBDriver extends JenaDrive
             Dataset tdb = useMem ? TDBFactory.createDataset() : TDBFactory.createDataset(location);
 
             // Return a new connection for the TDB dataset
-            return new TDBConnection(tdb, JenaConnection.DEFAULT_HOLDABILITY, true, compatibilityLevel);
+            return new TDBConnection(tdb, ResultSet.HOLD_CURSORS_OVER_COMMIT, true, compatibilityLevel);
         } catch (SQLException e) {
             throw e;
         } catch (Exception e) {

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbDiskConnection.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbDiskConnection.java?rev=1487637&r1=1487636&r2=1487637&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbDiskConnection.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbDiskConnection.java Wed May 29 20:46:24 2013
@@ -18,6 +18,7 @@
 
 package org.apache.jena.jdbc.tdb.connections;
 
+import java.sql.ResultSet;
 import java.sql.SQLException;
 
 import org.apache.jena.jdbc.JdbcCompatibility;
@@ -49,14 +50,14 @@ public class TestTdbDiskConnection exten
     @Override
     protected JenaConnection getConnection() throws SQLException {
         return new TDBConnection(TDBFactory.createDataset(tempDir.getRoot().getAbsolutePath()),
-                JenaConnection.DEFAULT_HOLDABILITY, JenaConnection.DEFAULT_AUTO_COMMIT, JdbcCompatibility.DEFAULT);
+                ResultSet.HOLD_CURSORS_OVER_COMMIT, JenaConnection.DEFAULT_AUTO_COMMIT, JdbcCompatibility.DEFAULT);
     }
 
     @Override
     protected JenaConnection getConnection(Dataset ds) throws SQLException {
         Dataset tdb = TDBFactory.createDataset(tempDir.getRoot().getAbsolutePath());
         TestUtils.copyDataset(ds, tdb, true);
-        return new TDBConnection(tdb, JenaConnection.DEFAULT_HOLDABILITY, JenaConnection.DEFAULT_AUTO_COMMIT,
+        return new TDBConnection(tdb, ResultSet.HOLD_CURSORS_OVER_COMMIT, JenaConnection.DEFAULT_AUTO_COMMIT,
                 JdbcCompatibility.DEFAULT);
     }
 

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbMemConnection.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbMemConnection.java?rev=1487637&r1=1487636&r2=1487637&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbMemConnection.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/connections/TestTdbMemConnection.java Wed May 29 20:46:24 2013
@@ -18,6 +18,7 @@
 
 package org.apache.jena.jdbc.tdb.connections;
 
+import java.sql.ResultSet;
 import java.sql.SQLException;
 
 import org.apache.jena.jdbc.JdbcCompatibility;
@@ -39,7 +40,7 @@ public class TestTdbMemConnection extend
 
     @Override
     protected JenaConnection getConnection() throws SQLException {
-        return new TDBConnection(TDBFactory.createDataset(), JenaConnection.DEFAULT_HOLDABILITY,
+        return new TDBConnection(TDBFactory.createDataset(), ResultSet.HOLD_CURSORS_OVER_COMMIT,
                 JenaConnection.DEFAULT_AUTO_COMMIT, JdbcCompatibility.DEFAULT);
     }
 
@@ -47,7 +48,7 @@ public class TestTdbMemConnection extend
     protected JenaConnection getConnection(Dataset ds) throws SQLException {
         Dataset tdb = TDBFactory.createDataset();
         TestUtils.copyDataset(ds, tdb, true);
-        return new TDBConnection(tdb, JenaConnection.DEFAULT_HOLDABILITY, JenaConnection.DEFAULT_AUTO_COMMIT,
+        return new TDBConnection(tdb, ResultSet.HOLD_CURSORS_OVER_COMMIT, JenaConnection.DEFAULT_AUTO_COMMIT,
                 JdbcCompatibility.DEFAULT);
     }
 

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java?rev=1487637&r1=1487636&r2=1487637&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/metadata/TestTdbConnectionMetadata.java Wed May 29 20:46:24 2013
@@ -19,6 +19,7 @@
 package org.apache.jena.jdbc.tdb.metadata;
 
 import java.sql.Connection;
+import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
@@ -39,7 +40,7 @@ public class TestTdbConnectionMetadata e
 
     @Override
     protected JenaConnection getConnection() throws SQLException {
-        return new TDBConnection(TDBFactory.createDataset(), JenaConnection.DEFAULT_HOLDABILITY,
+        return new TDBConnection(TDBFactory.createDataset(), ResultSet.HOLD_CURSORS_OVER_COMMIT,
                 JenaConnection.DEFAULT_AUTO_COMMIT, JdbcCompatibility.DEFAULT);
     }
 

Modified: jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java
URL: http://svn.apache.org/viewvc/jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java?rev=1487637&r1=1487636&r2=1487637&view=diff
==============================================================================
--- jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java (original)
+++ jena/Experimental/jena-jdbc/jena-jdbc-driver-tdb/src/test/java/org/apache/jena/jdbc/tdb/results/AbstractTdbResultSetTests.java Wed May 29 20:46:24 2013
@@ -45,6 +45,7 @@ public abstract class AbstractTdbResultS
     @BeforeClass
     public static void setup() throws SQLException {
         connection = new DebugTdbConnection();
+        connection.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT);
     }
 
     /**