diff options
author | Eike Stepper | 2012-11-20 08:38:46 +0000 |
---|---|---|
committer | Eike Stepper | 2012-11-20 08:38:46 +0000 |
commit | 1daa7d658da13e0840a9bc27bcf38763ccbbe9c9 (patch) | |
tree | f8a511932a744d0e33a9f1d27aed75ba3b28ecc5 /plugins/org.eclipse.net4j.db.postgresql | |
parent | 1a41ff2e3e067f8278795487bdafc561d224ae6b (diff) | |
download | cdo-1daa7d658da13e0840a9bc27bcf38763ccbbe9c9.tar.gz cdo-1daa7d658da13e0840a9bc27bcf38763ccbbe9c9.tar.xz cdo-1daa7d658da13e0840a9bc27bcf38763ccbbe9c9.zip |
[394213] [DB] Postgres fails to create table when the database starts
empty
https://bugs.eclipse.org/bugs/show_bug.cgi?id=394213
Diffstat (limited to 'plugins/org.eclipse.net4j.db.postgresql')
-rw-r--r-- | plugins/org.eclipse.net4j.db.postgresql/src/org/eclipse/net4j/db/postgresql/PostgreSQLAdapter.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.db.postgresql/src/org/eclipse/net4j/db/postgresql/PostgreSQLAdapter.java b/plugins/org.eclipse.net4j.db.postgresql/src/org/eclipse/net4j/db/postgresql/PostgreSQLAdapter.java index 846fc50f95..d8e6ccaf5a 100644 --- a/plugins/org.eclipse.net4j.db.postgresql/src/org/eclipse/net4j/db/postgresql/PostgreSQLAdapter.java +++ b/plugins/org.eclipse.net4j.db.postgresql/src/org/eclipse/net4j/db/postgresql/PostgreSQLAdapter.java @@ -16,6 +16,8 @@ package org.eclipse.net4j.db.postgresql; import org.eclipse.net4j.db.DBType; import org.eclipse.net4j.db.IDBAdapter; import org.eclipse.net4j.db.ddl.IDBField; +import org.eclipse.net4j.db.ddl.IDBTable; +import org.eclipse.net4j.db.internal.postgresql.bundle.OM; import org.eclipse.net4j.spi.db.DBAdapter; import org.postgresql.ds.PGSimpleDataSource; @@ -24,6 +26,8 @@ import javax.sql.DataSource; import java.sql.Driver; import java.sql.SQLException; +import java.sql.Savepoint; +import java.sql.Statement; /** * A {@link IDBAdapter DB adapter} for <a href="http://www.postgresql.org/">PostgreSQL</a> databases. @@ -153,4 +157,31 @@ public class PostgreSQLAdapter extends DBAdapter return super.adaptType(type); } + + /** + * @since 4.1 + */ + @Override + protected void doCreateTable(IDBTable table, Statement statement) throws SQLException + { + Savepoint savepoint = statement.getConnection().setSavepoint(); + + try + { + super.doCreateTable(table, statement); + } + catch (SQLException ex) + { + try + { + statement.getConnection().rollback(savepoint); + } + catch (SQLException ex1) + { + OM.LOG.error(ex1); + } + + throw ex; + } + } } |