diff options
author | Eike Stepper | 2013-03-11 18:12:00 +0000 |
---|---|---|
committer | Eike Stepper | 2013-03-11 18:12:00 +0000 |
commit | 22130bee60e57723c24b63a07a777f2e9eb9c614 (patch) | |
tree | 17126fd7ad4b152738c348c41c228aeeac330adb /plugins/org.eclipse.net4j.db | |
parent | 009e556a0fda4a93b878bbc7f99115f7f9e6b047 (diff) | |
download | cdo-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.java | 7 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j.db/src/org/eclipse/net4j/internal/db/DBTransaction.java | 33 |
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); + } + } } |