Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2013-03-11 18:12:00 +0000
committerEike Stepper2013-03-11 18:12:00 +0000
commit22130bee60e57723c24b63a07a777f2e9eb9c614 (patch)
tree17126fd7ad4b152738c348c41c228aeeac330adb /plugins/org.eclipse.net4j.db
parent009e556a0fda4a93b878bbc7f99115f7f9e6b047 (diff)
downloadcdo-22130bee60e57723c24b63a07a777f2e9eb9c614.tar.gz
cdo-22130bee60e57723c24b63a07a777f2e9eb9c614.tar.xz
cdo-22130bee60e57723c24b63a07a777f2e9eb9c614.zip
[401763] Make CDO Server more robust against data dictionary changes
https://bugs.eclipse.org/bugs/show_bug.cgi?id=401763
Diffstat (limited to 'plugins/org.eclipse.net4j.db')
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBTransaction.java7
-rw-r--r--plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBTransaction.java33
2 files changed, 39 insertions, 1 deletions
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBTransaction.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBTransaction.java
index 42b19fa0f4..9a6f782469 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBTransaction.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/db/IDBTransaction.java
@@ -31,4 +31,11 @@ public interface IDBTransaction extends Closeable
public IDBSchemaTransaction openSchemaTransaction();
public IDBPreparedStatement prepareStatement(String sql, ReuseProbability reuseProbability);
+
+ public IDBPreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency,
+ ReuseProbability reuseProbability);
+
+ public void commit();
+
+ public void rollback();
}
diff --git a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBTransaction.java b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBTransaction.java
index c32d1592cc..c1ac7092e8 100644
--- a/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBTransaction.java
+++ b/plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBTransaction.java
@@ -21,6 +21,7 @@ import org.eclipse.net4j.util.CheckUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.NavigableMap;
@@ -95,6 +96,12 @@ public final class DBTransaction implements IDBTransaction
public IDBPreparedStatement prepareStatement(String sql, ReuseProbability reuseProbability)
{
+ return prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, reuseProbability);
+ }
+
+ public IDBPreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency,
+ ReuseProbability reuseProbability)
+ {
database.beginSchemaAccess(false);
DBPreparedStatement preparedStatement = cache.remove(sql);
@@ -102,7 +109,7 @@ public final class DBTransaction implements IDBTransaction
{
try
{
- PreparedStatement delegate = connection.prepareStatement(sql);
+ PreparedStatement delegate = connection.prepareStatement(sql, resultSetType, resultSetConcurrency);
preparedStatement = new DBPreparedStatement(this, sql, reuseProbability, delegate);
}
catch (SQLException ex)
@@ -159,4 +166,28 @@ public final class DBTransaction implements IDBTransaction
cache.clear();
}
+
+ public void commit()
+ {
+ try
+ {
+ connection.commit();
+ }
+ catch (SQLException ex)
+ {
+ throw new DBException("Problem during commit of " + this, ex);
+ }
+ }
+
+ public void rollback()
+ {
+ try
+ {
+ connection.rollback();
+ }
+ catch (SQLException ex)
+ {
+ throw new DBException("Problem during rollback of " + this, ex);
+ }
+ }
}

Back to the top