diff --git a/ebean-api/src/main/java/io/ebean/config/BackgroundExecutorWrapper.java b/ebean-api/src/main/java/io/ebean/config/BackgroundExecutorWrapper.java new file mode 100644 index 000000000..306b7e88e --- /dev/null +++ b/ebean-api/src/main/java/io/ebean/config/BackgroundExecutorWrapper.java @@ -0,0 +1,42 @@ +package io.ebean.config; + +import java.util.concurrent.Callable; + +/** + * BackgroundExecutorWrapper that can be used to wrap tasks that are sent to background (i.e. an other thread). + * It should copy all neccessary thread-local variables. See {@link MdcBackgroundExecutorWrapper} for implementation details. + * + * @author Roland Praml, FOCONIS AG + */ +public interface BackgroundExecutorWrapper { + + /** + * Wrap the task with MDC context if defined. + */ + Callable wrap(Callable task); + + /** + * Wrap the task with MDC context if defined. + */ + Runnable wrap(Runnable task); + + /** + * Combines two wrappers by joining them. + */ + default BackgroundExecutorWrapper with(BackgroundExecutorWrapper inner) { + return new BackgroundExecutorWrapper() { + + @Override + public Runnable wrap(Runnable task) { + return BackgroundExecutorWrapper.this.wrap(inner.wrap(task)); + } + + @Override + public Callable wrap(Callable task) { + return BackgroundExecutorWrapper.this.wrap(inner.wrap(task)); + } + }; + + } + +} diff --git a/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java b/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java index 8042e32b6..cc5a31a3f 100644 --- a/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java +++ b/ebean-api/src/main/java/io/ebean/config/DatabaseConfig.java @@ -445,6 +445,7 @@ public class DatabaseConfig { private int backgroundExecutorSchedulePoolSize = 1; private int backgroundExecutorShutdownSecs = 30; + private BackgroundExecutorWrapper backgroundExecutorWrapper = new MdcBackgroundExecutorWrapper(); // defaults for the L2 bean caching @@ -1463,6 +1464,20 @@ public class DatabaseConfig { this.backgroundExecutorShutdownSecs = backgroundExecutorShutdownSecs; } + /** + * Return the background executor wrapper. + */ + public BackgroundExecutorWrapper getBackgroundExecutorWrapper() { + return backgroundExecutorWrapper; + } + + /** + * Sets the background executor wrapper. The wrapper is used when a task is sent to background and should copy the thread-locals. + */ + public void setBackgroundExecutorWrapper(BackgroundExecutorWrapper backgroundExecutorWrapper) { + this.backgroundExecutorWrapper = backgroundExecutorWrapper; + } + /** * Return the L2 cache default max size. */ @@ -2884,6 +2899,7 @@ public class DatabaseConfig { backgroundExecutorSchedulePoolSize = p.getInt("backgroundExecutorSchedulePoolSize", backgroundExecutorSchedulePoolSize); backgroundExecutorShutdownSecs = p.getInt("backgroundExecutorShutdownSecs", backgroundExecutorShutdownSecs); + backgroundExecutorWrapper = p.createInstance(BackgroundExecutorWrapper.class, "backgroundExecutorWrapper", backgroundExecutorWrapper); disableClasspathSearch = p.getBoolean("disableClasspathSearch", disableClasspathSearch); currentUserProvider = p.createInstance(CurrentUserProvider.class, "currentUserProvider", currentUserProvider); databasePlatform = p.createInstance(DatabasePlatform.class, "databasePlatform", databasePlatform); diff --git a/ebean-api/src/main/java/io/ebean/config/MdcBackgroundExecutorWrapper.java b/ebean-api/src/main/java/io/ebean/config/MdcBackgroundExecutorWrapper.java new file mode 100644 index 000000000..5a0fa7980 --- /dev/null +++ b/ebean-api/src/main/java/io/ebean/config/MdcBackgroundExecutorWrapper.java @@ -0,0 +1,50 @@ +package io.ebean.config; + +import java.util.Map; +import java.util.concurrent.Callable; + +import org.slf4j.MDC; + +public class MdcBackgroundExecutorWrapper implements BackgroundExecutorWrapper { + + + /** + * Wrap the task with MDC context if defined. + */ + @Override + public Callable wrap(Callable task) { + final Map map = MDC.getCopyOfContextMap(); + if (map == null) { + return task; + } else { + return () -> { + MDC.setContextMap(map); + try { + return task.call(); + } finally { + MDC.clear(); + } + }; + } + } + + /** + * Wrap the task with MDC context if defined. + */ + @Override + public Runnable wrap(Runnable task) { + final Map map = MDC.getCopyOfContextMap(); + if (map == null) { + return task; + } else { + return () -> { + MDC.setContextMap(map); + try { + task.run(); + } finally { + MDC.clear(); + } + }; + } + } +} diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java index 4009c9d49..a4565c3df 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultContainer.java @@ -1,5 +1,6 @@ package io.ebeaninternal.server.core; +import io.ebean.config.BackgroundExecutorWrapper; import io.ebean.config.ContainerConfig; import io.ebean.config.DatabaseConfig; import io.ebean.config.DatabaseConfigProvider; @@ -67,7 +68,8 @@ public final class DefaultContainer implements SpiContainer { String namePrefix = "ebean-" + config.getName(); int schedulePoolSize = config.getBackgroundExecutorSchedulePoolSize(); int shutdownSecs = config.getBackgroundExecutorShutdownSecs(); - return new DefaultBackgroundExecutor(schedulePoolSize, shutdownSecs, namePrefix); + BackgroundExecutorWrapper wrapper = config.getBackgroundExecutorWrapper(); + return new DefaultBackgroundExecutor(schedulePoolSize, shutdownSecs, namePrefix, wrapper); } /** diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java b/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java index d04348ba8..468f397ff 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutor.java @@ -1,70 +1,94 @@ package io.ebeaninternal.server.executor; import io.avaje.lang.NonNullApi; +import io.ebean.config.BackgroundExecutorWrapper; import io.ebeaninternal.api.SpiBackgroundExecutor; -import org.slf4j.MDC; -import java.util.Map; import java.util.concurrent.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * The default implementation of the BackgroundExecutor. */ @NonNullApi public final class DefaultBackgroundExecutor implements SpiBackgroundExecutor { + protected static final Logger logger = LoggerFactory.getLogger("io.ebean.BackgroundExecutor"); + private final ScheduledExecutorService schedulePool; private final DaemonExecutorService pool; + private final BackgroundExecutorWrapper wrapper; /** * Construct the default implementation of BackgroundExecutor. */ - public DefaultBackgroundExecutor(int schedulePoolSize, int shutdownWaitSeconds, String namePrefix) { + public DefaultBackgroundExecutor(int schedulePoolSize, int shutdownWaitSeconds, String namePrefix, BackgroundExecutorWrapper wrapper) { this.schedulePool = new DaemonScheduleThreadPool(schedulePoolSize, shutdownWaitSeconds, namePrefix + "-periodic-"); this.pool = new DaemonExecutorService(shutdownWaitSeconds, namePrefix); + this.wrapper = wrapper; + logger.debug("Created backgroundExecutor {} (schedulePoolSize={}, shutdownWaitSeconds={})", namePrefix, schedulePoolSize, shutdownWaitSeconds); } /** * Wrap the task with MDC context if defined. */ - Callable wrapMDC(Callable task) { - final Map map = MDC.getCopyOfContextMap(); - if (map == null) { + Callable wrap(Callable task) { + if (wrapper == null) { return task; } else { - return () -> { - MDC.setContextMap(map); - try { - return task.call(); - } finally { - MDC.clear(); - } - }; + return wrapper.wrap(task); } } /** * Wrap the task with MDC context if defined. */ - Runnable wrapMDC(Runnable task) { - final Map map = MDC.getCopyOfContextMap(); - if (map == null) { + Runnable wrap(Runnable task) { + if (wrapper == null) { return task; } else { - return () -> { - MDC.setContextMap(map); - try { + return wrapper.wrap(task); + } + } + + + /** + * Decorates a runnable by adding an exception handler and some timing metrics. + * This is used in methods that accepts a Runnable and return + * either void or ScheduledFuture, as there is + * normally no Future.get() call. + * + * Note: When submitting a Callable, you must check + * Future.get() for exceptions. + */ + private Runnable logExceptions(Runnable task) { + long queued = System.nanoTime(); + logger.trace("Queued {}", task); + return () -> { + try { + if (logger.isTraceEnabled()) { + long start = System.nanoTime(); + logger.trace("Start {} (delay time {} us)", task, (start - queued) / 1000L); + task.run(); + logger.trace("Stop {} (exec time {} us)", task, (System.nanoTime() - start) / 1000L); + } else { task.run(); - } finally { - MDC.clear(); } - }; - } + } catch (Throwable t) { + // log any exception here. Note they will not bubble up to the calling user + // unless Future.get() is checked. (Which is almost never done on scheduled + // background executions) + logger.error("Error while executing the task {}", task, t); + throw t; + } + }; } @Override public Future submit(Callable task) { - return pool.submit(wrapMDC(task)); + return pool.submit(wrap(task)); } /** @@ -72,48 +96,52 @@ public final class DefaultBackgroundExecutor implements SpiBackgroundExecutor { */ @Override public Future submit(Runnable task) { - return pool.submit(wrapMDC(task)); + return pool.submit(wrap(task)); } + @Override public void execute(Runnable task) { - submit(task); + submit(logExceptions(task)); } @Override public void executePeriodically(Runnable task, long delay, TimeUnit unit) { - schedulePool.scheduleWithFixedDelay(wrapMDC(task), delay, delay, unit); + schedulePool.scheduleWithFixedDelay(wrap(logExceptions(task)), delay, delay, unit); } @Override public void executePeriodically(Runnable task, long initialDelay, long delay, TimeUnit unit) { - schedulePool.scheduleWithFixedDelay(wrapMDC(task), initialDelay, delay, unit); + schedulePool.scheduleWithFixedDelay(wrap(logExceptions(task)), initialDelay, delay, unit); } @Override public ScheduledFuture scheduleWithFixedDelay(Runnable task, long initialDelay, long delay, TimeUnit unit) { - return schedulePool.scheduleWithFixedDelay(wrapMDC(task), initialDelay, delay, unit); + return schedulePool.scheduleWithFixedDelay(wrap(logExceptions(task)), initialDelay, delay, unit); } @Override public ScheduledFuture scheduleAtFixedRate(Runnable task, long initialDelay, long delay, TimeUnit unit) { - return schedulePool.scheduleAtFixedRate(wrapMDC(task), initialDelay, delay, unit); + return schedulePool.scheduleAtFixedRate(wrap(logExceptions(task)), initialDelay, delay, unit); } @Override public ScheduledFuture schedule(Runnable task, long delay, TimeUnit unit) { - return schedulePool.schedule(wrapMDC(task), delay, unit); + return schedulePool.schedule(wrap(logExceptions(task)), delay, unit); } @Override public ScheduledFuture schedule(Callable task, long delay, TimeUnit unit) { - return schedulePool.schedule(wrapMDC(task), delay, unit); + // Note: Here is no "logExceptions", because it is intended to check Future.get() by the invoker + return schedulePool.schedule(wrap(task), delay, unit); } @Override public void shutdown() { + logger.trace("Shutting down backgroundExecutor"); schedulePool.shutdown(); pool.shutdown(); + logger.debug("BackgroundExecutor stopped"); } } diff --git a/ebean-core/src/test/java/io/ebeaninternal/server/executor/DaemonExecutorServiceTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/executor/DaemonExecutorServiceTest.java index 72ad74223..cf117e018 100644 --- a/ebean-core/src/test/java/io/ebeaninternal/server/executor/DaemonExecutorServiceTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/executor/DaemonExecutorServiceTest.java @@ -31,7 +31,7 @@ class DaemonExecutorServiceTest { @Test void submit_via_DefaultBackgroundExecutor() throws Exception { - DefaultBackgroundExecutor des = new DefaultBackgroundExecutor(1, 5, "junk"); + DefaultBackgroundExecutor des = new DefaultBackgroundExecutor(1, 5, "junk", null); long start = System.currentTimeMillis(); List> futures = new ArrayList<>(); for (int i = 0; i < count; i++) { diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/DdlWrite.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/DdlWrite.java index a0abf8350..c8ac57fcd 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/DdlWrite.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/DdlWrite.java @@ -11,7 +11,18 @@ import io.ebeaninternal.dbmigration.model.MTable; import io.ebeaninternal.dbmigration.model.ModelContainer; /** - * Write context holding the buffers for both apply and rollback DDL. + * Write context holding the buffers for both apply and rollback DDL. Description of the apply buffers: + *
    + *
  • applyDropDependencies: Contains drops for foreign keys, indices, constraint or drop history table
  • + *
  • apply: Contains @DbMigraion.before, create table, create sequence or disable system versioning statements
  • + *
  • applyAlterTables: Contains table alters (only that change the table data structure, there may be table alters like + * constraints etc. in postAlter)
  • + *
  • applyPostAlter: Contains check constraints, unique constraints (which CAN be an index), column and table comments, + * @DbMigraion.after, drop tables, drop sequences or enable system versioning statement
  • + *
  • applyForeignKeys: Contains foreign keys and indices. + *
  • applyHistoryView: The views for trigger based history support
  • + *
  • applyHistoryTrigger: The triggers for trigger based history support
  • + *
*/ public class DdlWrite { @@ -169,25 +180,27 @@ public class DdlWrite { target.append(apply.getBuffer()); } if (!applyAlterTables.isEmpty()) { - // target.append("-- apply alter tables\n"); maybe added later. Makes diff easier + target.append("-- apply alter tables\n"); for (DdlAlterTable alterTable : applyAlterTables.values()) { alterTable.write(target); } } if (!applyPostAlter.isEmpty()) { - // target.append("-- apply post alter\n"); maybe added later. + target.append("-- apply post alter\n"); target.append(applyPostAlter.getBuffer()); } if (!applyForeignKeys.isEmpty()) { - // target.append("-- foreign keys and indices\n"); maybe added later. + target.append("-- foreign keys and indices\n"); target.append(applyForeignKeys.getBuffer()); } if (!applyHistoryView.isEmpty()) { + target.append("-- apply history view\n"); target.append(applyHistoryView.getBuffer()); } if (!applyHistoryTrigger.isEmpty()) { + target.append("-- apply history trigger\n"); target.append(applyHistoryTrigger.getBuffer()); } } @@ -205,7 +218,7 @@ public class DdlWrite { target.append(dropAll.getBuffer()); } } - + /** * Returns all create statements. Mainly used for unit-tests */ @@ -221,5 +234,4 @@ public class DdlWrite { return sb.toString(); } - } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java index aa0241532..85e0e4624 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java @@ -558,7 +558,7 @@ public class BaseTableDdl implements TableDdl { @Override public void generate(DdlWrite writer, CreateIndex index) { if (platformInclude(index.getPlatforms())) { - writer.applyPostAlter().appendStatement(platformDdl.createIndex(new WriteCreateIndex(index))); + writer.applyForeignKeys().appendStatement(platformDdl.createIndex(new WriteCreateIndex(index))); writer.dropAll().appendStatement(platformDdl.dropIndex(index.getIndexName(), index.getTableName(), Boolean.TRUE.equals(index.isConcurrent()))); } } @@ -664,7 +664,6 @@ public class BaseTableDdl implements TableDdl { writeForeignKey(writer, tableName, column); } } - writer.apply().end(); } /** @@ -679,7 +678,7 @@ public class BaseTableDdl implements TableDdl { if (!hasValue(sequenceName)) { sequenceName = namingConvention.getSequenceName(dropTable.getName(), dropTable.getSequenceCol()); } - dropSequence(writer.apply(), sequenceName); + dropSequence(writer.applyPostAlter(), sequenceName); } } @@ -696,7 +695,6 @@ public class BaseTableDdl implements TableDdl { regenerateHistoryTriggers(tableName, HistoryTableUpdate.Change.DROP, dropColumn.getColumnName()); alterTableDropColumn(writer, historyTable(tableName), dropColumn.getColumnName()); } - writer.apply().end(); } /** diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java index 10644a8a1..e85a6055f 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java @@ -109,7 +109,7 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { String baseTable = table.getName(); - addSysPeriodColumns(writer.apply(), baseTable, table.getWhenCreatedColumn()); + addSysPeriodColumns(writer, baseTable, table.getWhenCreatedColumn()); createHistoryTable(writer.applyPostAlter(), table); createTriggers(writer, table); @@ -161,20 +161,18 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { DdlBuffer apply = writer.applyHistoryView(); - addSysPeriodColumns(apply, baseTableName, whenCreatedColumn); + addSysPeriodColumns(writer, baseTableName, whenCreatedColumn); createHistoryTable(writer.applyPostAlter(), table); createWithHistoryView(apply, baseTableName); } - protected void addSysPeriodColumns(DdlBuffer apply, String baseTableName, String whenCreatedColumn) { - - apply.append("alter table ").append(baseTableName).append(" add column ") - .append(sysPeriodStart).append(" ").append(sysPeriodType).append(" default ").append(now).endOfStatement(); - apply.append("alter table ").append(baseTableName).append(" add column ") - .append(sysPeriodEnd).append(" ").append(sysPeriodType).endOfStatement(); + protected void addSysPeriodColumns(DdlWrite writer, String baseTableName, String whenCreatedColumn) { + platformDdl.alterTableAddColumn(writer, baseTableName, sysPeriodStart, sysPeriodType, now); + platformDdl.alterTableAddColumn(writer, baseTableName, sysPeriodEnd, sysPeriodType, null); if (whenCreatedColumn != null) { - apply.append("update ").append(baseTableName).append(" set ").append(sysPeriodStart).append(" = ").append(whenCreatedColumn).endOfStatement(); + writer.applyPostAlter() + .append("update ").append(baseTableName).append(" set ").append(sysPeriodStart).append(" = ").append(whenCreatedColumn).endOfStatement(); } } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java index 492584fd5..3ce034b46 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java @@ -40,7 +40,7 @@ public class MySqlDdl extends PlatformDdl { @Override public void alterTableDropColumn(DdlWrite writer, String tableName, String columnName) { if (this.useMigrationStoredProcedures) { - writer.apply().append("CALL usp_ebean_drop_column('").append(tableName).append("', '").append(columnName).append("')").endOfStatement(); + alterTable(writer, tableName).raw("CALL usp_ebean_drop_column('").append(tableName).append("', '").append(columnName).append("')"); } else { super.alterTableDropColumn(writer, tableName, columnName); } @@ -108,16 +108,14 @@ public class MySqlDdl extends PlatformDdl { boolean notnull = (alter.isNotnull() != null) ? alter.isNotnull() : Boolean.TRUE.equals(alter.isCurrentNotnull()); String defaultValue = alter.getDefaultValue() != null ? alter.getDefaultValue() : alter.getCurrentDefaultValue(); - DdlBuffer buffer = writer.apply().append("alter table ").append(tableName) - .appendWithSpace("modify").appendWithSpace(columnName); - buffer.appendWithSpace(type); + DdlBuffer buffer = alterTable(writer, tableName).append("modify", columnName); + buffer.append(type); if (notnull) { buffer.append(" not null"); } if (hasValue(defaultValue) && !DdlHelp.isDropDefault(defaultValue)) { buffer.append(" default ").append(convertDefaultValue(defaultValue)); } - buffer.endOfStatement(); } } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java index 454682a04..3011f2c4a 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java @@ -555,6 +555,21 @@ public class PlatformDdl { } + /** + * This method is used from DbTriggerBasedHistoryDdl to add the sysPeriodColumns. + */ + public void alterTableAddColumn(DdlWrite writer, String tableName, String columnName, String columnType, String defaultValue) { + + String convertedType = convert(columnType); + DdlBuffer buffer = alterTable(writer, tableName).append(addColumn, columnName); + buffer.append(convertedType); + + if (defaultValue != null) { + buffer.append(" default "); + buffer.append(defaultValue); + } + } + public void alterTableDropColumn(DdlWrite writer, String tableName, String columnName) { alterTable(writer, tableName).append(dropColumn, columnName); } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java index 984333fbb..1618cfd9e 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java @@ -60,11 +60,8 @@ public class PostgresDdl extends PlatformDdl { @Override protected void alterColumnType(DdlWrite writer, AlterColumn alter) { String type = convert(alter.getType()); - - writer.apply().append("alter table ").append(alter.getTableName()) - .appendWithSpace(alterColumn).appendWithSpace(alter.getColumnName()) - .appendWithSpace(columnSetType).append(type) - .append(" using ").append(alter.getColumnName()).append("::").append(type) - .endOfStatement(); + alterTable(writer, alter.getTableName()).append(alterColumn, alter.getColumnName()) + .append(columnSetType).append(type) + .append(" using ").append(alter.getColumnName()).append("::").append(type); } } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresHistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresHistoryDdl.java index 228b1c529..e4d4d41aa 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresHistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresHistoryDdl.java @@ -29,14 +29,11 @@ public class PostgresHistoryDdl extends DbTriggerBasedHistoryDdl { * Use Postgres range type rather than start and end timestamps. */ @Override - protected void addSysPeriodColumns(DdlBuffer apply, String baseTableName, String whenCreatedColumn) { - apply - .append("alter table ").append(baseTableName) - .append(" add column ").append(sysPeriod).append(" tstzrange not null default tstzrange(").append(now).append(", null)") - .endOfStatement(); - + protected void addSysPeriodColumns(DdlWrite writer, String baseTableName, String whenCreatedColumn) { + platformDdl.alterTableAddColumn(writer, baseTableName, sysPeriod, "tstzrange not null", "tstzrange(" + now + ", null)"); if (whenCreatedColumn != null) { - apply.append("update ").append(baseTableName).append(" set ") + writer.applyPostAlter() + .append("update ").append(baseTableName).append(" set ") .append(sysPeriod).append(" = tstzrange(").append(whenCreatedColumn).append(", null)").endOfStatement(); } } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java index 0cd256c30..b3d27ddee 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java @@ -142,9 +142,9 @@ public class SqlServerDdl extends PlatformDdl { String columnName = alter.getColumnName(); String defaultValue = alter.getDefaultValue(); if (DdlHelp.isDropDefault(defaultValue)) { - writer.apply().appendStatement(execUspDropDefaultConstraint(tableName, columnName)); + execUspDropDefaultConstraint(writer, tableName, columnName); } else { - writer.apply().appendStatement(execUspDropDefaultConstraint(tableName, columnName)); + execUspDropDefaultConstraint(writer, tableName, columnName); setDefaultValue(writer, tableName, columnName, defaultValue); } } @@ -164,21 +164,17 @@ public class SqlServerDdl extends PlatformDdl { type = convert(type); boolean notnull = (alter.isNotnull() != null) ? alter.isNotnull() : Boolean.TRUE.equals(alter.isCurrentNotnull()); String defaultValue = alter.getDefaultValue() != null ? alter.getDefaultValue() : alter.getCurrentDefaultValue(); - DdlBuffer buffer = writer.apply(); if (hasValue(defaultValue)) { // default value present -> drop default constraint before altering - buffer.appendStatement(execUspDropDefaultConstraint(tableName, columnName)); + execUspDropDefaultConstraint(writer, tableName, columnName); } - buffer = writer.apply().append("alter table ").append(tableName) - .appendWithSpace(alterColumn).appendWithSpace(columnName); - buffer.appendWithSpace(type); + DdlBuffer buffer = alterTable(writer, tableName).append(alterColumn, columnName); + buffer.append(type); if (notnull) { buffer.append(" not null"); } - buffer.endOfStatement(); - // re add - default constraint if (hasValue(defaultValue) && !DdlHelp.isDropDefault(defaultValue)) { setDefaultValue(writer, tableName, columnName, defaultValue); @@ -210,7 +206,7 @@ public class SqlServerDdl extends PlatformDdl { */ @Override public void alterTableDropColumn(DdlWrite writer, String tableName, String columnName) { - writer.apply().append("EXEC usp_ebean_drop_column ").append(tableName).append(", ").append(columnName).endOfStatement(); + alterTable(writer, tableName).raw("EXEC usp_ebean_drop_column ").append(tableName).append(", ").append(columnName); } /** @@ -252,18 +248,15 @@ public class SqlServerDdl extends PlatformDdl { .endOfStatement(); } - private String ifObjectExists(String object, String objectType) { + public static String ifObjectExists(String object, String objectType) { return "IF OBJECT_ID('" + object + "', '" + objectType + "') IS NOT NULL "; } - private String execUspDropDefaultConstraint(String tableName, String columnName) { - return "EXEC usp_ebean_drop_default_constraint " + tableName + ", " + columnName; + private void execUspDropDefaultConstraint(DdlWrite writer, String tableName, String columnName) { + alterTable(writer, tableName).raw("EXEC usp_ebean_drop_default_constraint " + tableName + ", " + columnName); } private void setDefaultValue(DdlWrite writer, String tableName, String columnName, String defaultValue) { - writer.apply().append("alter table ").append(tableName) - .append(" add default ").append(convertDefaultValue(defaultValue)).append(" for ").append(columnName) - .endOfStatement(); + alterTable(writer, tableName).append("add default " + convertDefaultValue(defaultValue) + " for", columnName); } - } diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerHistoryDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerHistoryDdl.java index 812389c2d..7a10110e3 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerHistoryDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerHistoryDdl.java @@ -60,27 +60,25 @@ public class SqlServerHistoryDdl implements PlatformHistoryDdl { @Override public void dropHistoryTable(DdlWrite writer, DropHistoryTable dropHistoryTable) { String baseTable = dropHistoryTable.getBaseTable(); - DdlBuffer apply = writer.applyHistoryView(); - apply.append("-- dropping history support for ").append(baseTable).endOfStatement(); // drop default constraints - DdlWrite tmpWriter = new DdlWrite(); AlterColumn alter = new AlterColumn(); alter.setTableName(baseTable); alter.setDefaultValue(DdlHelp.DROP_DEFAULT); alter.setColumnName(systemPeriodStart); - platformDdl.alterColumn(tmpWriter, alter); + platformDdl.alterColumn(writer, alter); alter.setColumnName(systemPeriodEnd); - platformDdl.alterColumn(tmpWriter, alter); - apply.append(tmpWriter.apply().getBuffer()); // workaround - will be refactored later + platformDdl.alterColumn(writer, alter); - // switch of versioning & period + // switch of versioning & period - must be done before altering + DdlBuffer apply = writer.apply(); + apply.append("-- dropping history support for ").append(baseTable).endOfStatement(); apply.append("alter table ").append(baseTable).append(" set (system_versioning = off)").endOfStatement(); apply.append("alter table ").append(baseTable).append(" drop period for system_time").endOfStatement(); - // now drop tables & columns - apply.append("alter table ").append(baseTable).append(" drop column ").append(systemPeriodStart).endOfStatement(); - apply.append("alter table ").append(baseTable).append(" drop column ").append(systemPeriodEnd).endOfStatement(); - apply.append("IF OBJECT_ID('").append(baseTable).append("_history', 'U') IS NOT NULL drop table ").append(baseTable).append("_history").endOfStatement(); apply.end(); + // now drop tables & columns, they will go to alter table/post alter buffers + platformDdl.alterTableDropColumn(writer, baseTable, systemPeriodStart); + platformDdl.alterTableDropColumn(writer, baseTable, systemPeriodEnd); + writer.applyPostAlter().appendStatement(platformDdl.dropTable(baseTable + "_history")); } @Override diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java index b81b8d5d1..092bc75fa 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java @@ -47,15 +47,15 @@ public class BaseDdlHandlerTest extends BaseTestCase { DdlWrite writer = new DdlWrite(); h2Handler().generate(writer, Helper.getAddColumn()); - assertThat(writer.toString()).isEqualTo("alter table foo add column added_to_foo varchar(20);\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column added_to_foo varchar(20);\n"); writer = new DdlWrite(); sqlserverHandler().generate(writer, Helper.getAddColumn()); - assertThat(writer.toString()).isEqualTo("alter table foo add added_to_foo nvarchar(20);\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add added_to_foo nvarchar(20);\n"); writer = new DdlWrite(); hanaHandler().generate(writer, Helper.getAddColumn()); - assertThat(writer.toString()).isEqualTo("alter table foo add (added_to_foo nvarchar(20));\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add (added_to_foo nvarchar(20));\n"); } @Test @@ -63,13 +63,13 @@ public class BaseDdlHandlerTest extends BaseTestCase { DdlWrite writer = new DdlWrite(); h2Handler().generate(writer, Helper.getAlterTableAddColumnWithCheckConstraint()); - assertThat(writer.toString()).isEqualTo("alter table foo add column status integer;\n" - + "alter table foo add constraint ck_ordering_status check ( status in (0,1));\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column status integer;\n" + + "-- apply post alter\nalter table foo add constraint ck_ordering_status check ( status in (0,1));\n"); writer = new DdlWrite(); hanaHandler().generate(writer, Helper.getAlterTableAddColumnWithCheckConstraint()); - assertThat(writer.toString()).isEqualTo("alter table foo add (status integer);\n" - + "alter table foo add constraint ck_ordering_status check ( status in (0,1));\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add (status integer);\n" + + "-- apply post alter\nalter table foo add constraint ck_ordering_status check ( status in (0,1));\n"); } /** @@ -83,20 +83,20 @@ public class BaseDdlHandlerTest extends BaseTestCase { DdlHandler postgresHandler = postgresHandler(); postgresHandler.generate(writer, Helper.getAlterTableAddDbArrayColumn()); - assertThat(writer.toString()).isEqualTo("alter table foo add column dbarray_added_to_foo varchar[];\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_added_to_foo varchar[];\n"); writer = new DdlWrite(); DdlHandler sqlserverHandler = sqlserverHandler(); sqlserverHandler.generate(writer, Helper.getAlterTableAddDbArrayColumn()); - assertThat(writer.toString()).isEqualTo("alter table foo add dbarray_added_to_foo varchar(1000);\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add dbarray_added_to_foo varchar(1000);\n"); writer = new DdlWrite(); DdlHandler hanaHandler = hanaHandler(); hanaHandler.generate(writer, Helper.getAlterTableAddDbArrayColumn()); assertThat(writer.toString()) - .isEqualTo("alter table foo add (dbarray_added_to_foo nvarchar(255) array);\n"); + .isEqualTo("-- apply alter tables\nalter table foo add (dbarray_added_to_foo nvarchar(255) array);\n"); } @Test @@ -105,24 +105,24 @@ public class BaseDdlHandlerTest extends BaseTestCase { DdlWrite writer = new DdlWrite(); postgresHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnWithLength()); - assertThat(writer.toString()).isEqualTo("alter table foo add column dbarray_ninety varchar[];\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_ninety varchar[];\n"); writer = new DdlWrite(); h2Handler().generate(writer, Helper.getAlterTableAddDbArrayColumnWithLength()); if (useV1Syntax) { - assertThat(writer.toString()).isEqualTo("alter table foo add column dbarray_ninety array;\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_ninety array;\n"); } else { - assertThat(writer.toString()).isEqualTo("alter table foo add column dbarray_ninety varchar array;\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_ninety varchar array;\n"); } writer = new DdlWrite(); sqlserverHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnWithLength()); - assertThat(writer.toString()).isEqualTo("alter table foo add dbarray_ninety varchar(90);\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add dbarray_ninety varchar(90);\n"); writer = new DdlWrite(); hanaHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnWithLength()); assertThat(writer.toString()) - .isEqualTo("alter table foo add (dbarray_ninety nvarchar(255) array(90));\n"); + .isEqualTo("-- apply alter tables\nalter table foo add (dbarray_ninety nvarchar(255) array(90));\n"); } @Test @@ -130,31 +130,31 @@ public class BaseDdlHandlerTest extends BaseTestCase { DdlWrite writer = new DdlWrite(); postgresHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnIntegerWithLength()); - assertThat(writer.toString()).isEqualTo("alter table foo add column dbarray_integer integer[];\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_integer integer[];\n"); writer = new DdlWrite(); h2Handler().generate(writer, Helper.getAlterTableAddDbArrayColumnIntegerWithLength()); if (useV1Syntax) { - assertThat(writer.toString()).isEqualTo("alter table foo add column dbarray_integer array;\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_integer array;\n"); } else { - assertThat(writer.toString()).isEqualTo("alter table foo add column dbarray_integer integer array;\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_integer integer array;\n"); } writer = new DdlWrite(); sqlserverHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnIntegerWithLength()); - assertThat(writer.toString()).isEqualTo("alter table foo add dbarray_integer varchar(90);\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add dbarray_integer varchar(90);\n"); writer = new DdlWrite(); sqlserverHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnInteger()); - assertThat(writer.toString()).isEqualTo("alter table foo add dbarray_integer varchar(1000);\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add dbarray_integer varchar(1000);\n"); writer = new DdlWrite(); hanaHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnIntegerWithLength()); - assertThat(writer.toString()).isEqualTo("alter table foo add (dbarray_integer integer array(90));\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add (dbarray_integer integer array(90));\n"); writer = new DdlWrite(); hanaHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnInteger()); - assertThat(writer.toString()).isEqualTo("alter table foo add (dbarray_integer integer array);\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add (dbarray_integer integer array);\n"); } @Test @@ -166,7 +166,7 @@ public class BaseDdlHandlerTest extends BaseTestCase { handler.generate(writer, Helper.getAlterTableAddColumn()); String buffer = writer.toString(); - assertThat(buffer).contains("alter table foo add column some_id integer;"); + assertThat(buffer).contains("-- apply alter tables\nalter table foo add column some_id integer;"); String fkBuffer = writer.applyForeignKeys().getBuffer(); assertThat(fkBuffer).contains( @@ -183,7 +183,7 @@ public class BaseDdlHandlerTest extends BaseTestCase { handler.generate(writer, Helper.getDropColumn()); - assertThat(writer.toString()).isEqualTo("alter table foo drop column col2;\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo drop column col2;\n"); assertThat(writer.dropAll().getBuffer()).isEqualTo(""); writer = new DdlWrite(); @@ -191,7 +191,7 @@ public class BaseDdlHandlerTest extends BaseTestCase { hanaHandler.generate(writer, Helper.getDropColumn()); - assertThat(writer.toString()).isEqualTo("CALL usp_ebean_drop_column('foo', 'col2');\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nCALL usp_ebean_drop_column('foo', 'col2');\n"); assertThat(writer.dropAll().getBuffer()).isEqualTo(""); } diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java index 0c8f794b0..3f09718f6 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdlTest.java @@ -106,8 +106,8 @@ public class BaseTableDdlTest { column.setType("int"); ddl.alterTableAddColumn(writer, "my_table", column, false, false); - assertEquals("alter table my_table add column my_column int;\n" - + "comment on column my_table.my_column is 'some comment';\n", + assertEquals("-- apply alter tables\nalter table my_table add column my_column int;\n" + + "-- apply post alter\ncomment on column my_table.my_column is 'some comment';\n", writer.toString()); } diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaDdlTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaDdlTest.java index 272428d28..17a904aca 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaDdlTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaDdlTest.java @@ -14,7 +14,7 @@ public class HanaDdlTest { HanaColumnStoreDdl ddl = new HanaColumnStoreDdl(new HanaPlatform()); DdlWrite writer = new DdlWrite(); ddl.alterTableDropColumn(writer, "my_table", "my_column"); - assertEquals("CALL usp_ebean_drop_column('my_table', 'my_column');\n", writer.toString()); + assertEquals("-- apply alter tables\nCALL usp_ebean_drop_column('my_table', 'my_column');\n", writer.toString()); } @Test @@ -34,7 +34,8 @@ public class HanaDdlTest { column.setHistoryExclude(Boolean.TRUE); column.setIdentity(Boolean.TRUE); ddl.alterTableAddColumn(writer, "my_table", column, false, "1"); - assertEquals("alter table my_table add (my_column int default 1 not null);\nalter table my_table add constraint check_constraint CHECK(my_column > 0);\n", + assertEquals( + "-- apply alter tables\nalter table my_table add (my_column int default 1 not null);\n-- apply post alter\nalter table my_table add constraint check_constraint CHECK(my_column > 0);\n", writer.toString()); } } diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java index 28109f0eb..c6d884c3a 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java @@ -19,7 +19,6 @@ import io.ebeaninternal.dbmigration.migration.Column; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; - import org.assertj.core.api.SoftAssertions; public class PlatformDdl_AlterColumnTest { @@ -101,36 +100,40 @@ public class PlatformDdl_AlterColumnTest { alter.setType("varchar(50)"); // and alter type String sql = alterColumn(h2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol varchar(50);\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol varchar(50);\n" + "alter table mytab alter column acol set default 'hi';\n" + "alter table mytab alter column acol set not null;\n"); sql = alterColumn(pgDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + "alter table mytab alter column acol type varchar(50) using acol::varchar(50);\n" + "alter table mytab alter column acol set default 'hi';\n" + "alter table mytab alter column acol set not null;\n"); sql = alterColumn(oraDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab modify acol varchar2(50);\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol varchar2(50);\n" + "alter table mytab modify acol default 'hi';\n" + "alter table mytab modify acol not null;\n"); sql = alterColumn(mysqlDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + "alter table mytab modify acol varchar(50) not null default 'hi';\n"); sql = alterColumn(sqlServerDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + "EXEC usp_ebean_drop_default_constraint mytab, acol;\n" + "alter table mytab alter column acol nvarchar(50) not null;\n" + "alter table mytab add default 'hi' for acol;\n"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol nvarchar(50) default 'hi' not null);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol nvarchar(50) default 'hi' not null);\n"); sql = alterColumn(db2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set data type varchar(50);\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set data type varchar(50);\n" + "alter table mytab alter column acol set default 'hi';\n" + "alter table mytab alter column acol set not null;\n"); @@ -141,31 +144,36 @@ public class PlatformDdl_AlterColumnTest { alter.setType(null); // do not alter type sql = alterColumn(h2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol drop default;\n" + "alter table mytab alter column acol set null;\n"); sql = alterColumn(pgDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol drop default;\n" + "alter table mytab alter column acol drop not null;\n"); sql = alterColumn(oraDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab modify acol default null;\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol default null;\n" + "alter table mytab modify acol null;\n"); sql = alterColumn(mysqlDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + "alter table mytab modify acol varchar(5);\n"); sql = alterColumn(sqlServerDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + "EXEC usp_ebean_drop_default_constraint mytab, acol;\n" + "alter table mytab alter column acol nvarchar(5);\n"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol nvarchar(5) default null);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol nvarchar(5) default null);\n"); sql = alterColumn(db2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol drop default;\n" + "alter table mytab alter column acol drop not null;\n"); } @@ -180,40 +188,50 @@ public class PlatformDdl_AlterColumnTest { alter.setType("varchar(20)"); String sql = alterColumn(h2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol varchar(20);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol varchar(20);\n"); sql = alterColumn(pgDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\nalter table mytab alter column acol type varchar(20) using acol::varchar(20);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol type varchar(20) using acol::varchar(20);\n"); sql = alterColumn(oraDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab modify acol varchar2(20);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol varchar2(20);\n"); sql = alterColumn(mysqlDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\nalter table mytab modify acol varchar(20);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol varchar(20);\n"); sql = alterColumn(sqlServerDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\nalter table mytab alter column acol nvarchar(20);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol nvarchar(20);\n"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol nvarchar(20));\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol nvarchar(20));\n"); sql = alterColumn(db2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set data type varchar(20);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set data type varchar(20);\n"); alter.setType("bigint"); sql = alterColumn(pgDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\nalter table mytab alter column acol type bigint using acol::bigint;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol type bigint using acol::bigint;\n"); alter.setCurrentType("bigint"); alter.setType("integer"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol decimal);\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol decimal);\n" + "alter table mytab alter (acol integer);\n"); alter.setCurrentType("varchar(20)"); alter.setType("varchar(10)"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol nclob);\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol nclob);\n" + "alter table mytab alter (acol nvarchar(10));\n"); } @@ -228,27 +246,32 @@ public class PlatformDdl_AlterColumnTest { alter.setNotnull(Boolean.TRUE); String sql = alterColumn(h2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set not null;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set not null;\n"); sql = alterColumn(pgDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set not null;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set not null;\n"); sql = alterColumn(oraDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab modify acol not null;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol not null;\n"); sql = alterColumn(mysqlDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + "alter table mytab modify acol varchar(20) not null;\n"); sql = alterColumn(sqlServerDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + "alter table mytab alter column acol nvarchar(20) not null;\n"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol nvarchar(20) not null);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol nvarchar(20) not null);\n"); sql = alterColumn(db2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set not null;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set not null;\n"); } @@ -264,27 +287,34 @@ public class PlatformDdl_AlterColumnTest { alter.setNotnull(Boolean.FALSE); String sql = alterColumn(h2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set null;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set null;\n"); sql = alterColumn(pgDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop not null;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol drop not null;\n"); sql = alterColumn(oraDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab modify acol null;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol null;\n"); sql = alterColumn(mysqlDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\nalter table mytab modify acol varchar(20) default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol varchar(20) default 'hi';\n"); sql = alterColumn(sqlServerDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\nEXEC usp_ebean_drop_default_constraint mytab, acol;\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "EXEC usp_ebean_drop_default_constraint mytab, acol;\n" + "alter table mytab alter column acol nvarchar(20);\n" + "alter table mytab add default 'hi' for acol;\n"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol nvarchar(20) default 'hi');\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol nvarchar(20) default 'hi');\n"); sql = alterColumn(db2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop not null;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol drop not null;\n"); } @Test @@ -297,27 +327,33 @@ public class PlatformDdl_AlterColumnTest { alter.setDefaultValue("'hi'"); String sql = alterColumn(h2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set default 'hi';\n"); sql = alterColumn(pgDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set default 'hi';\n"); sql = alterColumn(oraDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab modify acol default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol default 'hi';\n"); sql = alterColumn(mysqlDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter acol set default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter acol set default 'hi';\n"); sql = alterColumn(sqlServerDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + "EXEC usp_ebean_drop_default_constraint mytab, acol;\n" + "alter table mytab add default 'hi' for acol;\n"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol nvarchar(20) default 'hi' not null);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol nvarchar(20) default 'hi' not null);\n"); sql = alterColumn(db2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set default 'hi';\n"); } @Test @@ -331,26 +367,33 @@ public class PlatformDdl_AlterColumnTest { alter.setDefaultValue("'hi'"); String sql = alterColumn(h2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set default 'hi';\n"); sql = alterColumn(pgDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set default 'hi';\n"); sql = alterColumn(oraDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab modify acol default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol default 'hi';\n"); sql = alterColumn(mysqlDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter acol set default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter acol set default 'hi';\n"); sql = alterColumn(sqlServerDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\nEXEC usp_ebean_drop_default_constraint mytab, acol;\n" + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "EXEC usp_ebean_drop_default_constraint mytab, acol;\n" + "alter table mytab add default 'hi' for acol;\n"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol nvarchar(20) default 'hi' not null);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol nvarchar(20) default 'hi' not null);\n"); sql = alterColumn(db2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set default 'hi';\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol set default 'hi';\n"); } @Test @@ -365,25 +408,32 @@ public class PlatformDdl_AlterColumnTest { alter.setDefaultValue("DROP DEFAULT"); String sql = alterColumn(h2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol drop default;\n"); sql = alterColumn(pgDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol drop default;\n"); sql = alterColumn(oraDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab modify acol default null;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab modify acol default null;\n"); sql = alterColumn(mysqlDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter acol drop default;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter acol drop default;\n"); sql = alterColumn(sqlServerDdl, alter); - softly.assertThat(sql).isEqualTo("-- apply changes\nEXEC usp_ebean_drop_default_constraint mytab, acol;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "EXEC usp_ebean_drop_default_constraint mytab, acol;\n"); sql = alterColumn(hanaDdl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter (acol nvarchar(20) default null not null);\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter (acol nvarchar(20) default null not null);\n"); sql = alterColumn(db2Ddl, alter); - softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n"); + softly.assertThat(sql).isEqualTo("-- apply alter tables\n" + + "alter table mytab alter column acol drop default;\n"); } @@ -392,7 +442,8 @@ public class PlatformDdl_AlterColumnTest { DdlWrite writer = new DdlWrite(); oraDdl.alterTableAddColumn(writer, "my_table", simpleColumn(), false, "1"); softly.assertThat(writer.toString()) - .isEqualTo("alter table my_table add my_column int default 1 not null;\n"); + .isEqualTo("-- apply alter tables\n" + + "alter table my_table add my_column int default 1 not null;\n"); } private Column simpleColumn() { diff --git a/ebean-ddl-generator/src/test/resources/assert/BaseDdlHandlerTest/baseApply.sql b/ebean-ddl-generator/src/test/resources/assert/BaseDdlHandlerTest/baseApply.sql index 1805e6683..46f430bce 100644 --- a/ebean-ddl-generator/src/test/resources/assert/BaseDdlHandlerTest/baseApply.sql +++ b/ebean-ddl-generator/src/test/resources/assert/BaseDdlHandlerTest/baseApply.sql @@ -7,7 +7,6 @@ create table foo ( ); comment on table foo is 'comment'; - - +-- apply alter tables alter table foo add column added_to_foo varchar(20); alter table foo drop column col2; diff --git a/ebean-ddl-generator/src/test/resources/assert/ModelBuild_compoundKeyTest/apply.sql b/ebean-ddl-generator/src/test/resources/assert/ModelBuild_compoundKeyTest/apply.sql index 44283c3bf..96ded6d9b 100644 --- a/ebean-ddl-generator/src/test/resources/assert/ModelBuild_compoundKeyTest/apply.sql +++ b/ebean-ddl-generator/src/test/resources/assert/ModelBuild_compoundKeyTest/apply.sql @@ -21,6 +21,7 @@ create table ckey_parent ( constraint pk_ckey_parent primary key (one_key,two_key) ); +-- foreign keys and indices create index ix_ckey_detail_parent on ckey_detail (one_key,two_key); alter table ckey_detail add constraint fk_ckey_detail_parent foreign key (one_key,two_key) references ckey_parent (one_key,two_key) on delete restrict on update restrict; diff --git a/ebean-ddl-generator/src/test/resources/assert/ModelBuild_explicitSequencesTest/apply.sql b/ebean-ddl-generator/src/test/resources/assert/ModelBuild_explicitSequencesTest/apply.sql index c84e3c252..bc0f0635f 100644 --- a/ebean-ddl-generator/src/test/resources/assert/ModelBuild_explicitSequencesTest/apply.sql +++ b/ebean-ddl-generator/src/test/resources/assert/ModelBuild_explicitSequencesTest/apply.sql @@ -13,6 +13,7 @@ create table phones ( constraint pk_phones primary key (id) ); +-- foreign keys and indices create index ix_phones_person_id on phones (person_id); alter table phones add constraint fk_phones_person_id foreign key (person_id) references persons (id) on delete restrict on update restrict; diff --git a/ebean-ddl-generator/src/test/resources/assert/ModelBuild_explicitSequencesTest/pg-apply.sql b/ebean-ddl-generator/src/test/resources/assert/ModelBuild_explicitSequencesTest/pg-apply.sql index e866a1f4b..e0063a84e 100644 --- a/ebean-ddl-generator/src/test/resources/assert/ModelBuild_explicitSequencesTest/pg-apply.sql +++ b/ebean-ddl-generator/src/test/resources/assert/ModelBuild_explicitSequencesTest/pg-apply.sql @@ -13,6 +13,7 @@ create table phones ( constraint pk_phones primary key (id) ); +-- foreign keys and indices create index ix_phones_person_id on phones (person_id); alter table phones add constraint fk_phones_person_id foreign key (person_id) references persons (id) on delete restrict on update restrict not valid; diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutorTest.java b/ebean-test/src/test/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutorTest.java index 08bc88640..cc3a3d481 100644 --- a/ebean-test/src/test/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutorTest.java +++ b/ebean-test/src/test/java/io/ebeaninternal/server/executor/DefaultBackgroundExecutorTest.java @@ -4,17 +4,21 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.slf4j.MDC; +import io.ebean.config.MdcBackgroundExecutorWrapper; + +import java.util.concurrent.CountDownLatch; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertTrue; public class DefaultBackgroundExecutorTest { @Test public void submit_callable() throws Exception { - DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 2, "test"); + DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 2, "test", null); final Future future0 = es.submit(() -> "Hello"); final Future future1 = es.submit(() -> "There"); @@ -39,7 +43,7 @@ public class DefaultBackgroundExecutorTest { public void shutdown_slowCallable_expect_interrupted() throws Exception { int shutdownWaitSecs = 1; - DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, shutdownWaitSecs, "test"); + DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, shutdownWaitSecs, "test", null); final Future future2 = es.submit(() -> { try { @@ -61,7 +65,7 @@ public class DefaultBackgroundExecutorTest { @Disabled("test takes long time") public void shutdown_when_running_expect_waitAndNiceShutdown() { - DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 20, "test"); + DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 20, "test", null); es.execute(new RunFor(3000, "a")); es.execute(new RunFor(3000, "b")); @@ -74,7 +78,7 @@ public class DefaultBackgroundExecutorTest { @Disabled("test takes long time") public void shutdown_when_rougeRunnable_expect_InterruptedException() { - DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 10, "test"); + DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 10, "test", null); es.execute(new RunFor(300000, "a")); es.execute(new RunFor(3000, "b")); @@ -85,12 +89,12 @@ public class DefaultBackgroundExecutorTest { @Test public void wrapWithNoMDC() { - DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 10, "test"); + DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 10, "test", null); assertThat(MDC.getCopyOfContextMap()).isNull(); - es.wrapMDC(() -> { + es.wrap(() -> { assertThat(MDC.getCopyOfContextMap()).isNull(); }); - es.wrapMDC(() -> { + es.wrap(() -> { assertThat(MDC.getCopyOfContextMap()).isNull(); return "Callable"; }); @@ -98,25 +102,44 @@ public class DefaultBackgroundExecutorTest { } @Test - public void wrapWithMDC_expect_() { - DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 10, "test"); + public void wrapWithMDC_expect_() throws Exception { + DefaultBackgroundExecutor es = new DefaultBackgroundExecutor(1, 10, "test", new MdcBackgroundExecutorWrapper()); + // MDC has a copyOnThread map. So we must pass different values to check if the test will work MDC.clear(); + es.submit(()->{ + assertThat(MDC.get("hello")).isNull(); + }).get(); + MDC.put("hello", "there"); - es.wrapMDC(() -> { + es.wrap(() -> { assertThat(MDC.get("hello")).isEqualTo("there"); - }); - es.wrapMDC(() -> { + }).run(); // will clear the MDC. But this should be OK + + MDC.put("hello", "there"); + es.wrap(() -> { assertThat(MDC.get("hello")).isEqualTo("there"); return "Callable"; - }); + }).call(); // will clear the MDC. But this should be OK + + MDC.put("hello", "there"); + + CountDownLatch latch = new CountDownLatch(1); es.execute(() -> { + // the assertion is executed async, so it will only logged on console assertThat(MDC.get("hello")).isEqualTo("there"); + latch.countDown(); }); + assertTrue(latch.await(5, TimeUnit.SECONDS)); + es.submit(() -> { assertThat(MDC.get("hello")).isEqualTo("there"); return "Callable"; - }); + }).get(); MDC.clear(); + + es.execute(()->{ + assertThat(MDC.get("hello")).isNull(); + }); es.shutdown(); } diff --git a/ebean-test/src/test/java/org/tests/cache/TestBeanCacheAsync.java b/ebean-test/src/test/java/org/tests/cache/TestBeanCacheAsync.java new file mode 100644 index 000000000..a08e30f0f --- /dev/null +++ b/ebean-test/src/test/java/org/tests/cache/TestBeanCacheAsync.java @@ -0,0 +1,108 @@ +package org.tests.cache; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.util.concurrent.Callable; + +import org.junit.jupiter.api.Test; +import org.tests.model.basic.OCachedBean; + +import io.ebean.BaseTestCase; +import io.ebean.DB; +import io.ebean.Database; +import io.ebean.DatabaseFactory; +import io.ebean.config.BackgroundExecutorWrapper; +import io.ebean.config.CurrentTenantProvider; +import io.ebean.config.DatabaseConfig; +import io.ebean.config.MdcBackgroundExecutorWrapper; +import io.ebeaninternal.server.cache.DefaultServerCachePlugin; + +/** + * Test class testing async/background cache updates in a multi-tenant environment. + */ +public class TestBeanCacheAsync extends BaseTestCase { + + private final ThreadLocal tenantId = new ThreadLocal<>(); + + class ThreadLocalTenantProvider implements CurrentTenantProvider { + + @Override + public Object currentId() { + return tenantId.get(); + } + } + + /** + * Copy tenant info to the background thread. + */ + class TenantCopyBackgroundExecutorWrapper implements BackgroundExecutorWrapper { + @Override + public Callable wrap(Callable task) { + String tenant = tenantId.get(); // executed in current thread + return () -> { + tenantId.set(tenant); // executed in other thread + try { + return task.call(); + } finally { + tenantId.remove(); + } + }; + } + + @Override + public Runnable wrap(Runnable task) { + String tenant = tenantId.get(); + return () -> { + tenantId.set(tenant); + try { + task.run(); + } finally { + tenantId.remove(); + } + }; + } + } + + @Test + public void findById_with_tenant() throws InterruptedException { + DatabaseConfig config = new DatabaseConfig(); + config.setName(DB.getDefault().name()); + config.loadFromProperties(); + config.setDataSource(DB.getDefault().dataSource()); + config.setReadOnlyDataSource(DB.getDefault().readOnlyDataSource()); + config.setDdlExtra(false); + config.setDdlGenerate(false); + config.setDdlRun(false); + config.setDefaultServer(false); + config.setRegister(false); + config.setServerCachePlugin(new DefaultServerCachePlugin()); // disables foreground local caching (as it is done in Hz/Ignite) + config.setCurrentTenantProvider(new ThreadLocalTenantProvider()); + config.setBackgroundExecutorWrapper( + new MdcBackgroundExecutorWrapper().with(new TenantCopyBackgroundExecutorWrapper())); + tenantId.set("4711"); + + Database db = DatabaseFactory.create(config); + try { + OCachedBean bean = new OCachedBean(); + bean.setName("findById"); + db.save(bean); + + OCachedBean bean0 = db.find(OCachedBean.class, bean.getId()); + assertNotNull(bean0); + assertThat(bean0.getName()).isEqualTo("findById"); + bean0.setName("findById2"); + db.save(bean0); + + Thread.sleep(100); // TODO: can we block finds on that ID if a pending cache update is present? + + bean0 = db.find(OCachedBean.class, bean.getId()); + assertNotNull(bean0); + assertThat(bean0.getName()).isEqualTo("findById2"); + + } finally { + db.shutdown(false, false); + } + } + +} diff --git a/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.0__initial.sql index 38ea03bb3..43a438d07 100644 --- a/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.0__initial.sql @@ -4,9 +4,11 @@ create table migtest_e_history7 ( id integer generated by default as identity not null, constraint pk_migtest_e_history7 primary key (id) ); + +-- apply alter tables alter table migtest_e_history7 add column sys_period_start timestamp default now(); alter table migtest_e_history7 add column sys_period_end timestamp; - +-- apply post alter create table migtest_e_history7_history( id integer, sys_period_start timestamp, @@ -14,4 +16,5 @@ create table migtest_e_history7_history( ); create view migtest_e_history7_with_history as select * from migtest_e_history7 union all select * from migtest_e_history7_history; +-- apply history trigger create trigger migtest_e_history7_history_upd before update,delete on migtest_e_history7 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger"; diff --git a/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.2__dropsFor_1.1.sql index b52760023..e335d7576 100644 --- a/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.2__dropsFor_1.1.sql @@ -4,5 +4,6 @@ drop trigger migtest_e_history7_history_upd; drop view migtest_e_history7_with_history; drop table migtest_e_history7_history; +-- apply alter tables alter table migtest_e_history7 drop column sys_period_start; alter table migtest_e_history7 drop column sys_period_end; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.1.sql index 032c92d9f..56fd182db 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.1.sql @@ -26,24 +26,18 @@ create table migtest_mtm_m_phone_numbers ( ) ENGINE = Log(); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key UInt32; alter table migtest_ckey_detail add column two_key String; alter table migtest_ckey_parent add column assoc_id UInt32; @@ -71,6 +65,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 set null; alter table migtest_e_softdelete add column deleted UInt8 default false; alter table migtest_oto_child add column master_id UInt64; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.2__dropsFor_1.1.sql index 219f0c1c5..4ec79a34c 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.2__dropsFor_1.1.sql @@ -1,8 +1,10 @@ -- Migrationscripts for ebean unittest +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.3.sql index 79da8548d..155817baa 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.3.sql @@ -19,10 +19,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic alter column status2 String; @@ -43,6 +42,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 set null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.4__dropsFor_1.3.sql index 033f0a5a2..b4087d6d6 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.4__dropsFor_1.3.sql @@ -1,4 +1,5 @@ -- Migrationscripts for ebean unittest +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -13,6 +14,7 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/idx_clickhouse.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/idx_clickhouse.migrations index d3b643f3d..86feb1c0a 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/idx_clickhouse.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/idx_clickhouse.migrations @@ -1,6 +1,6 @@ -697238714, 1.0__initial.sql --1730180752, 1.1.sql --155876508, 1.2__dropsFor_1.1.sql -1059765262, 1.3.sql -767202122, 1.4__dropsFor_1.3.sql +-1523257380, 1.1.sql +1279151426, 1.2__dropsFor_1.1.sql +14388492, 1.3.sql +80209848, 1.4__dropsFor_1.3.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.0__initial.sql index c4788bf9a..b9b139994 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.0__initial.sql @@ -162,8 +162,7 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -173,3 +172,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.1.sql index 91f885e05..11933d07c 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.1.sql @@ -33,24 +33,18 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -78,6 +72,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 drop not null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -88,8 +83,7 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -116,3 +110,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.2__dropsFor_1.1.sql index 10f33e294..e3450aa6a 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.2__dropsFor_1.1.sql @@ -1,10 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence if exists migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref cascade; +drop sequence if exists migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.3.sql index f0f005c1f..fa5bd5461 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.3.sql @@ -29,10 +29,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status drop not null; alter table migtest_e_basic alter column status2 type varchar(1); @@ -53,15 +52,17 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.4__dropsFor_1.3.sql index 58c3531c6..6db145c5c 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.4__dropsFor_1.3.sql @@ -1,6 +1,5 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence if exists migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -15,7 +14,9 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user cascade; +drop sequence if exists migtest_e_user_seq; drop table if exists migtest_mtm_c_migtest_mtm_m cascade; drop table if exists migtest_mtm_m_migtest_mtm_c cascade; drop table if exists migtest_mtm_m_phone_numbers cascade; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/idx_cockroach.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/idx_cockroach.migrations index 126d21dc2..680ddc8cb 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/idx_cockroach.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/idx_cockroach.migrations @@ -1,7 +1,7 @@ --1611775717, 1.0__initial.sql --1338613903, 1.1.sql --1958981572, 1.2__dropsFor_1.1.sql -1074808242, 1.3.sql -546721540, 1.4__dropsFor_1.3.sql +246318791, 1.0__initial.sql +1109849447, 1.1.sql +240919209, 1.2__dropsFor_1.1.sql +612721597, 1.3.sql +-820814009, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.0__initial.sql index bc5ff797e..7afc39559 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.0__initial.sql @@ -159,11 +159,11 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply post alter create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys; create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys; alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; @@ -173,3 +173,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.1.sql index dda555e4b..b459d8c09 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.1.sql @@ -33,8 +33,6 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- db2 does not support parial null indices :( - so we have to clean; @@ -42,16 +40,12 @@ update migtest_e_basic set status = 'N' where id = 1; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -79,6 +73,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 drop not null; alter table migtest_e_softdelete add column deleted smallint default 0 default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys; -- NOTE: table has @History - special migration may be necessary @@ -91,8 +86,7 @@ create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys; comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict; @@ -119,3 +113,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.2__dropsFor_1.1.sql index 248e4eb1d..c7f896822 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.2__dropsFor_1.1.sql @@ -1,10 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table migtest_e_ref; +drop sequence migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.3.sql index e70e9c4fe..7e64cc664 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.3.sql @@ -28,10 +28,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status drop not null; alter table migtest_e_basic alter column status2 set data type varchar(1); @@ -52,6 +51,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); @@ -60,10 +60,11 @@ create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.4__dropsFor_1.3.sql index 9c502bad5..43523ab64 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.4__dropsFor_1.3.sql @@ -1,6 +1,5 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -15,7 +14,9 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table migtest_e_user; +drop sequence migtest_e_user_seq; drop table migtest_mtm_c_migtest_mtm_m; drop table migtest_mtm_m_migtest_mtm_c; drop table migtest_mtm_m_phone_numbers; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/idx_db2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/idx_db2.migrations index 93127463e..85f2f8601 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/idx_db2.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/idx_db2.migrations @@ -1,7 +1,7 @@ --2143374692, 1.0__initial.sql -871483623, 1.1.sql --812302674, 1.2__dropsFor_1.1.sql --628362807, 1.3.sql --915919511, 1.4__dropsFor_1.3.sql +101990988, 1.0__initial.sql +1882152352, 1.1.sql +-2081356955, 1.2__dropsFor_1.1.sql +-1397487290, 1.3.sql +-1610622815, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.0__initial.sql index 9023b5a61..bfc570b84 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.0__initial.sql @@ -159,11 +159,11 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply post alter create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys; create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys; alter table migtest_e_ref add constraint uq_mgtst__rf_nm unique (name); -create index ix_mgtst__b_eu8csq on migtest_e_basic (indextest1); -create index ix_mgtst__b_eu8csu on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_mgtst_fk_mok1xj on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_mgtst_fk_65kf6l foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; @@ -173,3 +173,5 @@ alter table migtest_fk_set_null add constraint fk_mgtst_fk_wicx8x foreign key (o create index ix_mgtst__bsc_rf_d on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_mgtst__bsc_rf_d foreign key (eref_id) references migtest_e_ref (id) on delete restrict; +create index ix_mgtst__b_eu8csq on migtest_e_basic (indextest1); +create index ix_mgtst__b_eu8csu on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.1.sql index 0cef0468a..058fce09a 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.1.sql @@ -33,8 +33,6 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- db2 does not support parial null indices :( - so we have to clean; @@ -42,16 +40,12 @@ update migtest_e_basic set status = 'N' where id = 1; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -79,6 +73,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 drop not null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_mgtst__bsc_stts check ( status in ('N','A','I','?')); create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys; -- NOTE: table has @History - special migration may be necessary @@ -91,8 +86,7 @@ create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys; comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_mgtst__b_eu8css on migtest_e_basic (indextest3); -create index ix_mgtst__b_eu8csv on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_mgtst_mt_3ug4ok on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mt_93awga foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict; @@ -119,3 +113,5 @@ alter table migtest_fk_set_null add constraint fk_mgtst_fk_wicx8x foreign key (o alter table migtest_e_basic add constraint fk_mgtst__bsc_sr_d foreign key (user_id) references migtest_e_user (id) on delete restrict; alter table migtest_oto_child add constraint fk_mgtst_t__csyl38 foreign key (master_id) references migtest_oto_master (id) on delete restrict; +create index ix_mgtst__b_eu8css on migtest_e_basic (indextest3); +create index ix_mgtst__b_eu8csv on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.2__dropsFor_1.1.sql index 248e4eb1d..c7f896822 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.2__dropsFor_1.1.sql @@ -1,10 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table migtest_e_ref; +drop sequence migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.3.sql index 95cab2ab2..5adb11e10 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.3.sql @@ -28,10 +28,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status drop not null; alter table migtest_e_basic alter column status2 set data type varchar(1); @@ -52,6 +51,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_ref add constraint uq_mgtst__rf_nm unique (name); alter table migtest_e_basic add constraint ck_mgtst__bsc_stts check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_mgtst__b_z543fg check ( status2 in ('N','A','I')); @@ -60,10 +60,11 @@ create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) alter table migtest_e_enum add constraint ck_mgtst__n_773sok check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_mgtst__b_eu8csq on migtest_e_basic (indextest1); -create index ix_mgtst__b_eu8csu on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_mgtst_fk_65kf6l foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; alter table migtest_fk_set_null add constraint fk_mgtst_fk_wicx8x foreign key (one_id) references migtest_fk_one (id) on delete set null; create index ix_mgtst__bsc_rf_d on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_mgtst__bsc_rf_d foreign key (eref_id) references migtest_e_ref (id) on delete restrict; +create index ix_mgtst__b_eu8csq on migtest_e_basic (indextest1); +create index ix_mgtst__b_eu8csu on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.4__dropsFor_1.3.sql index 9c502bad5..43523ab64 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.4__dropsFor_1.3.sql @@ -1,6 +1,5 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -15,7 +14,9 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table migtest_e_user; +drop sequence migtest_e_user_seq; drop table migtest_mtm_c_migtest_mtm_m; drop table migtest_mtm_m_migtest_mtm_c; drop table migtest_mtm_m_phone_numbers; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/idx_db2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/idx_db2.migrations index 9c2586f1a..58003092b 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/idx_db2.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/idx_db2.migrations @@ -1,7 +1,7 @@ -1284033584, 1.0__initial.sql -421195742, 1.1.sql --812302674, 1.2__dropsFor_1.1.sql --1132737052, 1.3.sql --915919511, 1.4__dropsFor_1.3.sql +1364985791, 1.0__initial.sql +1265418767, 1.1.sql +-2081356955, 1.2__dropsFor_1.1.sql +-46810481, 1.3.sql +-1610622815, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql index 09c308846..714ed5d30 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql @@ -159,11 +159,11 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply post alter create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys; create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys; alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; @@ -173,3 +173,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql index 6fcb022f4..365d84144 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql @@ -33,8 +33,6 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- db2 does not support parial null indices :( - so we have to clean; @@ -42,16 +40,12 @@ update migtest_e_basic set status = 'N' where id = 1; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -79,6 +73,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 drop not null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys; -- NOTE: table has @History - special migration may be necessary @@ -91,8 +86,7 @@ create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys; comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict; @@ -119,3 +113,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql index 248e4eb1d..c7f896822 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql @@ -1,10 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table migtest_e_ref; +drop sequence migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql index 4895ff052..6c4433f9d 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql @@ -28,10 +28,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status drop not null; alter table migtest_e_basic alter column status2 set data type varchar(1); @@ -52,6 +51,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); @@ -60,10 +60,11 @@ create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql index 9c502bad5..43523ab64 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql @@ -1,6 +1,5 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -15,7 +14,9 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table migtest_e_user; +drop sequence migtest_e_user_seq; drop table migtest_mtm_c_migtest_mtm_m; drop table migtest_mtm_m_migtest_mtm_c; drop table migtest_mtm_m_phone_numbers; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations index fd0c912fb..99b573f52 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations @@ -1,7 +1,7 @@ --900865287, 1.0__initial.sql -2094022383, 1.1.sql --812302674, 1.2__dropsFor_1.1.sql -291385069, 1.3.sql --915919511, 1.4__dropsFor_1.3.sql +840828324, 1.0__initial.sql +-1269751430, 1.1.sql +-2081356955, 1.2__dropsFor_1.1.sql +-998558087, 1.3.sql +-1610622815, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.0__initial.sql index 09c308846..714ed5d30 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.0__initial.sql @@ -159,11 +159,11 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply post alter create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys; create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys; alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; @@ -173,3 +173,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.1.sql index 6fcb022f4..365d84144 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.1.sql @@ -33,8 +33,6 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- db2 does not support parial null indices :( - so we have to clean; @@ -42,16 +40,12 @@ update migtest_e_basic set status = 'N' where id = 1; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -79,6 +73,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 drop not null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys; -- NOTE: table has @History - special migration may be necessary @@ -91,8 +86,7 @@ create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys; comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict; @@ -119,3 +113,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.2__dropsFor_1.1.sql index 248e4eb1d..c7f896822 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.2__dropsFor_1.1.sql @@ -1,10 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table migtest_e_ref; +drop sequence migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.3.sql index 4895ff052..6c4433f9d 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.3.sql @@ -28,10 +28,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status drop not null; alter table migtest_e_basic alter column status2 set data type varchar(1); @@ -52,6 +51,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); @@ -60,10 +60,11 @@ create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.4__dropsFor_1.3.sql index 9c502bad5..43523ab64 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.4__dropsFor_1.3.sql @@ -1,6 +1,5 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -15,7 +14,9 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table migtest_e_user; +drop sequence migtest_e_user_seq; drop table migtest_mtm_c_migtest_mtm_m; drop table migtest_mtm_m_migtest_mtm_c; drop table migtest_mtm_m_phone_numbers; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/idx_db2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/idx_db2.migrations index fd0c912fb..99b573f52 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/idx_db2.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/idx_db2.migrations @@ -1,7 +1,7 @@ --900865287, 1.0__initial.sql -2094022383, 1.1.sql --812302674, 1.2__dropsFor_1.1.sql -291385069, 1.3.sql --915919511, 1.4__dropsFor_1.3.sql +840828324, 1.0__initial.sql +-1269751430, 1.1.sql +-2081356955, 1.2__dropsFor_1.1.sql +-998558087, 1.3.sql +-1610622815, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.0__initial.sql index 988f55d66..d816db2f9 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.0__initial.sql @@ -162,8 +162,7 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -173,3 +172,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.1.sql index b1b8e3eac..4397ca096 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.1.sql @@ -33,24 +33,18 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -78,6 +72,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 set null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -90,8 +85,7 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -118,3 +112,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.2__dropsFor_1.1.sql index 219f0c1c5..4ec79a34c 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.2__dropsFor_1.1.sql @@ -1,8 +1,10 @@ -- Migrationscripts for ebean unittest +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.3.sql index a9ee65034..9b70e9ce7 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.3.sql @@ -29,10 +29,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic alter column status2 varchar(1); @@ -53,6 +52,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 set null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); @@ -60,10 +60,11 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.4__dropsFor_1.3.sql index 033f0a5a2..b4087d6d6 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.4__dropsFor_1.3.sql @@ -1,4 +1,5 @@ -- Migrationscripts for ebean unittest +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -13,6 +14,7 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/idx_generic.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/idx_generic.migrations index bef530d63..763650cdd 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/idx_generic.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/idx_generic.migrations @@ -1,6 +1,6 @@ --2041271676, 1.0__initial.sql -1297418193, 1.1.sql --155876508, 1.2__dropsFor_1.1.sql --228806652, 1.3.sql -767202122, 1.4__dropsFor_1.3.sql +-1254950549, 1.0__initial.sql +-905429129, 1.1.sql +1279151426, 1.2__dropsFor_1.1.sql +110210997, 1.3.sql +80209848, 1.4__dropsFor_1.3.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.0__initial.sql index 32827c7f1..c2e7c9fea 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.0__initial.sql @@ -99,32 +99,24 @@ create table migtest_e_history2 ( obsolete_string2 varchar(255), constraint pk_migtest_e_history2 primary key (id) ); -alter table migtest_e_history2 add column sys_period_start timestamp default now(); -alter table migtest_e_history2 add column sys_period_end timestamp; create table migtest_e_history3 ( id integer generated by default as identity not null, test_string varchar(255), constraint pk_migtest_e_history3 primary key (id) ); -alter table migtest_e_history3 add column sys_period_start timestamp default now(); -alter table migtest_e_history3 add column sys_period_end timestamp; create table migtest_e_history4 ( id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history4 primary key (id) ); -alter table migtest_e_history4 add column sys_period_start timestamp default now(); -alter table migtest_e_history4 add column sys_period_end timestamp; create table migtest_e_history5 ( id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history5 primary key (id) ); -alter table migtest_e_history5 add column sys_period_start timestamp default now(); -alter table migtest_e_history5 add column sys_period_end timestamp; create table migtest_e_history6 ( id integer generated by default as identity not null, @@ -132,8 +124,6 @@ create table migtest_e_history6 ( test_number2 integer not null, constraint pk_migtest_e_history6 primary key (id) ); -alter table migtest_e_history6 add column sys_period_start timestamp default now(); -alter table migtest_e_history6 add column sys_period_end timestamp; create table migtest_e_ref ( id integer generated by default as identity not null, @@ -172,6 +162,18 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply alter tables +alter table migtest_e_history2 add column sys_period_start timestamp default now(); +alter table migtest_e_history2 add column sys_period_end timestamp; +alter table migtest_e_history3 add column sys_period_start timestamp default now(); +alter table migtest_e_history3 add column sys_period_end timestamp; +alter table migtest_e_history4 add column sys_period_start timestamp default now(); +alter table migtest_e_history4 add column sys_period_end timestamp; +alter table migtest_e_history5 add column sys_period_start timestamp default now(); +alter table migtest_e_history5 add column sys_period_end timestamp; +alter table migtest_e_history6 add column sys_period_start timestamp default now(); +alter table migtest_e_history6 add column sys_period_end timestamp; +-- apply post alter create table migtest_e_history2_history( id integer, test_string varchar(255), @@ -215,8 +217,7 @@ create table migtest_e_history6_history( ); create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -226,6 +227,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history trigger create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger"; create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger"; create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger"; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql index 21a9484b5..860ca30d5 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql @@ -37,26 +37,18 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; -alter table migtest_e_history add column sys_period_start timestamp default now(); -alter table migtest_e_history add column sys_period_end timestamp; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -71,6 +63,8 @@ alter table migtest_e_basic add column new_boolean_field boolean default true no alter table migtest_e_basic add column new_boolean_field2 boolean default true not null; alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column new_integer integer default 42 not null; +alter table migtest_e_history add column sys_period_start timestamp default now(); +alter table migtest_e_history add column sys_period_end timestamp; alter table migtest_e_history alter column test_string bigint; alter table migtest_e_history2 alter column test_string set default 'unknown'; alter table migtest_e_history2 alter column test_string set not null; @@ -89,6 +83,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 set null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -109,8 +104,7 @@ create view migtest_e_history_with_history as select * from migtest_e_history un comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -137,6 +131,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; @@ -145,6 +142,7 @@ create view migtest_e_history4_with_history as select * from migtest_e_history4 create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger create trigger migtest_e_history_history_upd before update,delete on migtest_e_history for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger"; -- changes: [add test_string2, add test_string3, add new_column] drop trigger migtest_e_history2_history_upd; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.2__dropsFor_1.1.sql index 689634515..1d3691cc8 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.2__dropsFor_1.1.sql @@ -1,8 +1,7 @@ -- Migrationscripts for ebean unittest -- drop dependencies drop view if exists migtest_e_history2_with_history; --- apply changes -drop sequence if exists migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; @@ -11,9 +10,13 @@ alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; alter table migtest_e_history2_history drop column obsolete_string1; alter table migtest_e_history2_history drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref; +drop sequence if exists migtest_e_ref_seq; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; +-- apply history trigger -- changes: [drop obsolete_string1, drop obsolete_string2] drop trigger migtest_e_history2_history_upd; create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger"; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.3.sql index 8a0e8c2b1..d7e856699 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.3.sql @@ -32,10 +32,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic alter column status2 varchar(1); @@ -59,6 +58,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 set null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); @@ -66,19 +66,22 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; +-- apply history trigger -- changes: [add obsolete_string1, add obsolete_string2] drop trigger migtest_e_history2_history_upd; create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger"; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.4__dropsFor_1.3.sql index 87113bc71..d6ce59146 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.4__dropsFor_1.3.sql @@ -6,8 +6,7 @@ drop table migtest_e_history_history; drop view if exists migtest_e_history2_with_history; drop view if exists migtest_e_history5_with_history; --- apply changes -drop sequence if exists migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -28,14 +27,18 @@ alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_history5_history drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user; +drop sequence if exists migtest_e_user_seq; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; drop table if exists migtest_mtm_m_phone_numbers; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger -- changes: [drop test_string2, drop test_string3, drop new_column] drop trigger migtest_e_history2_history_upd; create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger"; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/idx_h2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/idx_h2.migrations index 1470afa26..a9f4a8b34 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/idx_h2.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/idx_h2.migrations @@ -1,8 +1,8 @@ --108042782, 1.0__initial.sql -1618208971, 1.1.sql --159071745, 1.2__dropsFor_1.1.sql -1958704277, 1.3.sql -1195655701, 1.4__dropsFor_1.3.sql +-698689813, 1.0__initial.sql +2028346373, 1.1.sql +-2063980912, 1.2__dropsFor_1.1.sql +-508824171, 1.3.sql +511468518, 1.4__dropsFor_1.3.sql 783227075, R__multi_comments.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.0__initial.sql index 38bc72854..ef35b959a 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.0__initial.sql @@ -162,8 +162,8 @@ create column table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); --- explicit index "ix_migtest_e_basic_indextest1" for single column "indextest1" of table "migtest_e_basic" is not necessary; --- explicit index "ix_migtest_e_basic_indextest5" for single column "indextest5" of table "migtest_e_basic" is not necessary; +-- apply alter tables +-- foreign keys and indices -- explicit index "ix_migtest_fk_cascade_one_id" for single column "one_id" of table "migtest_fk_cascade" is not necessary; alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -173,6 +173,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for -- explicit index "ix_migtest_e_basic_eref_id" for single column "eref_id" of table "migtest_e_basic" is not necessary; alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +-- explicit index "ix_migtest_e_basic_indextest1" for single column "indextest1" of table "migtest_e_basic" is not necessary; +-- explicit index "ix_migtest_e_basic_indextest5" for single column "indextest5" of table "migtest_e_basic" is not necessary; +-- apply history view create column table migtest_e_history2_history ( id integer, test_string nvarchar(255), diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.1.sql index 6e55680e3..85c0c0c24 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.1.sql @@ -75,29 +75,23 @@ create column table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - alter table migtest_e_history2 drop system versioning; -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - alter table migtest_e_history3 drop system versioning; alter table migtest_e_history4 drop system versioning; alter table migtest_e_history5 drop system versioning; - alter table migtest_e_history6 drop system versioning; -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add (one_key integer, two_key nvarchar(127)); alter table migtest_ckey_parent add (assoc_id integer); @@ -128,6 +122,7 @@ alter table migtest_e_history6_history alter (test_number1 integer default 42 no test_number2 integer); alter table migtest_e_softdelete add (deleted boolean default false not null); alter table migtest_oto_child add (master_id bigint); +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); -- cannot create unique index "uq_migtest_e_basic_description" on table "migtest_e_basic" with nullable columns; -- NOTE: table has @History - special migration may be necessary @@ -145,8 +140,7 @@ alter table migtest_e_history3 add system versioning history table migtest_e_his alter table migtest_e_history4 add system versioning history table migtest_e_history4_history not validated; alter table migtest_e_history5 add system versioning history table migtest_e_history5_history not validated; alter table migtest_e_history6 add system versioning history table migtest_e_history6_history not validated; --- explicit index "ix_migtest_e_basic_indextest3" for single column "indextest3" of table "migtest_e_basic" is not necessary; --- explicit index "ix_migtest_e_basic_indextest6" for single column "indextest6" of table "migtest_e_basic" is not necessary; +-- foreign keys and indices -- explicit index "ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c" for single column "migtest_mtm_c_id" of table "migtest_mtm_c_migtest_mtm_m" is not necessary; alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -173,6 +167,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +-- explicit index "ix_migtest_e_basic_indextest3" for single column "indextest3" of table "migtest_e_basic" is not necessary; +-- explicit index "ix_migtest_e_basic_indextest6" for single column "indextest6" of table "migtest_e_basic" is not necessary; +-- apply history view create column table migtest_e_history_history ( id integer, test_string bigint, diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.2__dropsFor_1.1.sql index 01f71574e..14a60d921 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.2__dropsFor_1.1.sql @@ -1,8 +1,7 @@ -- Migrationscripts for ebean unittest -- apply changes alter table migtest_e_history2 drop system versioning; - - +-- apply alter tables CALL usp_ebean_drop_column('migtest_e_basic', 'description_file'); CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean'); CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean2'); @@ -11,5 +10,6 @@ CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string1'); CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string2'); CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1'); CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string2'); +-- apply post alter alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated; drop table migtest_e_ref cascade; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.3.sql index cf5fcfee7..00e190b9c 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.3.sql @@ -88,15 +88,14 @@ create column table migtest_e_ref ( update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - alter table migtest_e_history2 drop system versioning; - alter table migtest_e_history3 drop system versioning; alter table migtest_e_history4 drop system versioning; alter table migtest_e_history6 drop system versioning; -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter (status nvarchar(1) default null, status2 nclob not null); alter table migtest_e_basic alter (status2 nvarchar(1) default 'N' not null, @@ -119,6 +118,7 @@ alter table migtest_e_history6 alter (test_number1 integer default null, test_number2 integer default 7 not null); alter table migtest_e_history6_history alter (test_number1 integer default null, test_number2 integer default 7 not null); +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); -- cannot create unique index "uq_migtest_e_basic_indextest2" on table "migtest_e_basic" with nullable columns; @@ -130,10 +130,11 @@ alter table migtest_e_history2 add system versioning history table migtest_e_his alter table migtest_e_history3 add system versioning history table migtest_e_history3_history not validated; alter table migtest_e_history4 add system versioning history table migtest_e_history4_history not validated; alter table migtest_e_history6 add system versioning history table migtest_e_history6_history not validated; --- explicit index "ix_migtest_e_basic_indextest1" for single column "indextest1" of table "migtest_e_basic" is not necessary; --- explicit index "ix_migtest_e_basic_indextest5" for single column "indextest5" of table "migtest_e_basic" is not necessary; +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; -- explicit index "ix_migtest_e_basic_eref_id" for single column "eref_id" of table "migtest_e_basic" is not necessary; alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +-- explicit index "ix_migtest_e_basic_indextest1" for single column "indextest1" of table "migtest_e_basic" is not necessary; +-- explicit index "ix_migtest_e_basic_indextest5" for single column "indextest5" of table "migtest_e_basic" is not necessary; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.4__dropsFor_1.3.sql index 16c329132..d49afa4be 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.4__dropsFor_1.3.sql @@ -6,13 +6,8 @@ alter table migtest_e_history drop (sys_period_start,sys_period_end); drop table migtest_e_history_history cascade; -- apply changes alter table migtest_e_history2 drop system versioning; - - - alter table migtest_e_history5 drop system versioning; - - - +-- apply alter tables CALL usp_ebean_drop_column('migtest_ckey_detail', 'one_key'); CALL usp_ebean_drop_column('migtest_ckey_detail', 'two_key'); CALL usp_ebean_drop_column('migtest_ckey_parent', 'assoc_id'); @@ -31,6 +26,7 @@ CALL usp_ebean_drop_column('migtest_e_history5', 'test_boolean'); CALL usp_ebean_drop_column('migtest_e_history5_history', 'test_boolean'); CALL usp_ebean_drop_column('migtest_e_softdelete', 'deleted'); CALL usp_ebean_drop_column('migtest_oto_child', 'master_id'); +-- apply post alter alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated; alter table migtest_e_history5 add system versioning history table migtest_e_history5_history not validated; drop table migtest_e_user cascade; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/idx_hana.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/idx_hana.migrations index bf6b1e14d..5c4367d3b 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/idx_hana.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/idx_hana.migrations @@ -1,8 +1,8 @@ -745347271, I__create_procs.sql -513351138, 1.0__initial.sql -402034887, 1.1.sql --40882406, 1.2__dropsFor_1.1.sql -1285995142, 1.3.sql --212925879, 1.4__dropsFor_1.3.sql +1671978053, 1.0__initial.sql +945235204, 1.1.sql +197547825, 1.2__dropsFor_1.1.sql +1030116997, 1.3.sql +1812245353, 1.4__dropsFor_1.3.sql 1906063401, R__order_views_hana.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql index ad740f297..2daf407bc 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql @@ -162,8 +162,7 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -173,3 +172,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.1.sql index 10809373f..0d1f86821 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.1.sql @@ -33,24 +33,18 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -78,6 +72,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 set null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -90,8 +85,7 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -118,3 +112,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.2__dropsFor_1.1.sql index a19014aa6..f33b6874f 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.2__dropsFor_1.1.sql @@ -1,10 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence if exists migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref; +drop sequence if exists migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.3.sql index 55ced8bde..b3adec42a 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.3.sql @@ -29,10 +29,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic alter column status2 varchar(1); @@ -53,6 +52,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 set null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); @@ -60,10 +60,11 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.4__dropsFor_1.3.sql index 51c74520d..19c77f211 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.4__dropsFor_1.3.sql @@ -1,6 +1,5 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence if exists migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -15,7 +14,9 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user; +drop sequence if exists migtest_e_user_seq; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; drop table if exists migtest_mtm_m_phone_numbers; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations index b13abc604..32896a876 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations @@ -1,7 +1,7 @@ -1469726733, 1.0__initial.sql --525203491, 1.1.sql --281614627, 1.2__dropsFor_1.1.sql --844698846, 1.3.sql -1340995947, 1.4__dropsFor_1.3.sql +442457363, 1.0__initial.sql +-1664513570, 1.1.sql +-300925212, 1.2__dropsFor_1.1.sql +-612892741, 1.3.sql +-972999284, 1.4__dropsFor_1.3.sql 861001272, R__order_views_hsqldb.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.0__initial.sql index ea67bcb04..3533dde95 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.0__initial.sql @@ -159,8 +159,7 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -170,6 +169,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history view alter table migtest_e_history2 add system versioning; alter table migtest_e_history3 add system versioning; alter table migtest_e_history4 add system versioning; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.1.sql index 4e0c06213..b1fa065d3 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.1.sql @@ -30,47 +30,42 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -alter table migtest_e_basic modify status varchar(1) not null default 'A'; -alter table migtest_e_basic modify status2 varchar(127); -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; -alter table migtest_e_basic modify user_id integer; - -alter table migtest_e_history modify test_string bigint; -- NOTE: table has @History - special migration may be necessary SET @@system_versioning_alter_history = 1; update migtest_e_history2 set test_string = 'unknown' where test_string is null; -alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown'; - -alter table migtest_e_history4 modify test_number bigint; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; -alter table migtest_e_history6 modify test_number1 integer not null default 42; -alter table migtest_e_history6 modify test_number2 integer; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; +alter table migtest_e_basic modify status varchar(1) not null default 'A'; +alter table migtest_e_basic modify status2 varchar(127); +alter table migtest_e_basic modify user_id integer; alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null; alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null; alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null; alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column new_integer integer default 42 not null; +alter table migtest_e_history modify test_string bigint; +alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown'; alter table migtest_e_history2 add column test_string2 varchar(255); alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null; alter table migtest_e_history2 add column new_column varchar(20); +alter table migtest_e_history4 modify test_number bigint; alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not null; +alter table migtest_e_history6 modify test_number1 integer not null default 42; +alter table migtest_e_history6 modify test_number2 integer; alter table migtest_e_softdelete add column deleted tinyint(1) default 0 not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary update migtest_e_basic set new_boolean_field = old_boolean; @@ -80,8 +75,7 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); alter table migtest_e_history comment = 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -108,6 +102,10 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- apply history view alter table migtest_e_history add system versioning; +-- apply history trigger lock tables migtest_e_history3 write; unlock tables; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.2__dropsFor_1.1.sql index a19014aa6..f33b6874f 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.2__dropsFor_1.1.sql @@ -1,10 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence if exists migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref; +drop sequence if exists migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.3.sql index 3f9a60e36..3063a1427 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.3.sql @@ -21,37 +21,39 @@ create table migtest_e_ref ( constraint pk_migtest_e_ref primary key (id) ); -alter table migtest_e_basic modify status varchar(1); update migtest_e_basic set status2 = 'N' where status2 is null; -alter table migtest_e_basic modify status2 varchar(1) not null default 'N'; update migtest_e_basic set user_id = 23 where user_id is null; -alter table migtest_e_basic modify user_id integer not null default 23; - -alter table migtest_e_history2 modify test_string varchar(255); - -alter table migtest_e_history4 modify test_number integer; -alter table migtest_e_history6 modify test_number1 integer; -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; -alter table migtest_e_history6 modify test_number2 integer not null default 7; +-- apply alter tables +alter table migtest_e_basic modify status varchar(1); +alter table migtest_e_basic modify status2 varchar(1) not null default 'N'; +alter table migtest_e_basic modify user_id integer not null default 23; alter table migtest_e_basic add column description_file longblob; alter table migtest_e_basic add column old_boolean tinyint(1) default 0 not null; alter table migtest_e_basic add column old_boolean2 tinyint(1); alter table migtest_e_basic add column eref_id integer; +alter table migtest_e_history2 modify test_string varchar(255); alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255); +alter table migtest_e_history4 modify test_number integer; +alter table migtest_e_history6 modify test_number1 integer; +alter table migtest_e_history6 modify test_number2 integer not null default 7; +-- apply post alter alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); alter table migtest_e_history comment = ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history trigger lock tables migtest_e_history3 write; unlock tables; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.4__dropsFor_1.3.sql index 74fd7d558..f3cc59238 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.4__dropsFor_1.3.sql @@ -1,6 +1,5 @@ -- Migrationscripts for ebean unittest --- apply changes -drop sequence if exists migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -15,8 +14,11 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user; +drop sequence if exists migtest_e_user_seq; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; drop table if exists migtest_mtm_m_phone_numbers; +-- apply history view alter table migtest_e_history drop system versioning; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/idx_mariadb.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/idx_mariadb.migrations index b79a76906..5f13ba80f 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/idx_mariadb.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/idx_mariadb.migrations @@ -1,7 +1,7 @@ --616900688, 1.0__initial.sql -719322817, 1.1.sql --281614627, 1.2__dropsFor_1.1.sql --846393359, 1.3.sql -588647554, 1.4__dropsFor_1.3.sql +2035483098, 1.0__initial.sql +-924429039, 1.1.sql +-300925212, 1.2__dropsFor_1.1.sql +-773358828, 1.3.sql +-1978922691, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql index ea67bcb04..3533dde95 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql @@ -159,8 +159,7 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -170,6 +169,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history view alter table migtest_e_history2 add system versioning; alter table migtest_e_history3 add system versioning; alter table migtest_e_history4 add system versioning; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.1.sql index 4e0c06213..b1fa065d3 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.1.sql @@ -30,47 +30,42 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -alter table migtest_e_basic modify status varchar(1) not null default 'A'; -alter table migtest_e_basic modify status2 varchar(127); -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; -alter table migtest_e_basic modify user_id integer; - -alter table migtest_e_history modify test_string bigint; -- NOTE: table has @History - special migration may be necessary SET @@system_versioning_alter_history = 1; update migtest_e_history2 set test_string = 'unknown' where test_string is null; -alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown'; - -alter table migtest_e_history4 modify test_number bigint; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; -alter table migtest_e_history6 modify test_number1 integer not null default 42; -alter table migtest_e_history6 modify test_number2 integer; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; +alter table migtest_e_basic modify status varchar(1) not null default 'A'; +alter table migtest_e_basic modify status2 varchar(127); +alter table migtest_e_basic modify user_id integer; alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null; alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null; alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null; alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column new_integer integer default 42 not null; +alter table migtest_e_history modify test_string bigint; +alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown'; alter table migtest_e_history2 add column test_string2 varchar(255); alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null; alter table migtest_e_history2 add column new_column varchar(20); +alter table migtest_e_history4 modify test_number bigint; alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not null; +alter table migtest_e_history6 modify test_number1 integer not null default 42; +alter table migtest_e_history6 modify test_number2 integer; alter table migtest_e_softdelete add column deleted tinyint(1) default 0 not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary update migtest_e_basic set new_boolean_field = old_boolean; @@ -80,8 +75,7 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); alter table migtest_e_history comment = 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -108,6 +102,10 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- apply history view alter table migtest_e_history add system versioning; +-- apply history trigger lock tables migtest_e_history3 write; unlock tables; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.2__dropsFor_1.1.sql index d60ca81e6..832cfb31f 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.2__dropsFor_1.1.sql @@ -1,16 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes +-- apply alter tables CALL usp_ebean_drop_column('migtest_e_basic', 'description_file'); - CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean'); - CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean2'); - CALL usp_ebean_drop_column('migtest_e_basic', 'eref_id'); - CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string1'); - CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string2'); - -drop sequence if exists migtest_e_ref_seq; +-- apply post alter drop table if exists migtest_e_ref; +drop sequence if exists migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.3.sql index 3f9a60e36..3063a1427 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.3.sql @@ -21,37 +21,39 @@ create table migtest_e_ref ( constraint pk_migtest_e_ref primary key (id) ); -alter table migtest_e_basic modify status varchar(1); update migtest_e_basic set status2 = 'N' where status2 is null; -alter table migtest_e_basic modify status2 varchar(1) not null default 'N'; update migtest_e_basic set user_id = 23 where user_id is null; -alter table migtest_e_basic modify user_id integer not null default 23; - -alter table migtest_e_history2 modify test_string varchar(255); - -alter table migtest_e_history4 modify test_number integer; -alter table migtest_e_history6 modify test_number1 integer; -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; -alter table migtest_e_history6 modify test_number2 integer not null default 7; +-- apply alter tables +alter table migtest_e_basic modify status varchar(1); +alter table migtest_e_basic modify status2 varchar(1) not null default 'N'; +alter table migtest_e_basic modify user_id integer not null default 23; alter table migtest_e_basic add column description_file longblob; alter table migtest_e_basic add column old_boolean tinyint(1) default 0 not null; alter table migtest_e_basic add column old_boolean2 tinyint(1); alter table migtest_e_basic add column eref_id integer; +alter table migtest_e_history2 modify test_string varchar(255); alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255); +alter table migtest_e_history4 modify test_number integer; +alter table migtest_e_history6 modify test_number1 integer; +alter table migtest_e_history6 modify test_number2 integer not null default 7; +-- apply post alter alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); alter table migtest_e_history comment = ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history trigger lock tables migtest_e_history3 write; unlock tables; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.4__dropsFor_1.3.sql index 897bb242c..7b20bd958 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.4__dropsFor_1.3.sql @@ -1,36 +1,24 @@ -- Migrationscripts for ebean unittest --- apply changes +-- apply alter tables CALL usp_ebean_drop_column('migtest_ckey_detail', 'one_key'); - CALL usp_ebean_drop_column('migtest_ckey_detail', 'two_key'); - CALL usp_ebean_drop_column('migtest_ckey_parent', 'assoc_id'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_string_field'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field2'); - CALL usp_ebean_drop_column('migtest_e_basic', 'progress'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_integer'); - CALL usp_ebean_drop_column('migtest_e_history2', 'test_string2'); - CALL usp_ebean_drop_column('migtest_e_history2', 'test_string3'); - CALL usp_ebean_drop_column('migtest_e_history2', 'new_column'); - CALL usp_ebean_drop_column('migtest_e_history5', 'test_boolean'); - CALL usp_ebean_drop_column('migtest_e_softdelete', 'deleted'); - CALL usp_ebean_drop_column('migtest_oto_child', 'master_id'); - -drop sequence if exists migtest_e_user_seq; +-- apply post alter drop table if exists migtest_e_user; +drop sequence if exists migtest_e_user_seq; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; drop table if exists migtest_mtm_m_phone_numbers; +-- apply history view alter table migtest_e_history drop system versioning; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations index fa767ed30..10fdd6684 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations @@ -1,8 +1,8 @@ 1835064798, I__create_procs.sql --616900688, 1.0__initial.sql -719322817, 1.1.sql -1660090057, 1.2__dropsFor_1.1.sql --846393359, 1.3.sql -2011305151, 1.4__dropsFor_1.3.sql +2035483098, 1.0__initial.sql +-924429039, 1.1.sql +-17652545, 1.2__dropsFor_1.1.sql +-773358828, 1.3.sql +-171059083, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.0__initial.sql index fc5f6562a..469183640 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.0__initial.sql @@ -96,32 +96,24 @@ create table migtest_e_history2 ( obsolete_string2 varchar(255), constraint pk_migtest_e_history2 primary key (id) ); -alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history2 add column sys_period_end datetime(6); create table migtest_e_history3 ( id integer auto_increment not null, test_string varchar(255), constraint pk_migtest_e_history3 primary key (id) ); -alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history3 add column sys_period_end datetime(6); create table migtest_e_history4 ( id integer auto_increment not null, test_number integer, constraint pk_migtest_e_history4 primary key (id) ); -alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history4 add column sys_period_end datetime(6); create table migtest_e_history5 ( id integer auto_increment not null, test_number integer, constraint pk_migtest_e_history5 primary key (id) ); -alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history5 add column sys_period_end datetime(6); create table migtest_e_history6 ( id integer auto_increment not null, @@ -129,8 +121,6 @@ create table migtest_e_history6 ( test_number2 integer not null, constraint pk_migtest_e_history6 primary key (id) ); -alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history6 add column sys_period_end datetime(6); create table migtest_e_ref ( id integer auto_increment not null, @@ -169,6 +159,18 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply alter tables +alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history2 add column sys_period_end datetime(6); +alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history3 add column sys_period_end datetime(6); +alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history4 add column sys_period_end datetime(6); +alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history5 add column sys_period_end datetime(6); +alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history6 add column sys_period_end datetime(6); +-- apply post alter create table migtest_e_history2_history( id integer, test_string varchar(255), @@ -212,8 +214,7 @@ create table migtest_e_history6_history( ); create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -223,6 +224,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history trigger delimiter $$ create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.1.sql index bde19e551..fa6a97be3 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.1.sql @@ -34,53 +34,48 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -alter table migtest_e_basic modify status varchar(1) not null default 'A'; -alter table migtest_e_basic modify status2 varchar(127); -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; -alter table migtest_e_basic modify user_id integer; - -alter table migtest_e_history add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history add column sys_period_end datetime(6); -alter table migtest_e_history modify test_string bigint; -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; -alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown'; - -alter table migtest_e_history4 modify test_number bigint; -alter table migtest_e_history4_history modify test_number bigint; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; -alter table migtest_e_history6 modify test_number1 integer not null default 42; -alter table migtest_e_history6 modify test_number2 integer; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; +alter table migtest_e_basic modify status varchar(1) not null default 'A'; +alter table migtest_e_basic modify status2 varchar(127); +alter table migtest_e_basic modify user_id integer; alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null; alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null; alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null; alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column new_integer integer default 42 not null; +alter table migtest_e_history add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history add column sys_period_end datetime(6); +alter table migtest_e_history modify test_string bigint; +alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown'; alter table migtest_e_history2 add column test_string2 varchar(255); alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null; alter table migtest_e_history2 add column new_column varchar(20); alter table migtest_e_history2_history add column test_string2 varchar(255); alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown'; alter table migtest_e_history2_history add column new_column varchar(20); +alter table migtest_e_history4 modify test_number bigint; +alter table migtest_e_history4_history modify test_number bigint; alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not null; alter table migtest_e_history5_history add column test_boolean tinyint(1) default 0; +alter table migtest_e_history6 modify test_number1 integer not null default 42; +alter table migtest_e_history6 modify test_number2 integer; alter table migtest_e_softdelete add column deleted tinyint(1) default 0 not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary update migtest_e_basic set new_boolean_field = old_boolean; @@ -98,8 +93,7 @@ create table migtest_e_history_history( create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history; alter table migtest_e_history comment = 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -126,6 +120,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; @@ -134,6 +131,7 @@ create view migtest_e_history4_with_history as select * from migtest_e_history4 create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger delimiter $$ create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.2__dropsFor_1.1.sql index 35e6c12a9..714f28069 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.2__dropsFor_1.1.sql @@ -1,24 +1,21 @@ -- Migrationscripts for ebean unittest -- drop dependencies drop view if exists migtest_e_history2_with_history; --- apply changes +-- apply alter tables CALL usp_ebean_drop_column('migtest_e_basic', 'description_file'); - CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean'); - CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean2'); - CALL usp_ebean_drop_column('migtest_e_basic', 'eref_id'); - CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string1'); -CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1'); - CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string2'); +CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1'); CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string2'); - +-- apply post alter drop table if exists migtest_e_ref; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; +-- apply history trigger lock tables migtest_e_history2 write; -- changes: [drop obsolete_string1, drop obsolete_string2] drop trigger migtest_e_history2_history_upd; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.3.sql index 1a396ceea..55e12654c 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.3.sql @@ -24,51 +24,54 @@ create table migtest_e_ref ( constraint pk_migtest_e_ref primary key (id) ); -alter table migtest_e_basic modify status varchar(1); update migtest_e_basic set status2 = 'N' where status2 is null; -alter table migtest_e_basic modify status2 varchar(1) not null default 'N'; update migtest_e_basic set user_id = 23 where user_id is null; -alter table migtest_e_basic modify user_id integer not null default 23; - -alter table migtest_e_history2 modify test_string varchar(255); - -alter table migtest_e_history4 modify test_number integer; -alter table migtest_e_history4_history modify test_number integer; -alter table migtest_e_history6 modify test_number1 integer; -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; -alter table migtest_e_history6 modify test_number2 integer not null default 7; +-- apply alter tables +alter table migtest_e_basic modify status varchar(1); +alter table migtest_e_basic modify status2 varchar(1) not null default 'N'; +alter table migtest_e_basic modify user_id integer not null default 23; alter table migtest_e_basic add column description_file longblob; alter table migtest_e_basic add column old_boolean tinyint(1) default 0 not null; alter table migtest_e_basic add column old_boolean2 tinyint(1); alter table migtest_e_basic add column eref_id integer; +alter table migtest_e_history2 modify test_string varchar(255); alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255); alter table migtest_e_history2_history add column obsolete_string1 varchar(255); alter table migtest_e_history2_history add column obsolete_string2 varchar(255); +alter table migtest_e_history4 modify test_number integer; +alter table migtest_e_history4_history modify test_number integer; +alter table migtest_e_history6 modify test_number1 integer; +alter table migtest_e_history6 modify test_number2 integer not null default 7; +-- apply post alter alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); alter table migtest_e_history comment = ''; alter table migtest_oto_child add constraint uq_m12_otoc72 unique (name); alter table migtest_oto_master add constraint uq_migtest_oto_master_name unique (name); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); -create index ix_m12_otoc72 on migtest_oto_child (name); -create index ix_migtest_oto_master_name on migtest_oto_master (name); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index ix_m12_otoc72 on migtest_oto_child (name); +create index ix_migtest_oto_master_name on migtest_oto_master (name); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; +-- apply history trigger lock tables migtest_e_history2 write, migtest_e_history3 write, migtest_e_history4 write; -- changes: [add obsolete_string1, add obsolete_string2] drop trigger migtest_e_history2_history_upd; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.4__dropsFor_1.3.sql index 35308200b..f02e1d3e7 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.4__dropsFor_1.3.sql @@ -7,49 +7,38 @@ drop table migtest_e_history_history; drop view if exists migtest_e_history2_with_history; drop view if exists migtest_e_history5_with_history; --- apply changes +-- apply alter tables CALL usp_ebean_drop_column('migtest_ckey_detail', 'one_key'); - CALL usp_ebean_drop_column('migtest_ckey_detail', 'two_key'); - CALL usp_ebean_drop_column('migtest_ckey_parent', 'assoc_id'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_string_field'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field2'); - CALL usp_ebean_drop_column('migtest_e_basic', 'progress'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_integer'); - CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_start'); CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_end'); CALL usp_ebean_drop_column('migtest_e_history2', 'test_string2'); -CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string2'); - CALL usp_ebean_drop_column('migtest_e_history2', 'test_string3'); -CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string3'); - CALL usp_ebean_drop_column('migtest_e_history2', 'new_column'); +CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string2'); +CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string3'); CALL usp_ebean_drop_column('migtest_e_history2_history', 'new_column'); - CALL usp_ebean_drop_column('migtest_e_history5', 'test_boolean'); CALL usp_ebean_drop_column('migtest_e_history5_history', 'test_boolean'); - CALL usp_ebean_drop_column('migtest_e_softdelete', 'deleted'); - CALL usp_ebean_drop_column('migtest_oto_child', 'master_id'); - +-- apply post alter drop table if exists migtest_e_user; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; drop table if exists migtest_mtm_m_phone_numbers; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger lock tables migtest_e_history2 write, migtest_e_history5 write; -- changes: [drop test_string2, drop test_string3, drop new_column] drop trigger migtest_e_history2_history_upd; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations index c80baaa9e..f56552467 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations @@ -1,8 +1,8 @@ 1835064798, I__create_procs.sql --677139473, 1.0__initial.sql --980860692, 1.1.sql -1986189381, 1.2__dropsFor_1.1.sql --297983164, 1.3.sql -950278009, 1.4__dropsFor_1.3.sql +-1593712798, 1.0__initial.sql +567923852, 1.1.sql +434939997, 1.2__dropsFor_1.1.sql +1523214469, 1.3.sql +-487286618, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql index 573bd7f17..584c09874 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql @@ -96,32 +96,24 @@ create table migtest_e_history2 ( obsolete_string2 varchar(255), constraint pk_migtest_e_history2 primary key (id) ); -alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history2 add column sys_period_end datetime(6); create table migtest_e_history3 ( id integer auto_increment not null, test_string varchar(255), constraint pk_migtest_e_history3 primary key (id) ); -alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history3 add column sys_period_end datetime(6); create table migtest_e_history4 ( id integer auto_increment not null, test_number integer, constraint pk_migtest_e_history4 primary key (id) ); -alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history4 add column sys_period_end datetime(6); create table migtest_e_history5 ( id integer auto_increment not null, test_number integer, constraint pk_migtest_e_history5 primary key (id) ); -alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history5 add column sys_period_end datetime(6); create table migtest_e_history6 ( id integer auto_increment not null, @@ -129,8 +121,6 @@ create table migtest_e_history6 ( test_number2 integer not null, constraint pk_migtest_e_history6 primary key (id) ); -alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history6 add column sys_period_end datetime(6); create table migtest_e_ref ( id integer auto_increment not null, @@ -169,6 +159,18 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply alter tables +alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history2 add column sys_period_end datetime(6); +alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history3 add column sys_period_end datetime(6); +alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history4 add column sys_period_end datetime(6); +alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history5 add column sys_period_end datetime(6); +alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history6 add column sys_period_end datetime(6); +-- apply post alter create table migtest_e_history2_history( id integer, test_string varchar(255), @@ -212,8 +214,7 @@ create table migtest_e_history6_history( ); create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -223,6 +224,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history trigger delimiter $$ create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.1.sql index bde19e551..fa6a97be3 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.1.sql @@ -34,53 +34,48 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -alter table migtest_e_basic modify status varchar(1) not null default 'A'; -alter table migtest_e_basic modify status2 varchar(127); -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; -alter table migtest_e_basic modify user_id integer; - -alter table migtest_e_history add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history add column sys_period_end datetime(6); -alter table migtest_e_history modify test_string bigint; -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; -alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown'; - -alter table migtest_e_history4 modify test_number bigint; -alter table migtest_e_history4_history modify test_number bigint; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; -alter table migtest_e_history6 modify test_number1 integer not null default 42; -alter table migtest_e_history6 modify test_number2 integer; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; +alter table migtest_e_basic modify status varchar(1) not null default 'A'; +alter table migtest_e_basic modify status2 varchar(127); +alter table migtest_e_basic modify user_id integer; alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null; alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null; alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null; alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column new_integer integer default 42 not null; +alter table migtest_e_history add column sys_period_start datetime(6) default now(6); +alter table migtest_e_history add column sys_period_end datetime(6); +alter table migtest_e_history modify test_string bigint; +alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown'; alter table migtest_e_history2 add column test_string2 varchar(255); alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null; alter table migtest_e_history2 add column new_column varchar(20); alter table migtest_e_history2_history add column test_string2 varchar(255); alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown'; alter table migtest_e_history2_history add column new_column varchar(20); +alter table migtest_e_history4 modify test_number bigint; +alter table migtest_e_history4_history modify test_number bigint; alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not null; alter table migtest_e_history5_history add column test_boolean tinyint(1) default 0; +alter table migtest_e_history6 modify test_number1 integer not null default 42; +alter table migtest_e_history6 modify test_number2 integer; alter table migtest_e_softdelete add column deleted tinyint(1) default 0 not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary update migtest_e_basic set new_boolean_field = old_boolean; @@ -98,8 +93,7 @@ create table migtest_e_history_history( create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history; alter table migtest_e_history comment = 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -126,6 +120,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; @@ -134,6 +131,7 @@ create view migtest_e_history4_with_history as select * from migtest_e_history4 create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger delimiter $$ create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.2__dropsFor_1.1.sql index 35e6c12a9..714f28069 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.2__dropsFor_1.1.sql @@ -1,24 +1,21 @@ -- Migrationscripts for ebean unittest -- drop dependencies drop view if exists migtest_e_history2_with_history; --- apply changes +-- apply alter tables CALL usp_ebean_drop_column('migtest_e_basic', 'description_file'); - CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean'); - CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean2'); - CALL usp_ebean_drop_column('migtest_e_basic', 'eref_id'); - CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string1'); -CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1'); - CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string2'); +CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1'); CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string2'); - +-- apply post alter drop table if exists migtest_e_ref; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; +-- apply history trigger lock tables migtest_e_history2 write; -- changes: [drop obsolete_string1, drop obsolete_string2] drop trigger migtest_e_history2_history_upd; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.3.sql index 1a396ceea..55e12654c 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.3.sql @@ -24,51 +24,54 @@ create table migtest_e_ref ( constraint pk_migtest_e_ref primary key (id) ); -alter table migtest_e_basic modify status varchar(1); update migtest_e_basic set status2 = 'N' where status2 is null; -alter table migtest_e_basic modify status2 varchar(1) not null default 'N'; update migtest_e_basic set user_id = 23 where user_id is null; -alter table migtest_e_basic modify user_id integer not null default 23; - -alter table migtest_e_history2 modify test_string varchar(255); - -alter table migtest_e_history4 modify test_number integer; -alter table migtest_e_history4_history modify test_number integer; -alter table migtest_e_history6 modify test_number1 integer; -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; -alter table migtest_e_history6 modify test_number2 integer not null default 7; +-- apply alter tables +alter table migtest_e_basic modify status varchar(1); +alter table migtest_e_basic modify status2 varchar(1) not null default 'N'; +alter table migtest_e_basic modify user_id integer not null default 23; alter table migtest_e_basic add column description_file longblob; alter table migtest_e_basic add column old_boolean tinyint(1) default 0 not null; alter table migtest_e_basic add column old_boolean2 tinyint(1); alter table migtest_e_basic add column eref_id integer; +alter table migtest_e_history2 modify test_string varchar(255); alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255); alter table migtest_e_history2_history add column obsolete_string1 varchar(255); alter table migtest_e_history2_history add column obsolete_string2 varchar(255); +alter table migtest_e_history4 modify test_number integer; +alter table migtest_e_history4_history modify test_number integer; +alter table migtest_e_history6 modify test_number1 integer; +alter table migtest_e_history6 modify test_number2 integer not null default 7; +-- apply post alter alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); alter table migtest_e_history comment = ''; alter table migtest_oto_child add constraint uq_m12_otoc72 unique (name); alter table migtest_oto_master add constraint uq_migtest_oto_master_name unique (name); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); -create index ix_m12_otoc72 on migtest_oto_child (name); -create index ix_migtest_oto_master_name on migtest_oto_master (name); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index ix_m12_otoc72 on migtest_oto_child (name); +create index ix_migtest_oto_master_name on migtest_oto_master (name); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; +-- apply history trigger lock tables migtest_e_history2 write, migtest_e_history3 write, migtest_e_history4 write; -- changes: [add obsolete_string1, add obsolete_string2] drop trigger migtest_e_history2_history_upd; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.4__dropsFor_1.3.sql index 35308200b..f02e1d3e7 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.4__dropsFor_1.3.sql @@ -7,49 +7,38 @@ drop table migtest_e_history_history; drop view if exists migtest_e_history2_with_history; drop view if exists migtest_e_history5_with_history; --- apply changes +-- apply alter tables CALL usp_ebean_drop_column('migtest_ckey_detail', 'one_key'); - CALL usp_ebean_drop_column('migtest_ckey_detail', 'two_key'); - CALL usp_ebean_drop_column('migtest_ckey_parent', 'assoc_id'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_string_field'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field2'); - CALL usp_ebean_drop_column('migtest_e_basic', 'progress'); - CALL usp_ebean_drop_column('migtest_e_basic', 'new_integer'); - CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_start'); CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_end'); CALL usp_ebean_drop_column('migtest_e_history2', 'test_string2'); -CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string2'); - CALL usp_ebean_drop_column('migtest_e_history2', 'test_string3'); -CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string3'); - CALL usp_ebean_drop_column('migtest_e_history2', 'new_column'); +CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string2'); +CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string3'); CALL usp_ebean_drop_column('migtest_e_history2_history', 'new_column'); - CALL usp_ebean_drop_column('migtest_e_history5', 'test_boolean'); CALL usp_ebean_drop_column('migtest_e_history5_history', 'test_boolean'); - CALL usp_ebean_drop_column('migtest_e_softdelete', 'deleted'); - CALL usp_ebean_drop_column('migtest_oto_child', 'master_id'); - +-- apply post alter drop table if exists migtest_e_user; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; drop table if exists migtest_mtm_m_phone_numbers; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger lock tables migtest_e_history2 write, migtest_e_history5 write; -- changes: [drop test_string2, drop test_string3, drop new_column] drop trigger migtest_e_history2_history_upd; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations index 86fe5db15..1206ec256 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations @@ -1,8 +1,8 @@ 1835064798, I__create_procs.sql --700647047, 1.0__initial.sql --980860692, 1.1.sql -1986189381, 1.2__dropsFor_1.1.sql --297983164, 1.3.sql -950278009, 1.4__dropsFor_1.3.sql +-1722692121, 1.0__initial.sql +567923852, 1.1.sql +434939997, 1.2__dropsFor_1.1.sql +1523214469, 1.3.sql +-487286618, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.0__initial.sql index 20359f42a..c1f425d97 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.0__initial.sql @@ -99,32 +99,24 @@ create table migtest_e_history2 ( obsolete_string2 varchar(255), constraint pk_migtest_e_history2 primary key (id) ); -alter table migtest_e_history2 add column sys_period_start datetime(6) default now(); -alter table migtest_e_history2 add column sys_period_end datetime(6); create table migtest_e_history3 ( id integer generated by default as identity not null, test_string varchar(255), constraint pk_migtest_e_history3 primary key (id) ); -alter table migtest_e_history3 add column sys_period_start datetime(6) default now(); -alter table migtest_e_history3 add column sys_period_end datetime(6); create table migtest_e_history4 ( id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history4 primary key (id) ); -alter table migtest_e_history4 add column sys_period_start datetime(6) default now(); -alter table migtest_e_history4 add column sys_period_end datetime(6); create table migtest_e_history5 ( id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history5 primary key (id) ); -alter table migtest_e_history5 add column sys_period_start datetime(6) default now(); -alter table migtest_e_history5 add column sys_period_end datetime(6); create table migtest_e_history6 ( id integer generated by default as identity not null, @@ -132,8 +124,6 @@ create table migtest_e_history6 ( test_number2 integer not null, constraint pk_migtest_e_history6 primary key (id) ); -alter table migtest_e_history6 add column sys_period_start datetime(6) default now(); -alter table migtest_e_history6 add column sys_period_end datetime(6); create table migtest_e_ref ( id integer generated by default as identity not null, @@ -172,6 +162,18 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply alter tables +alter table migtest_e_history2 add column sys_period_start datetime(6) default now(); +alter table migtest_e_history2 add column sys_period_end datetime(6); +alter table migtest_e_history3 add column sys_period_start datetime(6) default now(); +alter table migtest_e_history3 add column sys_period_end datetime(6); +alter table migtest_e_history4 add column sys_period_start datetime(6) default now(); +alter table migtest_e_history4 add column sys_period_end datetime(6); +alter table migtest_e_history5 add column sys_period_start datetime(6) default now(); +alter table migtest_e_history5 add column sys_period_end datetime(6); +alter table migtest_e_history6 add column sys_period_start datetime(6) default now(); +alter table migtest_e_history6 add column sys_period_end datetime(6); +-- apply post alter create table migtest_e_history2_history( id integer, test_string varchar(255), @@ -215,8 +217,7 @@ create table migtest_e_history6_history( ); create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; @@ -226,6 +227,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history trigger delimiter $$ create or replace trigger migtest_e_history2_history_upd for migtest_e_history2 before update for each row as NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond)); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql index 895ebaf6a..280a3c93a 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql @@ -37,26 +37,18 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; -alter table migtest_e_history add column sys_period_start datetime(6) default now(); -alter table migtest_e_history add column sys_period_end datetime(6); - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -71,6 +63,8 @@ alter table migtest_e_basic add column new_boolean_field boolean default true no alter table migtest_e_basic add column new_boolean_field2 boolean default true not null; alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column new_integer integer default 42 not null; +alter table migtest_e_history add column sys_period_start datetime(6) default now(); +alter table migtest_e_history add column sys_period_end datetime(6); alter table migtest_e_history alter column test_string bigint; alter table migtest_e_history2 alter column test_string set default 'unknown'; alter table migtest_e_history2 alter column test_string set not null; @@ -89,6 +83,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 set null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -107,8 +102,7 @@ create table migtest_e_history_history( ); create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id); @@ -135,6 +129,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id); alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id); +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; @@ -143,6 +140,7 @@ create view migtest_e_history4_with_history as select * from migtest_e_history4 create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger delimiter $$ create or replace trigger migtest_e_history_history_upd for migtest_e_history before update for each row as NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond)); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.2__dropsFor_1.1.sql index 7b635503a..e9a580609 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.2__dropsFor_1.1.sql @@ -1,8 +1,7 @@ -- Migrationscripts for ebean unittest -- drop dependencies drop view if exists migtest_e_history2_with_history; --- apply changes -drop sequence if exists migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; @@ -11,9 +10,13 @@ alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; alter table migtest_e_history2_history drop column obsolete_string1; alter table migtest_e_history2_history drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref; +drop sequence if exists migtest_e_ref_seq; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; +-- apply history trigger -- changes: [drop obsolete_string1, drop obsolete_string2] drop trigger migtest_e_history2_history_upd; drop trigger migtest_e_history2_history_del; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql index 1b5901359..14325fff2 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql @@ -32,10 +32,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic alter column status2 varchar(1); @@ -59,24 +58,28 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 set null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id); create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; +-- apply history trigger -- changes: [add obsolete_string1, add obsolete_string2] drop trigger migtest_e_history2_history_upd; drop trigger migtest_e_history2_history_del; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.4__dropsFor_1.3.sql index 9a52f39b1..3164bea0d 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.4__dropsFor_1.3.sql @@ -7,8 +7,7 @@ drop table migtest_e_history_history; drop view if exists migtest_e_history2_with_history; drop view if exists migtest_e_history5_with_history; --- apply changes -drop sequence if exists migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -29,14 +28,18 @@ alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_history5_history drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user; +drop sequence if exists migtest_e_user_seq; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; drop table if exists migtest_mtm_m_phone_numbers; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger -- changes: [drop test_string2, drop test_string3, drop new_column] drop trigger migtest_e_history2_history_upd; drop trigger migtest_e_history2_history_del; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations index 01b434395..1737ab36f 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations @@ -1,7 +1,7 @@ --1287707271, 1.0__initial.sql -1113108212, 1.1.sql --1342063278, 1.2__dropsFor_1.1.sql -384328282, 1.3.sql -7108518, 1.4__dropsFor_1.3.sql +-2130050389, 1.0__initial.sql +-575692842, 1.1.sql +-1790075022, 1.2__dropsFor_1.1.sql +-1755422280, 1.3.sql +782350608, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.0__initial.sql index 4d151f191..8654939bf 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.0__initial.sql @@ -162,8 +162,7 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; @@ -173,3 +172,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql index d213631d7..f07e7603e 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql @@ -78,24 +78,18 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add one_key number(10); alter table migtest_ckey_detail add two_key varchar2(127); alter table migtest_ckey_parent add assoc_id number(10); @@ -123,6 +117,7 @@ alter table migtest_e_history6 modify test_number1 not null; alter table migtest_e_history6 modify test_number2 null; alter table migtest_e_softdelete add deleted number(1) default 0 not null; alter table migtest_oto_child add master_id number(19); +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -135,8 +130,7 @@ alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( p -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_mgtst_mtm_c_mgtst_mt_3ug4ok on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mtm_c_mgtst_mt_93awga foreign key (migtest_mtm_c_id) references migtest_mtm_c (id); @@ -163,3 +157,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id); alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id); +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql index 4c0af48aa..ccecef36d 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql @@ -1,5 +1,13 @@ -- Migrationscripts for ebean unittest --- apply changes +-- apply alter tables +alter table migtest_e_basic drop column description_file; +alter table migtest_e_basic drop column old_boolean; +alter table migtest_e_basic drop column old_boolean2; +alter table migtest_e_basic drop column eref_id; +alter table migtest_e_history2 drop column obsolete_string1; +alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter +drop table migtest_e_ref cascade constraints purge; delimiter $$ declare expected_error exception; @@ -10,10 +18,3 @@ exception when expected_error then null; end; $$; -alter table migtest_e_basic drop column description_file; -alter table migtest_e_basic drop column old_boolean; -alter table migtest_e_basic drop column old_boolean2; -alter table migtest_e_basic drop column eref_id; -alter table migtest_e_history2 drop column obsolete_string1; -alter table migtest_e_history2 drop column obsolete_string2; -drop table migtest_e_ref cascade constraints purge; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql index 868163641..e3eded2c5 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql @@ -101,10 +101,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic modify status default null; alter table migtest_e_basic modify status null; alter table migtest_e_basic modify status2 varchar2(1); @@ -125,6 +124,7 @@ alter table migtest_e_history6 modify test_number1 default null; alter table migtest_e_history6 modify test_number1 null; alter table migtest_e_history6 modify test_number2 default 7; alter table migtest_e_history6 modify test_number2 not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); @@ -132,10 +132,11 @@ alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( st alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql index 065b946ee..38e77cae7 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql @@ -1,15 +1,5 @@ -- Migrationscripts for ebean unittest --- apply changes -delimiter $$ -declare - expected_error exception; - pragma exception_init(expected_error, -2289); -begin - execute immediate 'drop sequence migtest_e_user_seq'; -exception - when expected_error then null; -end; -$$; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -24,7 +14,18 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table migtest_e_user cascade constraints purge; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2289); +begin + execute immediate 'drop sequence migtest_e_user_seq'; +exception + when expected_error then null; +end; +$$; drop table migtest_mtm_c_migtest_mtm_m cascade constraints purge; drop table migtest_mtm_m_migtest_mtm_c cascade constraints purge; drop table migtest_mtm_m_phone_numbers cascade constraints purge; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations index 0311f72ce..668715769 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations @@ -1,8 +1,8 @@ -1732845114, 1.0__initial.sql -1978325167, 1.1.sql -716378422, 1.2__dropsFor_1.1.sql --740156680, 1.3.sql -1781097804, 1.4__dropsFor_1.3.sql +-554067191, 1.0__initial.sql +187324506, 1.1.sql +-582436324, 1.2__dropsFor_1.1.sql +-283226837, 1.3.sql +663051206, 1.4__dropsFor_1.3.sql 1357801733, R__oracle_only_views.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.0__initial.sql index 2178953b6..7886fee5f 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.0__initial.sql @@ -184,8 +184,7 @@ create table migtest_oto_master ( ); create sequence migtest_oto_master_seq; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; @@ -195,3 +194,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql index 6ae6721c2..944a30188 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql @@ -79,24 +79,18 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add one_key number(10); alter table migtest_ckey_detail add two_key varchar2(127); alter table migtest_ckey_parent add assoc_id number(10); @@ -124,6 +118,7 @@ alter table migtest_e_history6 modify test_number1 not null; alter table migtest_e_history6 modify test_number2 null; alter table migtest_e_softdelete add deleted number(1) default 0 not null; alter table migtest_oto_child add master_id number(19); +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -136,8 +131,7 @@ alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( p -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_mgtst_mtm_c_mgtst_mt_3ug4ok on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mtm_c_mgtst_mt_93awga foreign key (migtest_mtm_c_id) references migtest_mtm_c (id); @@ -164,3 +158,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id); alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id); +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql index 4c0af48aa..ccecef36d 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql @@ -1,5 +1,13 @@ -- Migrationscripts for ebean unittest --- apply changes +-- apply alter tables +alter table migtest_e_basic drop column description_file; +alter table migtest_e_basic drop column old_boolean; +alter table migtest_e_basic drop column old_boolean2; +alter table migtest_e_basic drop column eref_id; +alter table migtest_e_history2 drop column obsolete_string1; +alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter +drop table migtest_e_ref cascade constraints purge; delimiter $$ declare expected_error exception; @@ -10,10 +18,3 @@ exception when expected_error then null; end; $$; -alter table migtest_e_basic drop column description_file; -alter table migtest_e_basic drop column old_boolean; -alter table migtest_e_basic drop column old_boolean2; -alter table migtest_e_basic drop column eref_id; -alter table migtest_e_history2 drop column obsolete_string1; -alter table migtest_e_history2 drop column obsolete_string2; -drop table migtest_e_ref cascade constraints purge; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql index ba8dae439..30535ac51 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql @@ -102,10 +102,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic modify status default null; alter table migtest_e_basic modify status null; alter table migtest_e_basic modify status2 varchar2(1); @@ -126,6 +125,7 @@ alter table migtest_e_history6 modify test_number1 default null; alter table migtest_e_history6 modify test_number1 null; alter table migtest_e_history6 modify test_number2 default 7; alter table migtest_e_history6 modify test_number2 not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); @@ -133,10 +133,11 @@ alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( st alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql index 065b946ee..38e77cae7 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql @@ -1,15 +1,5 @@ -- Migrationscripts for ebean unittest --- apply changes -delimiter $$ -declare - expected_error exception; - pragma exception_init(expected_error, -2289); -begin - execute immediate 'drop sequence migtest_e_user_seq'; -exception - when expected_error then null; -end; -$$; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -24,7 +14,18 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table migtest_e_user cascade constraints purge; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2289); +begin + execute immediate 'drop sequence migtest_e_user_seq'; +exception + when expected_error then null; +end; +$$; drop table migtest_mtm_c_migtest_mtm_m cascade constraints purge; drop table migtest_mtm_m_migtest_mtm_c cascade constraints purge; drop table migtest_mtm_m_phone_numbers cascade constraints purge; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations index ed215cca7..caea324e2 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations @@ -1,8 +1,8 @@ --756544611, 1.0__initial.sql -852231507, 1.1.sql -716378422, 1.2__dropsFor_1.1.sql -1600556691, 1.3.sql -1781097804, 1.4__dropsFor_1.3.sql +-712978357, 1.0__initial.sql +-1852784090, 1.1.sql +-582436324, 1.2__dropsFor_1.1.sql +-734374474, 1.3.sql +663051206, 1.4__dropsFor_1.3.sql 1357801733, R__oracle_only_views.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.0__initial.sql index 271380759..ae003966b 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.0__initial.sql @@ -99,28 +99,24 @@ create table migtest_e_history2 ( obsolete_string2 varchar(255), constraint pk_migtest_e_history2 primary key (id) ); -alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history3 ( id integer generated by default as identity not null, test_string varchar(255), constraint pk_migtest_e_history3 primary key (id) ); -alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history4 ( id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history4 primary key (id) ); -alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history5 ( id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history5 primary key (id) ); -alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history6 ( id integer generated by default as identity not null, @@ -128,7 +124,6 @@ create table migtest_e_history6 ( test_number2 integer not null, constraint pk_migtest_e_history6 primary key (id) ); -alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_ref ( id integer generated by default as identity not null, @@ -167,6 +162,13 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply alter tables +alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +-- apply post alter create table migtest_e_history2_history(like migtest_e_history2); create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; @@ -182,11 +184,7 @@ create view migtest_e_history5_with_history as select * from migtest_e_history5 create table migtest_e_history6_history(like migtest_e_history6); create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; -create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); -create index idxd_migtest_0 on migtest_oto_child using hash (upper(name)) where upper(name) = 'JIM'; -create index concurrently if not exists ix_migtest_oto_child_lowername_id on migtest_oto_child (lower(name),id); -create index if not exists ix_migtest_oto_child_lowername on migtest_oto_child (lower(name)); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -196,6 +194,12 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index idxd_migtest_0 on migtest_oto_child using hash (upper(name)) where upper(name) = 'JIM'; +create index concurrently if not exists ix_migtest_oto_child_lowername_id on migtest_oto_child (lower(name),id); +create index if not exists ix_migtest_oto_child_lowername on migtest_oto_child (lower(name)); +-- apply history trigger create or replace function migtest_e_history2_history_version() returns trigger as $$ declare lowerTs timestamptz; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.1.sql index dc2eefa72..b585cc248 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.1.sql @@ -40,36 +40,26 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -alter table migtest_e_basic alter column status2 type varchar(127) using status2::varchar(127); -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; -alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null); - alter table migtest_e_history alter column test_string TYPE bigint USING (test_string::integer); -alter table migtest_e_history alter column test_string type bigint using test_string::bigint; -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; -alter table migtest_e_history4 alter column test_number type bigint using test_number::bigint; -alter table migtest_e_history4_history alter column test_number type bigint using test_number::bigint; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; alter table migtest_e_basic alter column status set default 'A'; alter table migtest_e_basic alter column status set not null; +alter table migtest_e_basic alter column status2 type varchar(127) using status2::varchar(127); alter table migtest_e_basic alter column status2 drop default; alter table migtest_e_basic alter column status2 drop not null; alter table migtest_e_basic alter column user_id drop not null; @@ -78,6 +68,8 @@ alter table migtest_e_basic add column new_boolean_field boolean default true no alter table migtest_e_basic add column new_boolean_field2 boolean default true not null; alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column new_integer integer default 42 not null; +alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history alter column test_string type bigint using test_string::bigint; alter table migtest_e_history2 alter column test_string set default 'unknown'; alter table migtest_e_history2 alter column test_string set not null; alter table migtest_e_history2 add column test_string2 varchar(255); @@ -86,6 +78,8 @@ alter table migtest_e_history2 add column new_column varchar(20); alter table migtest_e_history2_history add column test_string2 varchar(255); alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown'; alter table migtest_e_history2_history add column new_column varchar(20); +alter table migtest_e_history4 alter column test_number type bigint using test_number::bigint; +alter table migtest_e_history4_history alter column test_number type bigint using test_number::bigint; alter table migtest_e_history5 add column test_boolean boolean default false not null; alter table migtest_e_history5_history add column test_boolean boolean default false; alter table migtest_e_history6 alter column test_number1 set default 42; @@ -93,6 +87,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 drop not null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -108,9 +103,7 @@ create view migtest_e_history_with_history as select * from migtest_e_history un comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); -create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -137,6 +130,10 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; @@ -145,6 +142,7 @@ create view migtest_e_history4_with_history as select * from migtest_e_history4 create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger create or replace function migtest_e_history_history_version() returns trigger as $$ declare lowerTs timestamptz; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.2__dropsFor_1.1.sql index 57928b00c..f3eb208a1 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.2__dropsFor_1.1.sql @@ -1,8 +1,7 @@ -- Migrationscripts for ebean unittest -- drop dependencies drop view if exists migtest_e_history2_with_history; --- apply changes -drop sequence if exists migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; @@ -11,9 +10,13 @@ alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; alter table migtest_e_history2_history drop column obsolete_string1; alter table migtest_e_history2_history drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref cascade; +drop sequence if exists migtest_e_ref_seq; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; +-- apply history trigger -- changes: [drop obsolete_string1, drop obsolete_string2] create or replace function migtest_e_history2_history_version() returns trigger as $$ declare diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.3.sql index 274635ed6..3d0f451f9 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.3.sql @@ -29,18 +29,15 @@ create table migtest_e_ref ( update migtest_e_basic set status2 = 'N' where status2 is null; -alter table migtest_e_basic alter column status2 type varchar(1) using status2::varchar(1); update migtest_e_basic set user_id = 23 where user_id is null; - -alter table migtest_e_history4 alter column test_number type integer using test_number::integer; -alter table migtest_e_history4_history alter column test_number type integer using test_number::integer; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status drop not null; +alter table migtest_e_basic alter column status2 type varchar(1) using status2::varchar(1); alter table migtest_e_basic alter column status2 set default 'N'; alter table migtest_e_basic alter column status2 set not null; alter table migtest_e_basic alter column user_id set default 23; @@ -55,10 +52,13 @@ alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255); alter table migtest_e_history2_history add column obsolete_string1 varchar(255); alter table migtest_e_history2_history add column obsolete_string2 varchar(255); +alter table migtest_e_history4 alter column test_number type integer using test_number::integer; +alter table migtest_e_history4_history alter column test_number type integer using test_number::integer; alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); @@ -66,22 +66,25 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); -create index if not exists ix_m12_otoc71 on migtest_oto_child (name); -create unique index if not exists uq_m12_otoc71 on migtest_oto_child (lower(name)); -create unique index if not exists ix_migtest_oto_master_lowername on migtest_oto_master (lower(name)); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index if not exists ix_m12_otoc71 on migtest_oto_child (name); +create unique index if not exists uq_m12_otoc71 on migtest_oto_child (lower(name)); +create unique index if not exists ix_migtest_oto_master_lowername on migtest_oto_master (lower(name)); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; +-- apply history trigger -- changes: [add obsolete_string1, add obsolete_string2] create or replace function migtest_e_history2_history_version() returns trigger as $$ declare diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.4__dropsFor_1.3.sql index 304ee5057..bea42a3cf 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.4__dropsFor_1.3.sql @@ -8,8 +8,7 @@ drop table migtest_e_history_history; drop view if exists migtest_e_history2_with_history; drop view if exists migtest_e_history5_with_history; --- apply changes -drop sequence if exists migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -29,14 +28,18 @@ alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_history5_history drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user cascade; +drop sequence if exists migtest_e_user_seq; drop table if exists migtest_mtm_c_migtest_mtm_m cascade; drop table if exists migtest_mtm_m_migtest_mtm_c cascade; drop table if exists migtest_mtm_m_phone_numbers cascade; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger -- changes: [drop test_string2, drop test_string3, drop new_column] create or replace function migtest_e_history2_history_version() returns trigger as $$ declare diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations index d23cdee00..784ddf976 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations @@ -1,8 +1,8 @@ --1264346125, 1.0__initial.sql -94461303, 1.1.sql -713998356, 1.2__dropsFor_1.1.sql -1966394343, 1.3.sql -2043551312, 1.4__dropsFor_1.3.sql +1040369575, 1.0__initial.sql +45294494, 1.1.sql +1770819182, 1.2__dropsFor_1.1.sql +-223959883, 1.3.sql +739723472, 1.4__dropsFor_1.3.sql 783227075, R__multi_comments.sql 561281075, R__order_views.sql 283077354, R__pg_indexes.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql index 720657951..6ab514bf2 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql @@ -99,28 +99,24 @@ create table migtest_e_history2 ( obsolete_string2 varchar(255), constraint pk_migtest_e_history2 primary key (id) ); -alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history3 ( id serial not null, test_string varchar(255), constraint pk_migtest_e_history3 primary key (id) ); -alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history4 ( id serial not null, test_number integer, constraint pk_migtest_e_history4 primary key (id) ); -alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history5 ( id serial not null, test_number integer, constraint pk_migtest_e_history5 primary key (id) ); -alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history6 ( id serial not null, @@ -128,7 +124,6 @@ create table migtest_e_history6 ( test_number2 integer not null, constraint pk_migtest_e_history6 primary key (id) ); -alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_ref ( id serial not null, @@ -167,6 +162,13 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply alter tables +alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +-- apply post alter create table migtest_e_history2_history(like migtest_e_history2); create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; @@ -182,11 +184,7 @@ create view migtest_e_history5_with_history as select * from migtest_e_history5 create table migtest_e_history6_history(like migtest_e_history6); create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; -create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); -create index idxd_migtest_0 on migtest_oto_child using hash (upper(name)) where upper(name) = 'JIM'; -create index concurrently if not exists ix_migtest_oto_child_lowername_id on migtest_oto_child (lower(name),id); -create index if not exists ix_migtest_oto_child_lowername on migtest_oto_child (lower(name)); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -196,6 +194,12 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index idxd_migtest_0 on migtest_oto_child using hash (upper(name)) where upper(name) = 'JIM'; +create index concurrently if not exists ix_migtest_oto_child_lowername_id on migtest_oto_child (lower(name),id); +create index if not exists ix_migtest_oto_child_lowername on migtest_oto_child (lower(name)); +-- apply history trigger create or replace function migtest_e_history2_history_version() returns trigger as $$ declare lowerTs timestamptz; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql index e12c39028..dbace0ad1 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql @@ -40,36 +40,26 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -alter table migtest_e_basic alter column status2 type varchar(127) using status2::varchar(127); -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; -alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null); - alter table migtest_e_history alter column test_string TYPE bigint USING (test_string::integer); -alter table migtest_e_history alter column test_string type bigint using test_string::bigint; -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; -alter table migtest_e_history4 alter column test_number type bigint using test_number::bigint; -alter table migtest_e_history4_history alter column test_number type bigint using test_number::bigint; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; alter table migtest_e_basic alter column status set default 'A'; alter table migtest_e_basic alter column status set not null; +alter table migtest_e_basic alter column status2 type varchar(127) using status2::varchar(127); alter table migtest_e_basic alter column status2 drop default; alter table migtest_e_basic alter column status2 drop not null; alter table migtest_e_basic alter column user_id drop not null; @@ -78,6 +68,8 @@ alter table migtest_e_basic add column new_boolean_field boolean default true no alter table migtest_e_basic add column new_boolean_field2 boolean default true not null; alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column new_integer integer default 42 not null; +alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history alter column test_string type bigint using test_string::bigint; alter table migtest_e_history2 alter column test_string set default 'unknown'; alter table migtest_e_history2 alter column test_string set not null; alter table migtest_e_history2 add column test_string2 varchar(255); @@ -86,6 +78,8 @@ alter table migtest_e_history2 add column new_column varchar(20); alter table migtest_e_history2_history add column test_string2 varchar(255); alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown'; alter table migtest_e_history2_history add column new_column varchar(20); +alter table migtest_e_history4 alter column test_number type bigint using test_number::bigint; +alter table migtest_e_history4_history alter column test_number type bigint using test_number::bigint; alter table migtest_e_history5 add column test_boolean boolean default false not null; alter table migtest_e_history5_history add column test_boolean boolean default false; alter table migtest_e_history6 alter column test_number1 set default 42; @@ -93,6 +87,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 drop not null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -108,9 +103,7 @@ create view migtest_e_history_with_history as select * from migtest_e_history un comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); -create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -137,6 +130,10 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; @@ -145,6 +142,7 @@ create view migtest_e_history4_with_history as select * from migtest_e_history4 create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger create or replace function migtest_e_history_history_version() returns trigger as $$ declare lowerTs timestamptz; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.2__dropsFor_1.1.sql index 57928b00c..f3eb208a1 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.2__dropsFor_1.1.sql @@ -1,8 +1,7 @@ -- Migrationscripts for ebean unittest -- drop dependencies drop view if exists migtest_e_history2_with_history; --- apply changes -drop sequence if exists migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; @@ -11,9 +10,13 @@ alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; alter table migtest_e_history2_history drop column obsolete_string1; alter table migtest_e_history2_history drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref cascade; +drop sequence if exists migtest_e_ref_seq; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; +-- apply history trigger -- changes: [drop obsolete_string1, drop obsolete_string2] create or replace function migtest_e_history2_history_version() returns trigger as $$ declare diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql index d8cb08843..0f24e4551 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql @@ -29,18 +29,15 @@ create table migtest_e_ref ( update migtest_e_basic set status2 = 'N' where status2 is null; -alter table migtest_e_basic alter column status2 type varchar(1) using status2::varchar(1); update migtest_e_basic set user_id = 23 where user_id is null; - -alter table migtest_e_history4 alter column test_number type integer using test_number::integer; -alter table migtest_e_history4_history alter column test_number type integer using test_number::integer; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status drop not null; +alter table migtest_e_basic alter column status2 type varchar(1) using status2::varchar(1); alter table migtest_e_basic alter column status2 set default 'N'; alter table migtest_e_basic alter column status2 set not null; alter table migtest_e_basic alter column user_id set default 23; @@ -55,10 +52,13 @@ alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255); alter table migtest_e_history2_history add column obsolete_string1 varchar(255); alter table migtest_e_history2_history add column obsolete_string2 varchar(255); +alter table migtest_e_history4 alter column test_number type integer using test_number::integer; +alter table migtest_e_history4_history alter column test_number type integer using test_number::integer; alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); @@ -66,22 +66,25 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); -create index if not exists ix_m12_otoc71 on migtest_oto_child (name); -create unique index if not exists uq_m12_otoc71 on migtest_oto_child (lower(name)); -create unique index if not exists ix_migtest_oto_master_lowername on migtest_oto_master (lower(name)); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index if not exists ix_m12_otoc71 on migtest_oto_child (name); +create unique index if not exists uq_m12_otoc71 on migtest_oto_child (lower(name)); +create unique index if not exists ix_migtest_oto_master_lowername on migtest_oto_master (lower(name)); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; +-- apply history trigger -- changes: [add obsolete_string1, add obsolete_string2] create or replace function migtest_e_history2_history_version() returns trigger as $$ declare diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.4__dropsFor_1.3.sql index 304ee5057..bea42a3cf 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.4__dropsFor_1.3.sql @@ -8,8 +8,7 @@ drop table migtest_e_history_history; drop view if exists migtest_e_history2_with_history; drop view if exists migtest_e_history5_with_history; --- apply changes -drop sequence if exists migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -29,14 +28,18 @@ alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_history5_history drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user cascade; +drop sequence if exists migtest_e_user_seq; drop table if exists migtest_mtm_c_migtest_mtm_m cascade; drop table if exists migtest_mtm_m_migtest_mtm_c cascade; drop table if exists migtest_mtm_m_phone_numbers cascade; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger -- changes: [drop test_string2, drop test_string3, drop new_column] create or replace function migtest_e_history2_history_version() returns trigger as $$ declare diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations index 49835ad11..89cdeaa30 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations @@ -1,8 +1,8 @@ --568439454, 1.0__initial.sql -184884356, 1.1.sql -713998356, 1.2__dropsFor_1.1.sql --1677592464, 1.3.sql -2043551312, 1.4__dropsFor_1.3.sql +1333804171, 1.0__initial.sql +-1691146639, 1.1.sql +1770819182, 1.2__dropsFor_1.1.sql +1654255380, 1.3.sql +739723472, 1.4__dropsFor_1.3.sql 783227075, R__multi_comments.sql 561281075, R__order_views.sql 283077354, R__pg_indexes.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.0__initial.sql index 65f593fc0..a9b87d1e1 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.0__initial.sql @@ -162,8 +162,7 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -173,3 +172,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.1.sql index 04bda2769..a1422148b 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.1.sql @@ -33,24 +33,18 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -78,6 +72,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 set null; alter table migtest_e_softdelete add column deleted bit default false not null; alter table migtest_oto_child add column master_id numeric(19); +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -90,8 +85,7 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -118,3 +112,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.2__dropsFor_1.1.sql index 219f0c1c5..4ec79a34c 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.2__dropsFor_1.1.sql @@ -1,8 +1,10 @@ -- Migrationscripts for ebean unittest +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.3.sql index 17430501b..95888a2ae 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.3.sql @@ -29,10 +29,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic alter column status2 varchar(1); @@ -53,6 +52,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 set null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); @@ -60,10 +60,11 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.4__dropsFor_1.3.sql index 033f0a5a2..b4087d6d6 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.4__dropsFor_1.3.sql @@ -1,4 +1,5 @@ -- Migrationscripts for ebean unittest +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -13,6 +14,7 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/idx_sqlanywhere.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/idx_sqlanywhere.migrations index ba9a1030d..4300368c8 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/idx_sqlanywhere.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/idx_sqlanywhere.migrations @@ -1,6 +1,6 @@ --1152950940, 1.0__initial.sql --1382848803, 1.1.sql --155876508, 1.2__dropsFor_1.1.sql --1041003459, 1.3.sql -767202122, 1.4__dropsFor_1.3.sql +-2005091128, 1.0__initial.sql +887406340, 1.1.sql +1279151426, 1.2__dropsFor_1.1.sql +-671185644, 1.3.sql +80209848, 1.4__dropsFor_1.3.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql index 8afe5c89e..cf3ffe5d2 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql @@ -165,5 +165,6 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- foreign keys and indices create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.1.sql index 2b07b3ed5..a8880c063 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.1.sql @@ -38,24 +38,18 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; @@ -83,6 +77,7 @@ alter table migtest_e_history5 add column test_boolean int default 0 not null; -- not supported: alter table migtest_e_history6 alter column test_number2 set null; alter table migtest_e_softdelete add column deleted int default 0 not null; alter table migtest_oto_child add column master_id integer; +-- apply post alter -- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -93,8 +88,7 @@ update migtest_e_basic set new_boolean_field = old_boolean; -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices -- not supported: alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict; create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id); -- not supported: alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict; @@ -106,3 +100,5 @@ create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id); -- not supported: alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; -- not supported: alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.2__dropsFor_1.1.sql index 219f0c1c5..4ec79a34c 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.2__dropsFor_1.1.sql @@ -1,8 +1,10 @@ -- Migrationscripts for ebean unittest +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; alter table migtest_e_basic drop column eref_id; alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.3.sql index 480cde461..10f81b07d 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.3.sql @@ -29,10 +29,9 @@ update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set user_id = 23 where user_id is null; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables -- not supported: alter table migtest_e_basic alter column status drop default; -- not supported: alter table migtest_e_basic alter column status set null; -- not supported: alter table migtest_e_basic alter column status2 varchar(1); @@ -53,15 +52,17 @@ alter table migtest_e_history2 add column obsolete_string2 varchar(255); -- not supported: alter table migtest_e_history6 alter column test_number1 set null; -- not supported: alter table migtest_e_history6 alter column test_number2 set default 7; -- not supported: alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter -- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); -- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); -- not supported: alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices -- not supported: alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; -- not supported: alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); -- not supported: alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.4__dropsFor_1.3.sql index 033f0a5a2..b4087d6d6 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.4__dropsFor_1.3.sql @@ -1,4 +1,5 @@ -- Migrationscripts for ebean unittest +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -13,6 +14,7 @@ alter table migtest_e_history2 drop column new_column; alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user; drop table if exists migtest_mtm_c_migtest_mtm_m; drop table if exists migtest_mtm_m_migtest_mtm_c; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations index b1a4aa620..3be0f6a87 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations @@ -1,7 +1,7 @@ -181087169, 1.0__initial.sql -1010963818, 1.1.sql --155876508, 1.2__dropsFor_1.1.sql --162538697, 1.3.sql -767202122, 1.4__dropsFor_1.3.sql +-990693989, 1.0__initial.sql +-71853945, 1.1.sql +1279151426, 1.2__dropsFor_1.1.sql +1929931571, 1.3.sql +80209848, 1.4__dropsFor_1.3.sql 2034589659, R__order_views_sqlite.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.0__initial.sql index bfd1c5ad7..8b975af10 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.0__initial.sql @@ -159,11 +159,11 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply post alter create unique nonclustered index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) where indextest2 is not null; create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null; alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; @@ -173,6 +173,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history view alter table migtest_e_history2 add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(), sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999', diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql index 225a2041c..4732b7402 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql @@ -35,53 +35,48 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; + +-- rename all collisions; + +insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history2 set test_string = 'unknown' where test_string is null; + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history6 set test_number1 = 42 where test_number1 is null; +-- apply alter tables +alter table migtest_ckey_detail add one_key integer; +alter table migtest_ckey_detail add two_key varchar(127); +alter table migtest_ckey_parent add assoc_id integer; EXEC usp_ebean_drop_default_constraint migtest_e_basic, status; alter table migtest_e_basic alter column status varchar(1) not null; alter table migtest_e_basic add default 'A' for status; EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2; alter table migtest_e_basic alter column status2 varchar(127); - --- rename all collisions; - -insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; alter table migtest_e_basic alter column user_id integer; - -alter table migtest_e_history alter column test_string numeric(19); - --- NOTE: table has @History - special migration may be necessary -update migtest_e_history2 set test_string = 'unknown' where test_string is null; -EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string; -alter table migtest_e_history2 alter column test_string varchar(255) not null; -alter table migtest_e_history2 add default 'unknown' for test_string; - -alter table migtest_e_history4 alter column test_number numeric(19); - - --- NOTE: table has @History - special migration may be necessary -update migtest_e_history6 set test_number1 = 42 where test_number1 is null; -EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1; -alter table migtest_e_history6 alter column test_number1 integer not null; -alter table migtest_e_history6 add default 42 for test_number1; -alter table migtest_e_history6 alter column test_number2 integer; - - -alter table migtest_ckey_detail add one_key integer; -alter table migtest_ckey_detail add two_key varchar(127); -alter table migtest_ckey_parent add assoc_id integer; alter table migtest_e_basic add new_string_field varchar(255) default 'foo''bar' not null; alter table migtest_e_basic add new_boolean_field bit default 1 not null; alter table migtest_e_basic add new_boolean_field2 bit default 1 not null; alter table migtest_e_basic add progress integer default 0 not null; alter table migtest_e_basic add new_integer integer default 42 not null; +alter table migtest_e_history alter column test_string numeric(19); +EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string; +alter table migtest_e_history2 alter column test_string varchar(255) not null; +alter table migtest_e_history2 add default 'unknown' for test_string; alter table migtest_e_history2 add test_string2 varchar(255); alter table migtest_e_history2 add test_string3 varchar(255) default 'unknown' not null; alter table migtest_e_history2 add new_column varchar(20); +alter table migtest_e_history4 alter column test_number numeric(19); alter table migtest_e_history5 add test_boolean bit default 0 not null; +EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1; +alter table migtest_e_history6 alter column test_number1 integer not null; +alter table migtest_e_history6 add default 42 for test_number1; +alter table migtest_e_history6 alter column test_number2 integer; alter table migtest_e_softdelete add deleted bit default 0 not null; alter table migtest_oto_child add master_id numeric(19); +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); create unique nonclustered index uq_migtest_e_basic_description on migtest_e_basic(description) where description is not null; -- NOTE: table has @History - special migration may be necessary @@ -92,8 +87,7 @@ create unique nonclustered index uq_migtest_e_basic_status_indextest1 on migtest create unique nonclustered index uq_migtest_e_basic_name on migtest_e_basic(name) where name is not null; create unique nonclustered index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) where indextest4 is not null; create unique nonclustered index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) where indextest5 is not null; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id); @@ -120,6 +114,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id); alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id); +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- apply history view alter table migtest_e_history add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(), sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999', diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.2__dropsFor_1.1.sql index 29cff2d18..a5695632f 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.2__dropsFor_1.1.sql @@ -1,16 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes +-- apply alter tables EXEC usp_ebean_drop_column migtest_e_basic, description_file; - EXEC usp_ebean_drop_column migtest_e_basic, old_boolean; - EXEC usp_ebean_drop_column migtest_e_basic, old_boolean2; - EXEC usp_ebean_drop_column migtest_e_basic, eref_id; - EXEC usp_ebean_drop_column migtest_e_history2, obsolete_string1; - EXEC usp_ebean_drop_column migtest_e_history2, obsolete_string2; - -IF OBJECT_ID('migtest_e_ref_seq', 'SO') IS NOT NULL drop sequence migtest_e_ref_seq; +-- apply post alter IF OBJECT_ID('migtest_e_ref', 'U') IS NOT NULL drop table migtest_e_ref; +IF OBJECT_ID('migtest_e_ref_seq', 'SO') IS NOT NULL drop sequence migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql index 3f7229989..3d209befa 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql @@ -28,50 +28,52 @@ create table migtest_e_ref ( constraint pk_migtest_e_ref primary key (id) ); -EXEC usp_ebean_drop_default_constraint migtest_e_basic, status; -alter table migtest_e_basic alter column status varchar(1); update migtest_e_basic set status2 = 'N' where status2 is null; -EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2; -alter table migtest_e_basic alter column status2 varchar(1) not null; -alter table migtest_e_basic add default 'N' for status2; update migtest_e_basic set user_id = 23 where user_id is null; -EXEC usp_ebean_drop_default_constraint migtest_e_basic, user_id; -alter table migtest_e_basic alter column user_id integer not null; -alter table migtest_e_basic add default 23 for user_id; - -EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string; -alter table migtest_e_history2 alter column test_string varchar(255); - -alter table migtest_e_history4 alter column test_number integer; -EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1; -alter table migtest_e_history6 alter column test_number1 integer; -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; -EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number2; -alter table migtest_e_history6 alter column test_number2 integer not null; -alter table migtest_e_history6 add default 7 for test_number2; +-- apply alter tables +EXEC usp_ebean_drop_default_constraint migtest_e_basic, status; +alter table migtest_e_basic alter column status varchar(1); +EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2; +alter table migtest_e_basic alter column status2 varchar(1) not null; +alter table migtest_e_basic add default 'N' for status2; +EXEC usp_ebean_drop_default_constraint migtest_e_basic, user_id; +alter table migtest_e_basic alter column user_id integer not null; +alter table migtest_e_basic add default 23 for user_id; alter table migtest_e_basic add description_file image; alter table migtest_e_basic add old_boolean bit default 0 not null; alter table migtest_e_basic add old_boolean2 bit; alter table migtest_e_basic add eref_id integer; +EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string; +alter table migtest_e_history2 alter column test_string varchar(255); alter table migtest_e_history2 add obsolete_string1 varchar(255); alter table migtest_e_history2 add obsolete_string2 varchar(255); +alter table migtest_e_history4 alter column test_number integer; +EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1; +alter table migtest_e_history6 alter column test_number1 integer; +EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number2; +alter table migtest_e_history6 alter column test_number2 integer not null; +alter table migtest_e_history6 add default 7 for test_number2; +-- apply post alter alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); create unique nonclustered index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) where indextest2 is not null; create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null; alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history view -- alter table migtest_e_history3 set (system_versioning = off (history_table=dbo.migtest_e_history3_history)); -- history migration goes here -- alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history)); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.4__dropsFor_1.3.sql index 43159ecc0..74e4a30ab 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.4__dropsFor_1.3.sql @@ -1,44 +1,32 @@ -- Migrationscripts for ebean unittest -- apply changes +-- dropping history support for migtest_e_history; +alter table migtest_e_history set (system_versioning = off); +alter table migtest_e_history drop period for system_time; + +-- apply alter tables EXEC usp_ebean_drop_column migtest_ckey_detail, one_key; - EXEC usp_ebean_drop_column migtest_ckey_detail, two_key; - EXEC usp_ebean_drop_column migtest_ckey_parent, assoc_id; - EXEC usp_ebean_drop_column migtest_e_basic, new_string_field; - EXEC usp_ebean_drop_column migtest_e_basic, new_boolean_field; - EXEC usp_ebean_drop_column migtest_e_basic, new_boolean_field2; - EXEC usp_ebean_drop_column migtest_e_basic, progress; - EXEC usp_ebean_drop_column migtest_e_basic, new_integer; - +EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodFrom; +EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodTo; +EXEC usp_ebean_drop_column migtest_e_history, sys_periodFrom; +EXEC usp_ebean_drop_column migtest_e_history, sys_periodTo; EXEC usp_ebean_drop_column migtest_e_history2, test_string2; - EXEC usp_ebean_drop_column migtest_e_history2, test_string3; - EXEC usp_ebean_drop_column migtest_e_history2, new_column; - EXEC usp_ebean_drop_column migtest_e_history5, test_boolean; - EXEC usp_ebean_drop_column migtest_e_softdelete, deleted; - EXEC usp_ebean_drop_column migtest_oto_child, master_id; - -IF OBJECT_ID('migtest_e_user_seq', 'SO') IS NOT NULL drop sequence migtest_e_user_seq; +-- apply post alter +IF OBJECT_ID('migtest_e_history_history', 'U') IS NOT NULL drop table migtest_e_history_history; IF OBJECT_ID('migtest_e_user', 'U') IS NOT NULL drop table migtest_e_user; +IF OBJECT_ID('migtest_e_user_seq', 'SO') IS NOT NULL drop sequence migtest_e_user_seq; IF OBJECT_ID('migtest_mtm_c_migtest_mtm_m', 'U') IS NOT NULL drop table migtest_mtm_c_migtest_mtm_m; IF OBJECT_ID('migtest_mtm_m_migtest_mtm_c', 'U') IS NOT NULL drop table migtest_mtm_m_migtest_mtm_c; IF OBJECT_ID('migtest_mtm_m_phone_numbers', 'U') IS NOT NULL drop table migtest_mtm_m_phone_numbers; --- dropping history support for migtest_e_history; -EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodFrom; -EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodTo; -alter table migtest_e_history set (system_versioning = off); -alter table migtest_e_history drop period for system_time; -alter table migtest_e_history drop column sys_periodFrom; -alter table migtest_e_history drop column sys_periodTo; -IF OBJECT_ID('migtest_e_history_history', 'U') IS NOT NULL drop table migtest_e_history_history; - diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations index b3410a59f..86d986e00 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations @@ -1,8 +1,8 @@ -2122378240, I__create_procs.sql --1715735485, 1.0__initial.sql -657469133, 1.1.sql -1140908215, 1.2__dropsFor_1.1.sql --1997744448, 1.3.sql -1468404025, 1.4__dropsFor_1.3.sql +-105831629, 1.0__initial.sql +-904775438, 1.1.sql +1481869712, 1.2__dropsFor_1.1.sql +1426896311, 1.3.sql +1582941540, 1.4__dropsFor_1.3.sql 1607822082, R__order_views_mssql.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql index c638aac4c..47f1754f0 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql @@ -181,11 +181,11 @@ create table migtest_oto_master ( ); create sequence migtest_oto_master_seq as bigint start with 1; +-- apply post alter create unique nonclustered index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) where indextest2 is not null; create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null; alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; @@ -195,6 +195,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history view alter table migtest_e_history2 add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(), sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999', diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql index f891b635b..a71c6aff3 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql @@ -36,53 +36,48 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; + +-- rename all collisions; + +insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history2 set test_string = 'unknown' where test_string is null; + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history6 set test_number1 = 42 where test_number1 is null; +-- apply alter tables +alter table migtest_ckey_detail add one_key integer; +alter table migtest_ckey_detail add two_key nvarchar(127); +alter table migtest_ckey_parent add assoc_id integer; EXEC usp_ebean_drop_default_constraint migtest_e_basic, status; alter table migtest_e_basic alter column status nvarchar(1) not null; alter table migtest_e_basic add default 'A' for status; EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2; alter table migtest_e_basic alter column status2 nvarchar(127); - --- rename all collisions; - -insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; alter table migtest_e_basic alter column user_id integer; - -alter table migtest_e_history alter column test_string numeric(19); - --- NOTE: table has @History - special migration may be necessary -update migtest_e_history2 set test_string = 'unknown' where test_string is null; -EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string; -alter table migtest_e_history2 alter column test_string nvarchar(255) not null; -alter table migtest_e_history2 add default 'unknown' for test_string; - -alter table migtest_e_history4 alter column test_number numeric(19); - - --- NOTE: table has @History - special migration may be necessary -update migtest_e_history6 set test_number1 = 42 where test_number1 is null; -EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1; -alter table migtest_e_history6 alter column test_number1 integer not null; -alter table migtest_e_history6 add default 42 for test_number1; -alter table migtest_e_history6 alter column test_number2 integer; - - -alter table migtest_ckey_detail add one_key integer; -alter table migtest_ckey_detail add two_key nvarchar(127); -alter table migtest_ckey_parent add assoc_id integer; alter table migtest_e_basic add new_string_field nvarchar(255) default 'foo''bar' not null; alter table migtest_e_basic add new_boolean_field bit default 1 not null; alter table migtest_e_basic add new_boolean_field2 bit default 1 not null; alter table migtest_e_basic add progress integer default 0 not null; alter table migtest_e_basic add new_integer integer default 42 not null; +alter table migtest_e_history alter column test_string numeric(19); +EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string; +alter table migtest_e_history2 alter column test_string nvarchar(255) not null; +alter table migtest_e_history2 add default 'unknown' for test_string; alter table migtest_e_history2 add test_string2 nvarchar(255); alter table migtest_e_history2 add test_string3 nvarchar(255) default 'unknown' not null; alter table migtest_e_history2 add new_column nvarchar(20); +alter table migtest_e_history4 alter column test_number numeric(19); alter table migtest_e_history5 add test_boolean bit default 0 not null; +EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1; +alter table migtest_e_history6 alter column test_number1 integer not null; +alter table migtest_e_history6 add default 42 for test_number1; +alter table migtest_e_history6 alter column test_number2 integer; alter table migtest_e_softdelete add deleted bit default 0 not null; alter table migtest_oto_child add master_id numeric(19); +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); create unique nonclustered index uq_migtest_e_basic_description on migtest_e_basic(description) where description is not null; -- NOTE: table has @History - special migration may be necessary @@ -93,8 +88,7 @@ create unique nonclustered index uq_migtest_e_basic_status_indextest1 on migtest create unique nonclustered index uq_migtest_e_basic_name on migtest_e_basic(name) where name is not null; create unique nonclustered index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) where indextest4 is not null; create unique nonclustered index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) where indextest5 is not null; -create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id); @@ -121,6 +115,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id); alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id); +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- apply history view alter table migtest_e_history add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(), sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999', diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql index 29cff2d18..a5695632f 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql @@ -1,16 +1,11 @@ -- Migrationscripts for ebean unittest --- apply changes +-- apply alter tables EXEC usp_ebean_drop_column migtest_e_basic, description_file; - EXEC usp_ebean_drop_column migtest_e_basic, old_boolean; - EXEC usp_ebean_drop_column migtest_e_basic, old_boolean2; - EXEC usp_ebean_drop_column migtest_e_basic, eref_id; - EXEC usp_ebean_drop_column migtest_e_history2, obsolete_string1; - EXEC usp_ebean_drop_column migtest_e_history2, obsolete_string2; - -IF OBJECT_ID('migtest_e_ref_seq', 'SO') IS NOT NULL drop sequence migtest_e_ref_seq; +-- apply post alter IF OBJECT_ID('migtest_e_ref', 'U') IS NOT NULL drop table migtest_e_ref; +IF OBJECT_ID('migtest_e_ref_seq', 'SO') IS NOT NULL drop sequence migtest_e_ref_seq; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql index 89ecc0a62..1c2359c77 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql @@ -29,50 +29,52 @@ create table migtest_e_ref ( ); create sequence migtest_e_ref_seq as bigint start with 1; -EXEC usp_ebean_drop_default_constraint migtest_e_basic, status; -alter table migtest_e_basic alter column status nvarchar(1); update migtest_e_basic set status2 = 'N' where status2 is null; -EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2; -alter table migtest_e_basic alter column status2 nvarchar(1) not null; -alter table migtest_e_basic add default 'N' for status2; update migtest_e_basic set user_id = 23 where user_id is null; -EXEC usp_ebean_drop_default_constraint migtest_e_basic, user_id; -alter table migtest_e_basic alter column user_id integer not null; -alter table migtest_e_basic add default 23 for user_id; - -EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string; -alter table migtest_e_history2 alter column test_string nvarchar(255); - -alter table migtest_e_history4 alter column test_number integer; -EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1; -alter table migtest_e_history6 alter column test_number1 integer; -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; -EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number2; -alter table migtest_e_history6 alter column test_number2 integer not null; -alter table migtest_e_history6 add default 7 for test_number2; +-- apply alter tables +EXEC usp_ebean_drop_default_constraint migtest_e_basic, status; +alter table migtest_e_basic alter column status nvarchar(1); +EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2; +alter table migtest_e_basic alter column status2 nvarchar(1) not null; +alter table migtest_e_basic add default 'N' for status2; +EXEC usp_ebean_drop_default_constraint migtest_e_basic, user_id; +alter table migtest_e_basic alter column user_id integer not null; +alter table migtest_e_basic add default 23 for user_id; alter table migtest_e_basic add description_file image; alter table migtest_e_basic add old_boolean bit default 0 not null; alter table migtest_e_basic add old_boolean2 bit; alter table migtest_e_basic add eref_id integer; +EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string; +alter table migtest_e_history2 alter column test_string nvarchar(255); alter table migtest_e_history2 add obsolete_string1 nvarchar(255); alter table migtest_e_history2 add obsolete_string2 nvarchar(255); +alter table migtest_e_history4 alter column test_number integer; +EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1; +alter table migtest_e_history6 alter column test_number1 integer; +EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number2; +alter table migtest_e_history6 alter column test_number2 integer not null; +alter table migtest_e_history6 add default 7 for test_number2; +-- apply post alter alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name); alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); create unique nonclustered index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) where indextest2 is not null; create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null; alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); -create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id); +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history view -- alter table migtest_e_history3 set (system_versioning = off (history_table=dbo.migtest_e_history3_history)); -- history migration goes here -- alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history)); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql index 43159ecc0..74e4a30ab 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql @@ -1,44 +1,32 @@ -- Migrationscripts for ebean unittest -- apply changes +-- dropping history support for migtest_e_history; +alter table migtest_e_history set (system_versioning = off); +alter table migtest_e_history drop period for system_time; + +-- apply alter tables EXEC usp_ebean_drop_column migtest_ckey_detail, one_key; - EXEC usp_ebean_drop_column migtest_ckey_detail, two_key; - EXEC usp_ebean_drop_column migtest_ckey_parent, assoc_id; - EXEC usp_ebean_drop_column migtest_e_basic, new_string_field; - EXEC usp_ebean_drop_column migtest_e_basic, new_boolean_field; - EXEC usp_ebean_drop_column migtest_e_basic, new_boolean_field2; - EXEC usp_ebean_drop_column migtest_e_basic, progress; - EXEC usp_ebean_drop_column migtest_e_basic, new_integer; - +EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodFrom; +EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodTo; +EXEC usp_ebean_drop_column migtest_e_history, sys_periodFrom; +EXEC usp_ebean_drop_column migtest_e_history, sys_periodTo; EXEC usp_ebean_drop_column migtest_e_history2, test_string2; - EXEC usp_ebean_drop_column migtest_e_history2, test_string3; - EXEC usp_ebean_drop_column migtest_e_history2, new_column; - EXEC usp_ebean_drop_column migtest_e_history5, test_boolean; - EXEC usp_ebean_drop_column migtest_e_softdelete, deleted; - EXEC usp_ebean_drop_column migtest_oto_child, master_id; - -IF OBJECT_ID('migtest_e_user_seq', 'SO') IS NOT NULL drop sequence migtest_e_user_seq; +-- apply post alter +IF OBJECT_ID('migtest_e_history_history', 'U') IS NOT NULL drop table migtest_e_history_history; IF OBJECT_ID('migtest_e_user', 'U') IS NOT NULL drop table migtest_e_user; +IF OBJECT_ID('migtest_e_user_seq', 'SO') IS NOT NULL drop sequence migtest_e_user_seq; IF OBJECT_ID('migtest_mtm_c_migtest_mtm_m', 'U') IS NOT NULL drop table migtest_mtm_c_migtest_mtm_m; IF OBJECT_ID('migtest_mtm_m_migtest_mtm_c', 'U') IS NOT NULL drop table migtest_mtm_m_migtest_mtm_c; IF OBJECT_ID('migtest_mtm_m_phone_numbers', 'U') IS NOT NULL drop table migtest_mtm_m_phone_numbers; --- dropping history support for migtest_e_history; -EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodFrom; -EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodTo; -alter table migtest_e_history set (system_versioning = off); -alter table migtest_e_history drop period for system_time; -alter table migtest_e_history drop column sys_periodFrom; -alter table migtest_e_history drop column sys_periodTo; -IF OBJECT_ID('migtest_e_history_history', 'U') IS NOT NULL drop table migtest_e_history_history; - diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations index 1c9c36667..c544ae3d2 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations @@ -1,8 +1,8 @@ -2122378240, I__create_procs.sql -2038422044, 1.0__initial.sql -137958256, 1.1.sql -1140908215, 1.2__dropsFor_1.1.sql -1570214773, 1.3.sql -1468404025, 1.4__dropsFor_1.3.sql +-520898185, 1.0__initial.sql +339251767, 1.1.sql +1481869712, 1.2__dropsFor_1.1.sql +-2072392503, 1.3.sql +1582941540, 1.4__dropsFor_1.3.sql 1607822082, R__order_views_mssql.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql index 9799b4e3f..ff8393190 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql @@ -99,28 +99,24 @@ create table migtest_e_history2 ( obsolete_string2 varchar(255), constraint pk_migtest_e_history2 primary key (id) ); -alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history3 ( id integer generated by default as identity not null, test_string varchar(255), constraint pk_migtest_e_history3 primary key (id) ); -alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history4 ( id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history4 primary key (id) ); -alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history5 ( id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history5 primary key (id) ); -alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_history6 ( id integer generated by default as identity not null, @@ -128,7 +124,6 @@ create table migtest_e_history6 ( test_number2 integer not null, constraint pk_migtest_e_history6 primary key (id) ); -alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); create table migtest_e_ref ( id integer generated by default as identity not null, @@ -167,6 +162,13 @@ create table migtest_oto_master ( constraint pk_migtest_oto_master primary key (id) ); +-- apply alter tables +alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +-- apply post alter create table migtest_e_history2_history( id integer, test_string varchar(255), @@ -205,8 +207,7 @@ create table migtest_e_history6_history( ); create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; -create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; @@ -216,6 +217,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history trigger create or replace function migtest_e_history2_history_version() returns trigger as $$ declare lowerTs timestamptz; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.1.sql index 32f7d2535..6fbffe731 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.1.sql @@ -37,34 +37,24 @@ create table migtest_mtm_m_phone_numbers ( ); - - update migtest_e_basic set status = 'A' where status is null; -alter table migtest_e_basic alter column status2 type varchar(127) using status2::varchar(127); -- rename all collisions; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; -alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null); -alter table migtest_e_history alter column test_string type bigint using test_string::bigint; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history2 set test_string = 'unknown' where test_string is null; -alter table migtest_e_history4 alter column test_number type bigint using test_number::bigint; -alter table migtest_e_history4_history alter column test_number type bigint using test_number::bigint; - - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number1 = 42 where test_number1 is null; - - +-- apply alter tables alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_parent add column assoc_id integer; alter table migtest_e_basic alter column status set default 'A'; alter table migtest_e_basic alter column status set not null; +alter table migtest_e_basic alter column status2 type varchar(127) using status2::varchar(127); alter table migtest_e_basic alter column status2 drop default; alter table migtest_e_basic alter column status2 drop not null; alter table migtest_e_basic alter column user_id drop not null; @@ -73,6 +63,8 @@ alter table migtest_e_basic add column new_boolean_field boolean default true no alter table migtest_e_basic add column new_boolean_field2 boolean default true not null; alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column new_integer integer default 42 not null; +alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history alter column test_string type bigint using test_string::bigint; alter table migtest_e_history2 alter column test_string set default 'unknown'; alter table migtest_e_history2 alter column test_string set not null; alter table migtest_e_history2 add column test_string2 varchar(255); @@ -81,6 +73,8 @@ alter table migtest_e_history2 add column new_column varchar(20); alter table migtest_e_history2_history add column test_string2 varchar(255); alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown'; alter table migtest_e_history2_history add column new_column varchar(20); +alter table migtest_e_history4 alter column test_number type bigint using test_number::bigint; +alter table migtest_e_history4_history alter column test_number type bigint using test_number::bigint; alter table migtest_e_history5 add column test_boolean boolean default false not null; alter table migtest_e_history5_history add column test_boolean boolean default false; alter table migtest_e_history6 alter column test_number1 set default 42; @@ -88,6 +82,7 @@ alter table migtest_e_history6 alter column test_number1 set not null; alter table migtest_e_history6 alter column test_number2 drop not null; alter table migtest_e_softdelete add column deleted boolean default false not null; alter table migtest_oto_child add column master_id bigint; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- NOTE: table has @History - special migration may be necessary @@ -107,8 +102,7 @@ create view migtest_e_history_with_history as select * from migtest_e_history un comment on column migtest_e_history.test_string is 'Column altered to long now'; comment on table migtest_e_history is 'We have history now'; -create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); -create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- foreign keys and indices create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; @@ -135,6 +129,9 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; +create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; @@ -143,6 +140,7 @@ create view migtest_e_history4_with_history as select * from migtest_e_history4 create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger create or replace function migtest_e_history_history_version() returns trigger as $$ declare lowerTs timestamptz; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.2__dropsFor_1.1.sql index 57928b00c..f3eb208a1 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.2__dropsFor_1.1.sql @@ -1,8 +1,7 @@ -- Migrationscripts for ebean unittest -- drop dependencies drop view if exists migtest_e_history2_with_history; --- apply changes -drop sequence if exists migtest_e_ref_seq; +-- apply alter tables alter table migtest_e_basic drop column description_file; alter table migtest_e_basic drop column old_boolean; alter table migtest_e_basic drop column old_boolean2; @@ -11,9 +10,13 @@ alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; alter table migtest_e_history2_history drop column obsolete_string1; alter table migtest_e_history2_history drop column obsolete_string2; +-- apply post alter drop table if exists migtest_e_ref cascade; +drop sequence if exists migtest_e_ref_seq; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; +-- apply history trigger -- changes: [drop obsolete_string1, drop obsolete_string2] create or replace function migtest_e_history2_history_version() returns trigger as $$ declare diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.3.sql index fd9fbec2f..df3848efc 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.3.sql @@ -29,18 +29,15 @@ create table migtest_e_ref ( update migtest_e_basic set status2 = 'N' where status2 is null; -alter table migtest_e_basic alter column status2 type varchar(1) using status2::varchar(1); update migtest_e_basic set user_id = 23 where user_id is null; - -alter table migtest_e_history4 alter column test_number type integer using test_number::integer; -alter table migtest_e_history4_history alter column test_number type integer using test_number::integer; - -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +-- apply alter tables alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status drop not null; +alter table migtest_e_basic alter column status2 type varchar(1) using status2::varchar(1); alter table migtest_e_basic alter column status2 set default 'N'; alter table migtest_e_basic alter column status2 set not null; alter table migtest_e_basic alter column user_id set default 23; @@ -55,10 +52,13 @@ alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255); alter table migtest_e_history2_history add column obsolete_string1 varchar(255); alter table migtest_e_history2_history add column obsolete_string2 varchar(255); +alter table migtest_e_history4 alter column test_number type integer using test_number::integer; +alter table migtest_e_history4_history alter column test_number type integer using test_number::integer; alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +-- apply post alter alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); @@ -66,19 +66,22 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); -create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- foreign keys and indices alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; +create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; +-- apply history trigger -- changes: [add obsolete_string1, add obsolete_string2] create or replace function migtest_e_history2_history_version() returns trigger as $$ declare diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.4__dropsFor_1.3.sql index 304ee5057..bea42a3cf 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.4__dropsFor_1.3.sql @@ -8,8 +8,7 @@ drop table migtest_e_history_history; drop view if exists migtest_e_history2_with_history; drop view if exists migtest_e_history5_with_history; --- apply changes -drop sequence if exists migtest_e_user_seq; +-- apply alter tables alter table migtest_ckey_detail drop column one_key; alter table migtest_ckey_detail drop column two_key; alter table migtest_ckey_parent drop column assoc_id; @@ -29,14 +28,18 @@ alter table migtest_e_history5 drop column test_boolean; alter table migtest_e_history5_history drop column test_boolean; alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; +-- apply post alter drop table if exists migtest_e_user cascade; +drop sequence if exists migtest_e_user_seq; drop table if exists migtest_mtm_c_migtest_mtm_m cascade; drop table if exists migtest_mtm_m_migtest_mtm_c cascade; drop table if exists migtest_mtm_m_phone_numbers cascade; +-- apply history view create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; +-- apply history trigger -- changes: [drop test_string2, drop test_string3, drop new_column] create or replace function migtest_e_history2_history_version() returns trigger as $$ declare diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations index 50390783f..ceed1a0fb 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations @@ -1,7 +1,7 @@ --1438254935, 1.0__initial.sql --47140703, 1.1.sql -713998356, 1.2__dropsFor_1.1.sql -593308024, 1.3.sql -2043551312, 1.4__dropsFor_1.3.sql +1260183516, 1.0__initial.sql +1193452475, 1.1.sql +1770819182, 1.2__dropsFor_1.1.sql +456034327, 1.3.sql +739723472, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql