diff --git a/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java b/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java index 445ec3d15..f5f865dfc 100644 --- a/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java @@ -577,7 +577,7 @@ public class DatabasePlatform { /** * Normally not needed - overridden in CockroachPlatform. */ - public boolean isDdlCommitOnCreateIndex() { + public boolean isDdlAutoCommit() { return false; } diff --git a/src/main/java/io/ebean/config/dbplatform/cockroach/CockroachPlatform.java b/src/main/java/io/ebean/config/dbplatform/cockroach/CockroachPlatform.java index 502e33cf6..91a627510 100644 --- a/src/main/java/io/ebean/config/dbplatform/cockroach/CockroachPlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/cockroach/CockroachPlatform.java @@ -21,7 +21,7 @@ public class CockroachPlatform extends PostgresPlatform { * Needs a commit after create index such that alter table add foreign key ... succeeds. */ @Override - public boolean isDdlCommitOnCreateIndex() { + public boolean isDdlAutoCommit() { return true; } diff --git a/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java b/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java index 338781f61..45282cd2d 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java +++ b/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java @@ -44,7 +44,7 @@ public class DdlGenerator { private final boolean extraDdl; private final boolean createOnly; private final boolean jaxbPresent; - private final boolean ddlCommitOnCreateIndex; + private final boolean ddlAutoCommit; private final String dbSchema; private final ScriptTransform scriptTransform; @@ -63,10 +63,10 @@ public class DdlGenerator { if (!serverConfig.getTenantMode().isDdlEnabled() && serverConfig.isDdlRun()) { log.warn("DDL can't be run on startup with TenantMode " + serverConfig.getTenantMode()); this.runDdl = false; - this.ddlCommitOnCreateIndex = false; + this.ddlAutoCommit = false; } else { this.runDdl = serverConfig.isDdlRun(); - this.ddlCommitOnCreateIndex = server.getDatabasePlatform().isDdlCommitOnCreateIndex(); + this.ddlAutoCommit = server.getDatabasePlatform().isDdlAutoCommit(); } this.scriptTransform = createScriptTransform(serverConfig.getMigrationConfig()); this.baseDir = initBaseDir(); @@ -160,13 +160,11 @@ public class DdlGenerator { DdlRunner runner = new DdlRunner(expectErrors, scriptName); try { - if (expectErrors) { + if (expectErrors || ddlAutoCommit) { connection.setAutoCommit(true); - } else if (ddlCommitOnCreateIndex) { - runner.setCommitOnCreateIndex(); } int count = runner.runAll(scriptTransform.transform(content), connection); - if (expectErrors) { + if (expectErrors || ddlAutoCommit) { connection.setAutoCommit(false); } connection.commit(); diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/CockroachDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/CockroachDdl.java index f1fa243ef..556fcd7dc 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/CockroachDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/CockroachDdl.java @@ -10,7 +10,6 @@ public class CockroachDdl extends PlatformDdl { public CockroachDdl(DatabasePlatform platform) { super(platform); - this.historyDdl = new PostgresHistoryDdl(); this.dropTableCascade = " cascade"; this.columnSetType = "type "; this.alterTableIfExists = "if exists "; diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java index a425cf9be..5a5583139 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java @@ -33,7 +33,7 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { protected String currentTimestamp = "now(6)"; protected String sysPeriodType = "datetime(6)"; - public DbTriggerBasedHistoryDdl() { + DbTriggerBasedHistoryDdl() { } @Override @@ -252,7 +252,6 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { } protected void appendColumnNames(DdlBuffer buffer, List columns, String columnPrefix) throws IOException { - for (int i = 0; i < columns.size(); i++) { if (i > 0) { buffer.append(", "); @@ -266,7 +265,6 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { * Append a single column to the buffer if it is not null. */ protected void appendColumnName(DdlBuffer buffer, String prefix, String columnName) throws IOException { - if (columnName != null) { buffer.append(prefix).append(columnName); } @@ -281,7 +279,6 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { *

*/ protected List columnNamesForApply(MTable table) { - return table.allHistoryColumns(true); } diff --git a/src/test/java/org/tests/transaction/TestCommitAndContinue.java b/src/test/java/org/tests/transaction/TestCommitAndContinue.java index 1dc705a3d..157a20056 100644 --- a/src/test/java/org/tests/transaction/TestCommitAndContinue.java +++ b/src/test/java/org/tests/transaction/TestCommitAndContinue.java @@ -21,7 +21,7 @@ public class TestCommitAndContinue extends BaseTestCase { @Test @Transactional - @IgnorePlatform({Platform.SQLSERVER, Platform.HSQLDB}) // they will dead lock + @IgnorePlatform({Platform.SQLSERVER, Platform.HSQLDB, Platform.COCKROACH}) // they will dead lock public void transactional_partialSuccess() { MnyB a = new MnyB("a100"); @@ -57,7 +57,7 @@ public class TestCommitAndContinue extends BaseTestCase { * The @Transactional is nicer to me. */ @Test - @IgnorePlatform({Platform.SQLSERVER, Platform.HSQLDB}) // they will dead lock + @IgnorePlatform({Platform.SQLSERVER, Platform.HSQLDB, Platform.COCKROACH}) // they will dead lock public void tryFinally_partialSuccess() { MnyB a = new MnyB("a100"); @@ -101,7 +101,7 @@ public class TestCommitAndContinue extends BaseTestCase { @Test @Transactional - @IgnorePlatform({Platform.SQLSERVER, Platform.HSQLDB}) // they will dead lock + @IgnorePlatform({Platform.SQLSERVER, Platform.HSQLDB, Platform.COCKROACH}) // they will dead lock public void transactional_partialSuccess_secondTransactionInsert() { MnyB a = new MnyB("a100"); diff --git a/src/test/resources/ebean.properties b/src/test/resources/ebean.properties index e5e709a90..45f5209aa 100644 --- a/src/test/resources/ebean.properties +++ b/src/test/resources/ebean.properties @@ -140,6 +140,10 @@ datasource.mysql.databaseUrl=jdbc:mysql://127.0.0.1:4306/unit #datasource.mysql.databaseUrl=jdbc:mysql://127.0.0.1:4306/test_ebean datasource.mysql.databaseDriver=com.mysql.cj.jdbc.Driver +datasource.cockroach.username=root +datasource.cockroach.password= +datasource.cockroach.url=jdbc:postgresql://localhost:26257/unit?sslmode=disable +datasource.cockroach.driver=org.postgresql.Driver datasource.oracle.username=test_ebean datasource.oracle.password=test