diff --git a/src/main/java/com/avaje/ebean/config/DbMigrationConfig.java b/src/main/java/com/avaje/ebean/config/DbMigrationConfig.java
index 64dc48c2f..4356058a2 100644
--- a/src/main/java/com/avaje/ebean/config/DbMigrationConfig.java
+++ b/src/main/java/com/avaje/ebean/config/DbMigrationConfig.java
@@ -23,11 +23,6 @@ public class DbMigrationConfig {
*/
protected boolean generate;
- /**
- * Set to true to suppress the output of the rollback script.
- */
- protected boolean suppressRollback;
-
/**
* The migration version name (typically FlywayDb compatible).
*
@@ -61,21 +56,8 @@ public class DbMigrationConfig {
*/
protected String modelPath = "model";
- /**
- * Subdirectory the rollback ddl scripts go into.
- */
- protected String rollbackPath = "rollback";
-
- /**
- * Apply script suffix.
- */
protected String applySuffix = ".sql";
- /**
- * Default rollback script suffix to ddl so that it isn't picked up by FlywayDb.
- */
- protected String rollbackSuffix = ".rollback.ddl";
-
protected String modelSuffix = ".model.xml";
protected boolean includeGeneratedFileComment;
@@ -135,20 +117,6 @@ public class DbMigrationConfig {
this.modelPath = modelPath;
}
- /**
- * Return the relative path for the rollback ddl scripts (defaults to rollback).
- */
- public String getRollbackPath() {
- return rollbackPath;
- }
-
- /**
- * Set the relative path for the rollback ddl scripts (defaults to rollback).
- */
- public void setRollbackPath(String rollbackPath) {
- this.rollbackPath = rollbackPath;
- }
-
/**
* Return the model suffix (defaults to model.xml)
*/
@@ -163,20 +131,6 @@ public class DbMigrationConfig {
this.modelSuffix = modelSuffix;
}
- /**
- * Return true if the rollback script should not be output.
- */
- public boolean isSuppressRollback() {
- return suppressRollback;
- }
-
- /**
- * Set to true to suppress the output of the rollback script.
- */
- public void setSuppressRollback(boolean suppressRollback) {
- this.suppressRollback = suppressRollback;
- }
-
/**
* Return the apply script suffix (defaults to sql).
*/
@@ -191,20 +145,6 @@ public class DbMigrationConfig {
this.applySuffix = applySuffix;
}
- /**
- * Return the rollback script suffix (defaults to ddl so that it isn't picked up by FlywayDb).
- */
- public String getRollbackSuffix() {
- return rollbackSuffix;
- }
-
- /**
- * Set the rollback script suffix (defaults to ddl so that it isn't picked up by FlywayDb).
- */
- public void setRollbackSuffix(String rollbackSuffix) {
- this.rollbackSuffix = rollbackSuffix;
- }
-
/**
* Return true if the generated file comment should be included.
*/
@@ -256,7 +196,6 @@ public class DbMigrationConfig {
* into a single directory.
*/
public void singleDirectory() {
- this.rollbackPath = "";
this.modelPath = "";
}
@@ -270,16 +209,13 @@ public class DbMigrationConfig {
singleDirectory();
} else {
modelPath = properties.get("migration.modelPath", modelPath);
- rollbackPath = properties.get("migration.rollbackPath", rollbackPath);
}
applySuffix = properties.get("migration.applySuffix", applySuffix);
- rollbackSuffix = properties.get("migration.rollbackSuffix", rollbackSuffix);
modelSuffix = properties.get("migration.modelSuffix", modelSuffix);
includeGeneratedFileComment = properties.getBoolean("migration.includeGeneratedFileComment", includeGeneratedFileComment);
generatePendingDrop = properties.get("migration.generatePendingDrop", generatePendingDrop);
platform = properties.getEnum(DbPlatformName.class, "migration.platform", platform);
- suppressRollback = properties.getBoolean("migration.suppressRollback", suppressRollback);
generate = properties.getBoolean("migration.generate", generate);
version = properties.get("migration.version", version);
diff --git a/src/main/java/com/avaje/ebean/dbmigration/DdlGenerator.java b/src/main/java/com/avaje/ebean/dbmigration/DdlGenerator.java
index 8a6449670..824ef7e63 100644
--- a/src/main/java/com/avaje/ebean/dbmigration/DdlGenerator.java
+++ b/src/main/java/com/avaje/ebean/dbmigration/DdlGenerator.java
@@ -2,7 +2,6 @@ package com.avaje.ebean.dbmigration;
import com.avaje.ebean.config.ServerConfig;
import com.avaje.ebean.dbmigration.model.CurrentModel;
-import com.avaje.ebeaninternal.api.SpiEbeanPlugin;
import com.avaje.ebeaninternal.api.SpiEbeanServer;
import javax.persistence.PersistenceException;
@@ -30,8 +29,8 @@ public class DdlGenerator {
private final boolean createOnly;
private CurrentModel currentModel;
- private String dropContent;
- private String createContent;
+ private String dropAllContent;
+ private String createAllContent;
public DdlGenerator(SpiEbeanServer server, ServerConfig serverConfig) {
this.server = server;
@@ -84,18 +83,18 @@ public class DdlGenerator {
protected void runDropSql() throws IOException {
if (!createOnly) {
- if (dropContent == null) {
- dropContent = readFile(getDropFileName());
+ if (dropAllContent == null) {
+ dropAllContent = readFile(getDropFileName());
}
- runScript(true, dropContent, getDropFileName());
+ runScript(true, dropAllContent, getDropFileName());
}
}
protected void runCreateSql() throws IOException {
- if (createContent == null) {
- createContent = readFile(getCreateFileName());
+ if (createAllContent == null) {
+ createAllContent = readFile(getCreateFileName());
}
- runScript(false, createContent, getCreateFileName());
+ runScript(false, createAllContent, getCreateFileName());
}
protected void runInitSql() throws IOException {
@@ -132,8 +131,7 @@ public class DdlGenerator {
protected void writeDrop(String dropFile) {
try {
- String c = generateDropDdl();
- writeFile(dropFile, c);
+ writeFile(dropFile, generateDropAllDdl());
} catch (IOException e) {
throw new PersistenceException("Error generating Drop DDL", e);
}
@@ -142,28 +140,27 @@ public class DdlGenerator {
protected void writeCreate(String createFile) {
try {
- String c = generateCreateDdl();
- writeFile(createFile, c);
+ writeFile(createFile, generateCreateAllDdl());
} catch (IOException e) {
throw new PersistenceException("Error generating Create DDL", e);
}
}
- protected String generateDropDdl() {
+ protected String generateDropAllDdl() {
try {
- dropContent = currentModel().getDropDdl();
- return dropContent;
+ dropAllContent = currentModel().getDropAllDdl();
+ return dropAllContent;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
- protected String generateCreateDdl() {
+ protected String generateCreateAllDdl() {
try {
- createContent = currentModel().getCreateDdl();
- return createContent;
+ createAllContent = currentModel().getCreateDdl();
+ return createAllContent;
} catch (IOException e) {
throw new RuntimeException(e);
}
diff --git a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/DdlWrite.java b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/DdlWrite.java
index 53a469213..e0a6bae94 100644
--- a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/DdlWrite.java
+++ b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/DdlWrite.java
@@ -10,11 +10,6 @@ import com.avaje.ebean.dbmigration.model.ModelContainer;
*/
public class DdlWrite {
- public enum Mode {
- APPLY,
- ROLLBACK
- }
-
private final ModelContainer currentModel;
private final DdlBuffer applyDropDependencies;
@@ -25,11 +20,9 @@ public class DdlWrite {
private final DdlBuffer applyHistory;
- private final DdlBuffer rollbackDropDependencies;
+ private final DdlBuffer dropAllForeignKeys;
- private final DdlBuffer rollbackForeignKeys;
-
- private final DdlBuffer rollback;
+ private final DdlBuffer dropAll;
/**
* Create without any configuration or current model (no history support).
@@ -47,9 +40,8 @@ public class DdlWrite {
this.apply = new BaseDdlBuffer(configuration);
this.applyForeignKeys = new BaseDdlBuffer(configuration);
this.applyHistory = new BaseDdlBuffer(configuration);
- this.rollbackDropDependencies = new BaseDdlBuffer(configuration);
- this.rollbackForeignKeys = new BaseDdlBuffer(configuration);
- this.rollback = new BaseDdlBuffer(configuration);
+ this.dropAllForeignKeys = new BaseDdlBuffer(configuration);
+ this.dropAll = new BaseDdlBuffer(configuration);
}
/**
@@ -73,52 +65,6 @@ public class DdlWrite {
&& applyDropDependencies.getBuffer().isEmpty();
}
- /**
- * Return true if the apply rollback buffers are all empty.
- */
- public boolean isApplyRollbackEmpty() {
- return rollback.getBuffer().isEmpty()
- && rollbackForeignKeys.getBuffer().isEmpty()
- && rollbackDropDependencies.getBuffer().isEmpty();
- }
-
- /**
- * Return the apply or rollback buffer.
- */
- public DdlBuffer buffer(Mode mode) {
- switch (mode) {
- case APPLY: return apply();
- case ROLLBACK: return rollback();
- default:
- throw new IllegalStateException("Invalid mode" + mode);
- }
- }
-
- /**
- * Return the apply or rollback buffer.
- */
- public DdlBuffer historyBuffer(Mode mode) {
- switch (mode) {
- case APPLY: return applyHistory();
- case ROLLBACK: return rollback();
- default:
- throw new IllegalStateException("Invalid mode" + mode);
- }
- }
-
- /**
- * Return the apply or rollback drop dependencies buffer.
- */
- public DdlBuffer dropDependencies(Mode mode) {
-
- switch (mode) {
- case APPLY: return applyDropDependencies();
- case ROLLBACK: return rollbackDropDependencies();
- default:
- throw new IllegalStateException("Invalid mode" + mode);
- }
- }
-
/**
* Return the buffer that APPLY DDL is written to.
*/
@@ -151,32 +97,17 @@ public class DdlWrite {
}
/**
- * Return the buffer that rollback executes early to drop dependencies like views.
+ * Return the buffer used for the 'drop all DDL' for dropping foreign keys and associated indexes.
*/
- public DdlBuffer rollbackDropDependencies() {
- return rollbackDropDependencies;
+ public DdlBuffer dropAllForeignKeys() {
+ return dropAllForeignKeys;
}
/**
- * Return the buffer that ROLLBACK DDL is written to for foreign keys and associated indexes.
+ * Return the buffer used for the 'drop all DDL' to drop tables, views and history triggers etc.
*/
- public DdlBuffer rollbackForeignKeys() {
- return rollbackForeignKeys;
- }
-
- /**
- * Return the buffer that ROLLBACK DDL is written to which is considered safe to run when
- * apply changes fail to execute. This will reverse the apply changes typically dropping
- * newly created tables, foreign keys etc.
- *
- * When apply changes are made against DB's that support transactional DDL you could argue
- * that these rollback statements are not necessary.
- *
- * Note that statements added to this rollback buffer are executed after foreign key rollback
- * has been executed.
- */
- public DdlBuffer rollback() {
- return rollback;
+ public DdlBuffer dropAll() {
+ return dropAll;
}
}
diff --git a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/BaseTableDdl.java b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/BaseTableDdl.java
index 59a8f67d1..eda88007a 100644
--- a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/BaseTableDdl.java
+++ b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/BaseTableDdl.java
@@ -140,7 +140,7 @@ public class BaseTableDdl implements TableDdl {
// add drop table to the rollback buffer - do this before
// we drop the related sequence (if sequences are used)
- dropTable(writer.rollback(), tableName);
+ dropTable(writer.dropAll(), tableName);
if (useSequence) {
String pkCol = pk.get(0).getName();
@@ -149,7 +149,7 @@ public class BaseTableDdl implements TableDdl {
// add blank line for a bit of whitespace between tables
apply.end();
- writer.rollback().end();
+ writer.dropAll().end();
writeAddForeignKeys(writer, createTable);
@@ -204,7 +204,7 @@ public class BaseTableDdl implements TableDdl {
.append(platformDdl.alterTableAddUniqueConstraint(tableName, uqName, columnNames))
.endOfStatement();
- write.rollbackForeignKeys()
+ write.dropAllForeignKeys()
.append(platformDdl.dropIndex(uqName, tableName))
.endOfStatement();
}
@@ -225,7 +225,7 @@ public class BaseTableDdl implements TableDdl {
String createSeq = platformDdl.createSequence(seqName, initial, allocate);
if (createSeq != null) {
writer.apply().append(createSeq).newLine();
- writer.rollback().append(platformDdl.dropSequence(seqName)).endOfStatement();
+ writer.dropAll().append(platformDdl.dropSequence(seqName)).endOfStatement();
}
}
@@ -295,15 +295,15 @@ public class BaseTableDdl implements TableDdl {
fkeyBuffer.end();
- write.rollbackForeignKeys()
+ write.dropAllForeignKeys()
.append(platformDdl.alterTableDropForeignKey(tableName, fkName)).endOfStatement();
if (indexName != null) {
- write.rollbackForeignKeys()
+ write.dropAllForeignKeys()
.append(platformDdl.dropIndex(indexName, tableName)).endOfStatement();
}
- write.rollbackForeignKeys().end();
+ write.dropAllForeignKeys().end();
}
@@ -471,7 +471,7 @@ public class BaseTableDdl implements TableDdl {
.append(platformDdl.createIndex(createIndex.getIndexName(), createIndex.getTableName(), cols))
.endOfStatement();
- writer.rollback()
+ writer.dropAll()
.append(platformDdl.dropIndex(createIndex.getIndexName(), createIndex.getTableName()))
.endOfStatement();
}
@@ -520,7 +520,6 @@ public class BaseTableDdl implements TableDdl {
List columns = addColumn.getColumn();
for (Column column : columns) {
alterTableAddColumn(writer.apply(), tableName, column, false);
- alterTableDropColumn(writer.rollback(), tableName, column.getName());
}
if (isTrue(addColumn.isWithHistory())) {
@@ -529,13 +528,11 @@ public class BaseTableDdl implements TableDdl {
for (Column column : columns) {
regenerateHistoryTriggers(tableName, HistoryTableUpdate.Change.ADD, column.getName());
alterTableAddColumn(writer.apply(), historyTable, column, true);
- alterTableDropColumn(writer.rollback(), historyTable, column.getName());
}
}
// add a bit of whitespace
writer.apply().end();
- writer.rollback().end();
}
/**
@@ -642,21 +639,6 @@ public class BaseTableDdl implements TableDdl {
if (hasValue(ddl)) {
writer.apply().append(ddl).endOfStatement();
- // reverse and generate the rollback statement
- String currentType = alter.getCurrentType();
- String type = alter.getType();
- Boolean currentNotnull = alter.isCurrentNotnull();
- Boolean notnull = alter.isNotnull();
-
- alter.setCurrentType(type);
- alter.setType(currentType);
- alter.setNotnull(currentNotnull);
- alter.setCurrentNotnull(notnull);
-
- // write the rollback
- ddl = platformDdl.alterColumnBaseAttributes(alter);
- writer.rollback().append(ddl).endOfStatement();
-
if (isTrue(alter.isWithHistory()) && alter.getType() != null) {
// mysql and sql server column type change allowing nulls in the history table column
AlterColumn alterHistoryColumn = new AlterColumn();
@@ -667,11 +649,6 @@ public class BaseTableDdl implements TableDdl {
// write the apply to history table
writer.apply().append(histColumnDdl).endOfStatement();
-
- // write the rollback from history table
- alterHistoryColumn.setType(currentType);
- histColumnDdl = platformDdl.alterColumnBaseAttributes(alterHistoryColumn);
- writer.rollback().append(histColumnDdl).endOfStatement();
}
}
}
@@ -689,8 +666,6 @@ public class BaseTableDdl implements TableDdl {
String ddl = platformDdl.alterColumnNotnull(alter.getTableName(), alter.getColumnName(), alter.isNotnull());
if (hasValue(ddl)) {
writer.apply().append(ddl).endOfStatement();
- ddl = platformDdl.alterColumnNotnull(alter.getTableName(), alter.getColumnName(), alter.isCurrentNotnull());
- writer.rollback().append(ddl).endOfStatement();
}
}
@@ -699,14 +674,10 @@ public class BaseTableDdl implements TableDdl {
String ddl = platformDdl.alterColumnType(alter.getTableName(), alter.getColumnName(), alter.getType());
if (hasValue(ddl)) {
writer.apply().append(ddl).endOfStatement();
- ddl = platformDdl.alterColumnType(alter.getTableName(), alter.getColumnName(), alter.getCurrentType());
- writer.rollback().append(ddl).endOfStatement();
if (isTrue(alter.isWithHistory())) {
// apply same type change to matching column in the history table
ddl = platformDdl.alterColumnType(historyTable(alter.getTableName()), alter.getColumnName(), alter.getType());
writer.apply().append(ddl).endOfStatement();
- ddl = platformDdl.alterColumnType(historyTable(alter.getTableName()), alter.getColumnName(), alter.getCurrentType());
- writer.rollback().append(ddl).endOfStatement();
}
}
}
@@ -762,7 +733,7 @@ public class BaseTableDdl implements TableDdl {
.append(platformDdl.alterTableAddUniqueConstraint(alter.getTableName(), uqName, cols))
.endOfStatement();
- writer.rollbackForeignKeys()
+ writer.dropAllForeignKeys()
.append(platformDdl.dropIndex(uqName, alter.getTableName()))
.endOfStatement();
}
diff --git a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java
index f6925cc55..2badee180 100644
--- a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java
+++ b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java
@@ -69,31 +69,17 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl {
*/
protected void updateTriggers(DdlWrite writer, MTable table, HistoryTableUpdate update) throws IOException {
- DbTriggerUpdate triggerUpdate = createDbTriggerUpdate(writer, table);
+ writer.applyHistory().append("-- changes: ").append(update.description()).newLine();
- String description = update.description();
- List includedColumns = columnNamesForApply(table);
-
- DdlBuffer apply = writer.applyHistory();
- apply.append("-- changes: ").append(description).newLine();
-
- triggerUpdate.prepare(DdlWrite.Mode.APPLY, includedColumns);
- updateHistoryTriggers(triggerUpdate);
-
- // put a reverted version into the rollback buffer
- update.toRevertedColumns(includedColumns);
-
- DdlBuffer rollback = writer.rollback();
- rollback.append("-- revert changes: ").append(description).newLine();
-
- triggerUpdate.prepare(DdlWrite.Mode.ROLLBACK, includedColumns);
- updateHistoryTriggers(triggerUpdate);
+ updateHistoryTriggers(createDbTriggerUpdate(writer, table));
}
protected DbTriggerUpdate createDbTriggerUpdate(DdlWrite writer, MTable table) {
+
+ List columns = columnNamesForApply(table);
String baseTableName = table.getName();
String historyTableName = historyTableName(baseTableName);
- return new DbTriggerUpdate(baseTableName, historyTableName, writer);
+ return new DbTriggerUpdate(baseTableName, historyTableName, writer, columns);
}
@Override
@@ -124,9 +110,8 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl {
String baseTable = table.getName();
String whenCreatedColumn = table.getWhenCreatedColumn();
- // rollback changes in appropriate order
- dropTriggers(writer.rollback(), baseTable);
- dropHistoryTableEtc(writer.rollback(), baseTable);
+ dropTriggers(writer.dropAll(), baseTable);
+ dropHistoryTableEtc(writer.dropAll(), baseTable);
addHistoryTable(writer, table, whenCreatedColumn);
createStoredFunction(writer, table);
@@ -295,7 +280,7 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl {
* the column.
*
*/
- protected List columnNamesForApply(MTable table) throws IOException {
+ protected List columnNamesForApply(MTable table) {
return table.allHistoryColumns(true);
}
diff --git a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/DbTriggerUpdate.java b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/DbTriggerUpdate.java
index 6210224bc..41ddd2f0a 100644
--- a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/DbTriggerUpdate.java
+++ b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/DbTriggerUpdate.java
@@ -16,36 +16,27 @@ public class DbTriggerUpdate {
private final DdlWrite writer;
- private DdlWrite.Mode mode;
+ private final List columns;
- private List includedColumns;
-
- public DbTriggerUpdate(String baseTableName, String historyTableName, DdlWrite writer) {
+ public DbTriggerUpdate(String baseTableName, String historyTableName, DdlWrite writer, List columns) {
this.baseTableName = baseTableName;
this.historyTableName = historyTableName;
this.writer = writer;
- }
-
- /**
- * Prepare for use given the mode and columns included in history.
- */
- public void prepare(DdlWrite.Mode mode, List includedColumns) {
- this.mode = mode;
- this.includedColumns = includedColumns;
+ this.columns = columns;
}
/**
* Return the appropriate buffer for the current mode.
*/
public DdlBuffer historyBuffer() {
- return writer.historyBuffer(mode);
+ return writer.applyHistory();
}
/**
* Return the appropriate drop dependency buffer for the current mode.
*/
public DdlBuffer dropDependencyBuffer() {
- return writer.dropDependencies(mode);
+ return writer.applyDropDependencies();
}
/**
@@ -66,7 +57,7 @@ public class DbTriggerUpdate {
* Return the included columns.
*/
public List getColumns() {
- return includedColumns;
+ return columns;
}
}
diff --git a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/HistoryTableUpdate.java b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/HistoryTableUpdate.java
index a7f929b9c..8f743fc91 100644
--- a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/HistoryTableUpdate.java
+++ b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/HistoryTableUpdate.java
@@ -39,22 +39,6 @@ public class HistoryTableUpdate {
return change.name().toLowerCase()+" "+column;
}
- private void revert(List includedColumns) {
- switch (change) {
- case ADD:
- case INCLUDE: {
- includedColumns.remove(column);
- break;
- }
- case EXCLUDE:
- case DROP: {
- includedColumns.add(column);
- break;
- }
- default:
- throw new IllegalStateException("Unexpected change "+change);
- }
- }
}
private final String baseTable;
@@ -76,17 +60,6 @@ public class HistoryTableUpdate {
return columnChanges.toString();
}
- /**
- * Reverse the apply changes which equates to removing any newly added or
- * included columns.
- */
- public void toRevertedColumns(List includedColumns) {
-
- for (Column columnChange : columnChanges) {
- columnChange.revert(includedColumns);
- }
- }
-
/**
* Add a comment for column added, dropped, included or excluded.
*/
diff --git a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/MySqlHistoryDdl.java b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/MySqlHistoryDdl.java
index d42579d46..9de3ccf49 100644
--- a/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/MySqlHistoryDdl.java
+++ b/src/main/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/MySqlHistoryDdl.java
@@ -27,8 +27,6 @@ public class MySqlHistoryDdl extends DbTriggerBasedHistoryDdl {
DbTriggerUpdate update = createDbTriggerUpdate(writer, table);
- update.prepare(DdlWrite.Mode.APPLY, columnNamesForApply(table));
-
addBeforeUpdate(updateTriggerName(update.getBaseTable()), update);
addBeforeDelete(deleteTriggerName(update.getBaseTable()), update);
}
diff --git a/src/main/java/com/avaje/ebean/dbmigration/model/CurrentModel.java b/src/main/java/com/avaje/ebean/dbmigration/model/CurrentModel.java
index c0016cc7f..645007ff1 100644
--- a/src/main/java/com/avaje/ebean/dbmigration/model/CurrentModel.java
+++ b/src/main/java/com/avaje/ebean/dbmigration/model/CurrentModel.java
@@ -117,13 +117,13 @@ public class CurrentModel {
/**
* Return the 'Drop' DDL.
*/
- public String getDropDdl() throws IOException {
+ public String getDropAllDdl() throws IOException {
createDdl();
StringBuilder ddl = new StringBuilder(2000);
- ddl.append(write.rollbackForeignKeys().getBuffer());
- ddl.append(write.rollback().getBuffer());
+ ddl.append(write.dropAllForeignKeys().getBuffer());
+ ddl.append(write.dropAll().getBuffer());
return ddl.toString();
}
diff --git a/src/main/java/com/avaje/ebean/dbmigration/model/PlatformDdlWriter.java b/src/main/java/com/avaje/ebean/dbmigration/model/PlatformDdlWriter.java
index 80aae772b..b98f8ff12 100644
--- a/src/main/java/com/avaje/ebean/dbmigration/model/PlatformDdlWriter.java
+++ b/src/main/java/com/avaje/ebean/dbmigration/model/PlatformDdlWriter.java
@@ -74,18 +74,7 @@ public class PlatformDdlWriter {
} finally {
applyWriter.close();
}
-
- if (!config.isSuppressRollback() && !write.isApplyRollbackEmpty()) {
- FileWriter applyRollbackWriter = createWriter(resourcePath, fullVersion, config.getRollbackPath(), config.getRollbackSuffix());
- try {
- writeApplyRollbackDdl(applyRollbackWriter, write);
- applyRollbackWriter.flush();
- } finally {
- applyRollbackWriter.close();
- }
- }
}
-
}
protected FileWriter createWriter(File path, String fullVersion, String subPath, String suffix) throws IOException {
@@ -123,18 +112,6 @@ public class PlatformDdlWriter {
writer.append(write.applyHistory().getBuffer());
}
- /**
- * Write the 'Rollback' DDL buffers to the writer.
- */
- protected void writeApplyRollbackDdl(Writer writer, DdlWrite write) throws IOException {
-
- // merge the rollback buffers in the appropriate order
- prependDropDependencies(writer, write.rollbackDropDependencies());
- writer.append("-- reverse changes\n");
- writer.append(write.rollbackForeignKeys().getBuffer());
- writer.append(write.rollback().getBuffer());
- }
-
private void prependDropDependencies(Writer writer, DdlBuffer buffer) throws IOException {
if (!buffer.isEmpty()) {
writer.append("-- drop dependencies\n");
diff --git a/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/BaseDdlHandlerTest.java b/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/BaseDdlHandlerTest.java
index 50c6a4635..1385654ae 100644
--- a/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/BaseDdlHandlerTest.java
+++ b/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/BaseDdlHandlerTest.java
@@ -35,7 +35,7 @@ public class BaseDdlHandlerTest extends BaseTestCase {
handler.generate(write, Helper.getAddColumn());
assertThat(write.apply().getBuffer()).isEqualTo("alter table foo add column added_to_foo varchar(20);\n\n");
- assertThat(write.rollback().getBuffer()).isEqualTo("alter table foo drop column added_to_foo;\n\n");
+ assertThat(write.dropAll().getBuffer()).isEqualTo("");
}
@Test
@@ -47,7 +47,7 @@ public class BaseDdlHandlerTest extends BaseTestCase {
handler.generate(write, Helper.getDropColumn());
assertThat(write.apply().getBuffer()).isEqualTo("alter table foo drop column col2;\n\n");
- assertThat(write.rollback().getBuffer()).isEqualTo("");
+ assertThat(write.dropAll().getBuffer()).isEqualTo("");
}
@@ -62,7 +62,7 @@ public class BaseDdlHandlerTest extends BaseTestCase {
String createTableDDL = Helper.asText(this, "/assert/create-table.txt");
assertThat(write.apply().getBuffer()).isEqualTo(createTableDDL);
- assertThat(write.rollback().getBuffer().trim()).isEqualTo("drop table if exists foo;\ndrop sequence if exists foo_seq;");
+ assertThat(write.dropAll().getBuffer().trim()).isEqualTo("drop table if exists foo;\ndrop sequence if exists foo_seq;");
}
@Test
@@ -74,10 +74,10 @@ public class BaseDdlHandlerTest extends BaseTestCase {
handler.generate(write, Helper.getChangeSet());
String apply = Helper.asText(this, "/assert/BaseDdlHandlerTest/apply.sql");
- String rollbackLast = Helper.asText(this, "/assert/BaseDdlHandlerTest/rollback.sql");
+ String rollbackLast = Helper.asText(this, "/assert/BaseDdlHandlerTest/drop-all.sql");
assertThat(write.apply().getBuffer()).isEqualTo(apply);
- assertThat(write.rollback().getBuffer()).isEqualTo(rollbackLast);
+ assertThat(write.dropAll().getBuffer()).isEqualTo(rollbackLast);
}
@@ -95,10 +95,10 @@ public class BaseDdlHandlerTest extends BaseTestCase {
handler.generate(write, createChangeSet);
String apply = Helper.asText(this, "/assert/changeset-apply.txt");
- String rollbackLast = Helper.asText(this, "/assert/changeset-rollback.txt");
+ String rollbackLast = Helper.asText(this, "/assert/changeset-dropAll.txt");
assertThat(write.apply().getBuffer()).isEqualTo(apply);
- assertThat(write.rollback().getBuffer()).isEqualTo(rollbackLast);
+ assertThat(write.dropAll().getBuffer()).isEqualTo(rollbackLast);
}
@Ignore
@@ -121,8 +121,8 @@ public class BaseDdlHandlerTest extends BaseTestCase {
assertThat(write.apply().getBuffer()).isEqualTo(apply);
assertThat(write.applyForeignKeys().getBuffer()).isEqualTo(applyLast);
- assertThat(write.rollbackForeignKeys().getBuffer()).isEqualTo(rollbackFirst);
- assertThat(write.rollback().getBuffer()).isEqualTo(rollbackLast);
+ assertThat(write.dropAllForeignKeys().getBuffer()).isEqualTo(rollbackFirst);
+ assertThat(write.dropAll().getBuffer()).isEqualTo(rollbackLast);
}
}
\ No newline at end of file
diff --git a/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java b/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java
index 94379538f..af6d87fb6 100644
--- a/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java
+++ b/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java
@@ -29,8 +29,8 @@ public class BaseTableDdlTest {
String apply = write.apply().getBuffer();
String applyLast = write.applyForeignKeys().getBuffer();
- String rollbackFirst = write.rollbackForeignKeys().getBuffer();
- String rollbackLast = write.rollback().getBuffer();
+ String rollbackFirst = write.dropAllForeignKeys().getBuffer();
+ String rollbackLast = write.dropAll().getBuffer();
assertThat(apply).isEqualTo(Helper.asText(this, "/assert/BaseTableDdlTest/createTable-apply.txt"));
assertThat(applyLast).isEqualTo(Helper.asText(this, "/assert/BaseTableDdlTest/createTable-applyLast.txt"));
diff --git a/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/H2HistoryDdlTest.java b/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/H2HistoryDdlTest.java
index 341bcea43..641e67ce1 100644
--- a/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/H2HistoryDdlTest.java
+++ b/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/H2HistoryDdlTest.java
@@ -35,7 +35,7 @@ public class H2HistoryDdlTest {
assertThat(write.applyHistory().isEmpty()).isFalse();
assertThat(write.applyHistory().getBuffer()).contains("add one");
- assertThat(write.rollback().isEmpty()).isFalse();
+ assertThat(write.dropAll().isEmpty()).isTrue();
}
}
\ No newline at end of file
diff --git a/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/HistoryTableUpdateTest.java b/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/HistoryTableUpdateTest.java
index b7f9927c2..6864e0383 100644
--- a/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/HistoryTableUpdateTest.java
+++ b/src/test/java/com/avaje/ebean/dbmigration/ddlgeneration/platform/HistoryTableUpdateTest.java
@@ -2,61 +2,11 @@ package com.avaje.ebean.dbmigration.ddlgeneration.platform;
import org.junit.Test;
-import java.util.ArrayList;
-import java.util.List;
-
import static org.assertj.core.api.Assertions.assertThat;
public class HistoryTableUpdateTest {
- @Test
- public void testToRevertedColumns_add() throws Exception {
-
- HistoryTableUpdate upd = new HistoryTableUpdate("mytab");
- assertThat(upd.getBaseTable()).isEqualTo("mytab");
-
- upd.add(HistoryTableUpdate.Change.ADD, "two");
-
- List current = current();
- upd.toRevertedColumns(current);
- assertThat(current).contains("one","three");
- }
-
- @Test
- public void testToRevertedColumns_include() throws Exception {
-
- HistoryTableUpdate upd = new HistoryTableUpdate("mytab");
- upd.add(HistoryTableUpdate.Change.INCLUDE, "two");
-
- List current = current();
- upd.toRevertedColumns(current);
- assertThat(current).contains("one","three");
- }
-
- @Test
- public void testToRevertedColumns_drop() throws Exception {
-
- HistoryTableUpdate upd = new HistoryTableUpdate("mytab");
- upd.add(HistoryTableUpdate.Change.DROP, "three");
-
- List current = current();
- upd.toRevertedColumns(current);
- assertThat(current).contains("one","two","three");
- }
-
- @Test
- public void testToRevertedColumns_exclude() throws Exception {
-
- HistoryTableUpdate upd = new HistoryTableUpdate("mytab");
- upd.add(HistoryTableUpdate.Change.EXCLUDE, "four");
-
- List current = current();
- upd.toRevertedColumns(current);
- assertThat(current).contains("one","two","three","four");
- }
-
-
@Test
public void testDescription() throws Exception {
@@ -79,12 +29,4 @@ public class HistoryTableUpdateTest {
assertThat(upd.description()).isEqualTo("[add two, include five, exclude six, drop four]");
}
- List current() {
-
- List currentColumns = new ArrayList();
- currentColumns.add("one");
- currentColumns.add("two");
- currentColumns.add("three");
- return currentColumns;
- }
}
\ No newline at end of file
diff --git a/src/test/resources/assert/BaseDdlHandlerTest/rollback.sql b/src/test/resources/assert/BaseDdlHandlerTest/rollback.sql
deleted file mode 100644
index 390171b82..000000000
--- a/src/test/resources/assert/BaseDdlHandlerTest/rollback.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-drop table if exists foo;
-drop sequence if exists foo_seq;
-
-alter table foo drop column added_to_foo;
-
diff --git a/src/test/resources/assert/changeset-rollback.txt b/src/test/resources/assert/changeset-dropAll.txt
similarity index 100%
rename from src/test/resources/assert/changeset-rollback.txt
rename to src/test/resources/assert/changeset-dropAll.txt