Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-11-20 08:38:46 +0000
committerEike Stepper2012-11-20 08:38:46 +0000
commit1daa7d658da13e0840a9bc27bcf38763ccbbe9c9 (patch)
treef8a511932a744d0e33a9f1d27aed75ba3b28ecc5 /plugins/org.eclipse.net4j.db.postgresql
parent1a41ff2e3e067f8278795487bdafc561d224ae6b (diff)
downloadcdo-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.java31
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;
+ }
+ }
}

Back to the top