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);
}
/**