mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-21 06:41:12 +00:00
Merge pull request #2585 from FOCONIS/ddl-refactor2
Fix DDL Default handling & Prepared PlatformDdl to to have only one 'alterColumn' method
This commit is contained in:
+6
-20
@@ -5,6 +5,7 @@ import io.ebean.config.dbplatform.DatabasePlatform;
|
||||
import io.ebean.config.dbplatform.DbPlatformType;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlHandler;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlWrite;
|
||||
import io.ebeaninternal.dbmigration.migration.AlterColumn;
|
||||
|
||||
import java.util.Objects;
|
||||
@@ -38,7 +39,7 @@ public abstract class AbstractHanaDdl extends PlatformDdl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnBaseAttributes(AlterColumn alter) {
|
||||
public void alterColumn(DdlWrite writer, AlterColumn alter) {
|
||||
String tableName = alter.getTableName();
|
||||
String columnName = alter.getColumnName();
|
||||
String currentType = alter.getCurrentType();
|
||||
@@ -51,7 +52,7 @@ public abstract class AbstractHanaDdl extends PlatformDdl {
|
||||
: (alter.getDefaultValue() != null ? alter.getDefaultValue() : alter.getCurrentDefaultValue());
|
||||
String defaultValueClause = (defaultValue == null || defaultValue.isEmpty()) ? "" : " default " + defaultValue;
|
||||
|
||||
DdlBuffer buffer = new BaseDdlBuffer();
|
||||
DdlBuffer buffer = writer.apply();
|
||||
if (!isConvertible(currentType, type)) {
|
||||
// add an intermediate conversion if possible
|
||||
if (isNumberType(currentType)) {
|
||||
@@ -73,17 +74,7 @@ public abstract class AbstractHanaDdl extends PlatformDdl {
|
||||
buffer.append("alter table ").append(tableName).append(" ").append(alterColumn).append(" ").append(columnName)
|
||||
.append(" ").append(type).append(defaultValueClause).append(notnullClause).append(alterColumnSuffix);
|
||||
|
||||
return buffer.getBuffer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnDefaultValue(String tableName, String columnName, String defaultValue) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnNotnull(String tableName, String columnName, boolean notnull) {
|
||||
return null;
|
||||
buffer.endOfStatement();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -91,11 +82,6 @@ public abstract class AbstractHanaDdl extends PlatformDdl {
|
||||
return new HanaDdlHandler(config, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnType(String tableName, String columnName, String type) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String convertArrayType(String logicalArrayType) {
|
||||
Matcher matcher = ARRAY_PATTERN.matcher(logicalArrayType);
|
||||
@@ -140,8 +126,8 @@ public abstract class AbstractHanaDdl extends PlatformDdl {
|
||||
* foreign keys. That's why we call a user stored procedure here
|
||||
*/
|
||||
@Override
|
||||
public void alterTableDropColumn(DdlBuffer buffer, String tableName, String columnName) {
|
||||
buffer.append("CALL usp_ebean_drop_column('").append(tableName).append("', '").append(columnName).append("')")
|
||||
public void alterTableDropColumn(DdlWrite writer, String tableName, String columnName) {
|
||||
writer.apply().append("CALL usp_ebean_drop_column('").append(tableName).append("', '").append(columnName).append("')")
|
||||
.endOfStatement();
|
||||
}
|
||||
|
||||
|
||||
+27
-62
@@ -646,14 +646,14 @@ public class BaseTableDdl implements TableDdl {
|
||||
String tableName = addColumn.getTableName();
|
||||
List<Column> columns = addColumn.getColumn();
|
||||
for (Column column : columns) {
|
||||
alterTableAddColumn(writer.apply(), tableName, column, false, isTrue(addColumn.isWithHistory()));
|
||||
alterTableAddColumn(writer, tableName, column, false, isTrue(addColumn.isWithHistory()));
|
||||
}
|
||||
if (isTrue(addColumn.isWithHistory()) && historySupport == HistorySupport.TRIGGER_BASED) {
|
||||
// make same changes to the history table
|
||||
String historyTable = historyTable(tableName);
|
||||
for (Column column : columns) {
|
||||
regenerateHistoryTriggers(tableName, HistoryTableUpdate.Change.ADD, column.getName());
|
||||
alterTableAddColumn(writer.apply(), historyTable, column, true, true);
|
||||
alterTableAddColumn(writer, historyTable, column, true, true);
|
||||
}
|
||||
}
|
||||
for (Column column : columns) {
|
||||
@@ -686,12 +686,12 @@ public class BaseTableDdl implements TableDdl {
|
||||
@Override
|
||||
public void generate(DdlWrite writer, DropColumn dropColumn) {
|
||||
String tableName = dropColumn.getTableName();
|
||||
alterTableDropColumn(writer.apply(), tableName, dropColumn.getColumnName());
|
||||
alterTableDropColumn(writer, tableName, dropColumn.getColumnName());
|
||||
|
||||
if (isTrue(dropColumn.isWithHistory()) && historySupport == HistorySupport.TRIGGER_BASED) {
|
||||
// also drop from the history table
|
||||
regenerateHistoryTriggers(tableName, HistoryTableUpdate.Change.DROP, dropColumn.getColumnName());
|
||||
alterTableDropColumn(writer.apply(), historyTable(tableName), dropColumn.getColumnName());
|
||||
alterTableDropColumn(writer, historyTable(tableName), dropColumn.getColumnName());
|
||||
}
|
||||
writer.apply().end();
|
||||
}
|
||||
@@ -739,22 +739,13 @@ public class BaseTableDdl implements TableDdl {
|
||||
// drop constraint before altering type etc
|
||||
dropCheckConstraint(writer, alterColumn, alterColumn.getCheckConstraintName());
|
||||
}
|
||||
boolean alterBaseAttributes = false;
|
||||
if (hasValue(alterColumn.getType())) {
|
||||
alterColumnType(writer, alterColumn);
|
||||
alterBaseAttributes = true;
|
||||
}
|
||||
if (hasValue(alterColumn.getDefaultValue())) {
|
||||
alterColumnDefaultValue(writer, alterColumn);
|
||||
alterBaseAttributes = true;
|
||||
}
|
||||
if (alterColumn.isNotnull() != null) {
|
||||
alterColumnNotnull(writer, alterColumn);
|
||||
alterBaseAttributes = true;
|
||||
}
|
||||
if (alterBaseAttributes) {
|
||||
alterColumnBaseAttributes(writer, alterColumn);
|
||||
|
||||
if (hasValue(alterColumn.getType())
|
||||
|| hasValue(alterColumn.getDefaultValue())
|
||||
|| alterColumn.isNotnull() != null) {
|
||||
alterColumn(writer, alterColumn);
|
||||
}
|
||||
|
||||
if (alterCheckConstraint) {
|
||||
// add constraint last (after potential type change)
|
||||
addCheckConstraint(writer, alterColumn);
|
||||
@@ -785,28 +776,19 @@ public class BaseTableDdl implements TableDdl {
|
||||
* This is mysql specific - alter all the base attributes of the column together.
|
||||
* Will be called, if there is a type, dbdefault or notnull change.
|
||||
*/
|
||||
protected void alterColumnBaseAttributes(DdlWrite writer, AlterColumn alter) {
|
||||
String ddl = platformDdl.alterColumnBaseAttributes(alter);
|
||||
if (hasValue(ddl)) {
|
||||
writer.apply().appendStatement(ddl);
|
||||
protected void alterColumn(DdlWrite writer, AlterColumn alter) {
|
||||
platformDdl.alterColumn(writer, alter);
|
||||
|
||||
if (isTrue(alter.isWithHistory()) && alter.getType() != null && historySupport == HistorySupport.TRIGGER_BASED) {
|
||||
// mysql and sql server column type change allowing nulls in the history table column
|
||||
regenerateHistoryTriggers(alter.getTableName(), HistoryTableUpdate.Change.ALTER, alter.getColumnName());
|
||||
AlterColumn alterHistoryColumn = new AlterColumn();
|
||||
alterHistoryColumn.setTableName(historyTable(alter.getTableName()));
|
||||
alterHistoryColumn.setColumnName(alter.getColumnName());
|
||||
alterHistoryColumn.setType(alter.getType());
|
||||
String histColumnDdl = platformDdl.alterColumnBaseAttributes(alterHistoryColumn);
|
||||
|
||||
// write the apply to history table
|
||||
writer.apply().appendStatement(histColumnDdl);
|
||||
}
|
||||
if (isTrue(alter.isWithHistory()) && alter.getType() != null && historySupport == HistorySupport.TRIGGER_BASED) {
|
||||
// mysql and sql server column type change allowing nulls in the history table column
|
||||
regenerateHistoryTriggers(alter.getTableName(), HistoryTableUpdate.Change.ALTER, alter.getColumnName());
|
||||
AlterColumn alterHistoryColumn = new AlterColumn();
|
||||
alterHistoryColumn.setTableName(historyTable(alter.getTableName()));
|
||||
alterHistoryColumn.setColumnName(alter.getColumnName());
|
||||
alterHistoryColumn.setType(alter.getType());
|
||||
platformDdl.alterColumn(writer, alterHistoryColumn);
|
||||
}
|
||||
}
|
||||
|
||||
protected void alterColumnDefaultValue(DdlWrite writer, AlterColumn alter) {
|
||||
writer.apply().appendStatement(platformDdl.alterColumnDefaultValue(alter.getTableName(), alter.getColumnName(), alter.getDefaultValue()));
|
||||
}
|
||||
|
||||
protected void dropCheckConstraint(DdlWrite writer, AlterColumn alter, String constraintName) {
|
||||
@@ -817,23 +799,6 @@ public class BaseTableDdl implements TableDdl {
|
||||
writer.apply().appendStatement(platformDdl.alterTableAddCheckConstraint(alter.getTableName(), alter.getCheckConstraintName(), alter.getCheckConstraint()));
|
||||
}
|
||||
|
||||
protected void alterColumnNotnull(DdlWrite writer, AlterColumn alter) {
|
||||
writer.apply().appendStatement(platformDdl.alterColumnNotnull(alter.getTableName(), alter.getColumnName(), alter.isNotnull()));
|
||||
}
|
||||
|
||||
protected void alterColumnType(DdlWrite writer, AlterColumn alter) {
|
||||
String ddl = platformDdl.alterColumnType(alter.getTableName(), alter.getColumnName(), alter.getType());
|
||||
if (hasValue(ddl)) {
|
||||
writer.apply().appendStatement(ddl);
|
||||
if (isTrue(alter.isWithHistory()) && historySupport == HistorySupport.TRIGGER_BASED) {
|
||||
regenerateHistoryTriggers(alter.getTableName(), HistoryTableUpdate.Change.ALTER, alter.getColumnName());
|
||||
// apply same type change to matching column in the history table
|
||||
ddl = platformDdl.alterColumnType(historyTable(alter.getTableName()), alter.getColumnName(), alter.getType());
|
||||
writer.apply().appendStatement(ddl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void alterColumnAddForeignKey(DdlWrite writer, AlterColumn alterColumn) {
|
||||
alterTableAddForeignKey(writer.getOptions(), writer.apply(), new WriteForeignKey(alterColumn));
|
||||
}
|
||||
@@ -863,24 +828,24 @@ public class BaseTableDdl implements TableDdl {
|
||||
}
|
||||
|
||||
|
||||
protected void alterTableDropColumn(DdlBuffer buffer, String tableName, String columnName) {
|
||||
platformDdl.alterTableDropColumn(buffer, tableName, columnName);
|
||||
protected void alterTableDropColumn(DdlWrite writer, String tableName, String columnName) {
|
||||
platformDdl.alterTableDropColumn(writer, tableName, columnName);
|
||||
}
|
||||
|
||||
protected void alterTableAddColumn(DdlBuffer buffer, String tableName, Column column, boolean onHistoryTable, boolean withHistory) {
|
||||
protected void alterTableAddColumn(DdlWrite writer, String tableName, Column column, boolean onHistoryTable, boolean withHistory) {
|
||||
DdlMigrationHelp help = new DdlMigrationHelp(tableName, column, withHistory);
|
||||
if (!onHistoryTable) {
|
||||
help.writeBefore(buffer);
|
||||
help.writeBefore(writer.apply());
|
||||
}
|
||||
|
||||
platformDdl.alterTableAddColumn(buffer, tableName, column, onHistoryTable, help.getDefaultValue());
|
||||
platformDdl.alterTableAddColumn(writer, tableName, column, onHistoryTable, help.getDefaultValue());
|
||||
final String comment = column.getComment();
|
||||
if (comment != null && !comment.isEmpty()) {
|
||||
platformDdl.addColumnComment(buffer, tableName, column.getName(), comment);
|
||||
platformDdl.addColumnComment(writer.apply(), tableName, column.getName(), comment);
|
||||
}
|
||||
|
||||
if (!onHistoryTable) {
|
||||
help.writeAfter(buffer);
|
||||
help.writeAfter(writer.apply());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-2
@@ -5,6 +5,7 @@ import io.ebean.config.DbConstraintNaming;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlWrite;
|
||||
import io.ebeaninternal.dbmigration.migration.AddHistoryTable;
|
||||
import io.ebeaninternal.dbmigration.migration.AlterColumn;
|
||||
import io.ebeaninternal.dbmigration.migration.DropHistoryTable;
|
||||
import io.ebeaninternal.dbmigration.model.MColumn;
|
||||
import io.ebeaninternal.dbmigration.model.MTable;
|
||||
@@ -241,8 +242,10 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl {
|
||||
}
|
||||
|
||||
protected void dropSysPeriodColumns(DdlBuffer buffer, String baseTableName) {
|
||||
platformDdl.alterTableDropColumn(buffer, baseTableName, sysPeriodStart);
|
||||
platformDdl.alterTableDropColumn(buffer, baseTableName, sysPeriodEnd);
|
||||
DdlWrite writer = new DdlWrite();
|
||||
platformDdl.alterTableDropColumn(writer, baseTableName, sysPeriodStart);
|
||||
platformDdl.alterTableDropColumn(writer, baseTableName, sysPeriodEnd);
|
||||
buffer.append(writer.apply().getBuffer()); // Workaround - will be removed later
|
||||
}
|
||||
|
||||
protected void appendInsertIntoHistory(DdlBuffer buffer, String historyTable, List<String> columns) {
|
||||
|
||||
+3
-10
@@ -27,11 +27,6 @@ public class HanaTableDdl extends BaseTableDdl {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void alterColumnDefaultValue(DdlWrite writer, AlterColumn alter) {
|
||||
// done in alterColumnBaseAttributes
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate(DdlWrite writer, AddColumn addColumn) {
|
||||
String tableName = addColumn.getTableName();
|
||||
@@ -54,7 +49,7 @@ public class HanaTableDdl extends BaseTableDdl {
|
||||
String historyTable = historyTable(tableName);
|
||||
List<Column> columns = addColumn.getColumn();
|
||||
for (Column column : columns) {
|
||||
alterTableAddColumn(writer.apply(), historyTable, column, true, true);
|
||||
alterTableAddColumn(writer, historyTable, column, true, true);
|
||||
}
|
||||
|
||||
historyDdl.enableSystemVersioning(writer.apply(), table.getName(), historyTable, false, this.generateUniqueDdl);
|
||||
@@ -91,10 +86,8 @@ public class HanaTableDdl extends BaseTableDdl {
|
||||
alterHistoryColumn.setCurrentType(alterColumn.getCurrentType());
|
||||
alterHistoryColumn.setCurrentDefaultValue(alterColumn.getCurrentDefaultValue());
|
||||
alterHistoryColumn.setCurrentNotnull(alterColumn.isCurrentNotnull());
|
||||
String histColumnDdl = platformDdl.alterColumnBaseAttributes(alterHistoryColumn);
|
||||
platformDdl.alterColumn(writer, alterHistoryColumn);
|
||||
|
||||
// write the apply to history table
|
||||
writer.apply().append(histColumnDdl).endOfStatement();
|
||||
}
|
||||
|
||||
historyDdl.enableSystemVersioning(writer.apply(), tableName, historyTable, false, this.generateUniqueDdl);
|
||||
@@ -121,7 +114,7 @@ public class HanaTableDdl extends BaseTableDdl {
|
||||
if (manageSystemVersioning) {
|
||||
// also drop from the history table
|
||||
String historyTable = historyTable(tableName);
|
||||
alterTableDropColumn(writer.apply(), historyTable, dropColumn.getColumnName());
|
||||
alterTableDropColumn(writer, historyTable, dropColumn.getColumnName());
|
||||
|
||||
historyDdl.enableSystemVersioning(writer.apply(), tableName, historyTable, false, this.generateUniqueDdl);
|
||||
}
|
||||
|
||||
+29
-33
@@ -3,6 +3,7 @@ package io.ebeaninternal.dbmigration.ddlgeneration.platform;
|
||||
import io.ebean.config.dbplatform.DatabasePlatform;
|
||||
import io.ebean.util.StringHelper;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlWrite;
|
||||
import io.ebeaninternal.dbmigration.migration.AlterColumn;
|
||||
import io.ebeaninternal.dbmigration.migration.Column;
|
||||
|
||||
@@ -21,7 +22,7 @@ public class MySqlDdl extends PlatformDdl {
|
||||
|
||||
public MySqlDdl(DatabasePlatform platform) {
|
||||
super(platform);
|
||||
this.alterColumn = "modify";
|
||||
this.alterColumn = "alter";
|
||||
this.dropUniqueConstraint = "drop index";
|
||||
this.historyDdl = new MySqlHistoryDdl();
|
||||
this.inlineComments = true;
|
||||
@@ -37,11 +38,11 @@ public class MySqlDdl extends PlatformDdl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void alterTableDropColumn(final DdlBuffer buffer, final String tableName, final String columnName) {
|
||||
public void alterTableDropColumn(DdlWrite writer, String tableName, String columnName) {
|
||||
if (this.useMigrationStoredProcedures) {
|
||||
buffer.append("CALL usp_ebean_drop_column('").append(tableName).append("', '").append(columnName).append("')").endOfStatement();
|
||||
writer.apply().append("CALL usp_ebean_drop_column('").append(tableName).append("', '").append(columnName).append("')").endOfStatement();
|
||||
} else {
|
||||
super.alterTableDropColumn(buffer, tableName, columnName);
|
||||
super.alterTableDropColumn(writer, tableName, columnName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,38 +92,33 @@ public class MySqlDdl extends PlatformDdl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnType(String tableName, String columnName, String type) {
|
||||
// can't alter itself - done in alterColumnBaseAttributes()
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnNotnull(String tableName, String columnName, boolean notnull) {
|
||||
// can't alter itself - done in alterColumnBaseAttributes()
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnDefaultValue(String tableName, String columnName, String defaultValue) {
|
||||
String suffix = DdlHelp.isDropDefault(defaultValue) ? columnDropDefault : columnSetDefault + " " + convertDefaultValue(defaultValue);
|
||||
return "alter table " + tableName + " alter " + columnName + " " + suffix;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnBaseAttributes(AlterColumn alter) {
|
||||
if (alter.getType() == null && alter.isNotnull() == null) {
|
||||
// No type change or notNull change
|
||||
// defaultValue change already handled in alterColumnDefaultValue
|
||||
return null;
|
||||
}
|
||||
public void alterColumn(DdlWrite writer, AlterColumn alter) {
|
||||
String tableName = alter.getTableName();
|
||||
String columnName = alter.getColumnName();
|
||||
String type = alter.getType() != null ? alter.getType() : alter.getCurrentType();
|
||||
type = convert(type);
|
||||
boolean notnull = (alter.isNotnull() != null) ? alter.isNotnull() : Boolean.TRUE.equals(alter.isCurrentNotnull());
|
||||
String notnullClause = notnull ? " not null" : "";
|
||||
|
||||
return "alter table " + tableName + " modify " + columnName + " " + type + notnullClause;
|
||||
if (alter.getType() == null && alter.isNotnull() == null) {
|
||||
// No type change or notNull change -> handle default value change
|
||||
if (hasValue(alter.getDefaultValue())) {
|
||||
alterColumnDefault(writer, alter);
|
||||
}
|
||||
} else {
|
||||
// we must regenerate whole statement -> read altered and current value
|
||||
String type = alter.getType() != null ? alter.getType() : alter.getCurrentType();
|
||||
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().append("alter table ").append(tableName)
|
||||
.appendWithSpace("modify").appendWithSpace(columnName);
|
||||
buffer.appendWithSpace(type);
|
||||
if (notnull) {
|
||||
buffer.append(" not null");
|
||||
}
|
||||
if (hasValue(defaultValue) && !DdlHelp.isDropDefault(defaultValue)) {
|
||||
buffer.append(" default ").append(convertDefaultValue(defaultValue));
|
||||
}
|
||||
buffer.endOfStatement();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+50
-20
@@ -538,10 +538,10 @@ public class PlatformDdl {
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
public void alterTableAddColumn(DdlBuffer buffer, String tableName, Column column, boolean onHistoryTable, String defaultValue) {
|
||||
public void alterTableAddColumn(DdlWrite writer, String tableName, Column column, boolean onHistoryTable, String defaultValue) {
|
||||
|
||||
String convertedType = convert(column.getType());
|
||||
|
||||
DdlBuffer buffer = writer.apply();
|
||||
buffer.append("alter table ").append(tableName)
|
||||
.append(" ").append(addColumn).append(" ").append(column.getName())
|
||||
.append(" ").append(convertedType);
|
||||
@@ -575,8 +575,9 @@ public class PlatformDdl {
|
||||
|
||||
}
|
||||
|
||||
public void alterTableDropColumn(DdlBuffer buffer, String tableName, String columnName) {
|
||||
buffer.append("alter table ").append(tableName).append(" ").append(dropColumn).append(" ").append(columnName)
|
||||
public void alterTableDropColumn(DdlWrite writer, String tableName, String columnName) {
|
||||
writer.apply().append("alter table ").append(tableName).append(" ")
|
||||
.append(dropColumn).append(" ").append(columnName)
|
||||
.append(dropColumnSuffix).endOfStatement();
|
||||
}
|
||||
|
||||
@@ -592,22 +593,32 @@ public class PlatformDdl {
|
||||
/**
|
||||
* Alter a column type.
|
||||
* <p>
|
||||
* Note that that MySql and SQL Server instead use alterColumnBaseAttributes()
|
||||
* Note that that MySql, SQL Server, and HANA instead use alterColumn()
|
||||
* </p>
|
||||
*/
|
||||
public String alterColumnType(String tableName, String columnName, String type) {
|
||||
return "alter table " + tableName + " " + alterColumn + " " + columnName + " " + columnSetType + convert(type) + alterColumnSuffix;
|
||||
protected void alterColumnType(DdlWrite writer, AlterColumn alter) {
|
||||
writer.apply().append("alter table ").append(alter.getTableName())
|
||||
.appendWithSpace(alterColumn).appendWithSpace(alter.getColumnName())
|
||||
.append(" ").append(columnSetType).append(convert(alter.getType()))
|
||||
.endOfStatement();
|
||||
}
|
||||
|
||||
/**
|
||||
* Alter a column adding or removing the not null constraint.
|
||||
* <p>
|
||||
* Note that that MySql, SQL Server, and HANA instead use alterColumnBaseAttributes()
|
||||
* Note that that MySql, SQL Server, and HANA instead use alterColumn()
|
||||
* </p>
|
||||
*/
|
||||
public String alterColumnNotnull(String tableName, String columnName, boolean notnull) {
|
||||
String suffix = notnull ? columnSetNotnull : columnSetNull;
|
||||
return "alter table " + tableName + " " + alterColumn + " " + columnName + " " + suffix + alterColumnSuffix;
|
||||
protected void alterColumnNotnull(DdlWrite writer, AlterColumn alter) {
|
||||
|
||||
DdlBuffer buffer = writer.apply().append("alter table ").append(alter.getTableName())
|
||||
.appendWithSpace(alterColumn).appendWithSpace(alter.getColumnName());
|
||||
if (Boolean.TRUE.equals(alter.isNotnull())) {
|
||||
buffer.appendWithSpace(columnSetNotnull);
|
||||
} else {
|
||||
buffer.appendWithSpace(columnSetNull);
|
||||
}
|
||||
buffer.endOfStatement();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -619,22 +630,41 @@ public class PlatformDdl {
|
||||
|
||||
/**
|
||||
* Alter column setting the default value.
|
||||
* <p>
|
||||
* Note that that MySql, SQL Server, and HANA instead use alterColumn()
|
||||
* </p>
|
||||
*/
|
||||
public String alterColumnDefaultValue(String tableName, String columnName, String defaultValue) {
|
||||
String suffix = DdlHelp.isDropDefault(defaultValue) ? columnDropDefault : columnSetDefault + " " + convertDefaultValue(defaultValue);
|
||||
return "alter table " + tableName + " " + alterColumn + " " + columnName + " " + suffix + alterColumnSuffix;
|
||||
protected void alterColumnDefault(DdlWrite writer, AlterColumn alter) {
|
||||
DdlBuffer buffer = writer.apply().append("alter table ").append(alter.getTableName())
|
||||
.appendWithSpace(alterColumn).appendWithSpace(alter.getColumnName());
|
||||
if (DdlHelp.isDropDefault(alter.getDefaultValue())) {
|
||||
buffer.appendWithSpace(columnDropDefault);
|
||||
} else {
|
||||
buffer.appendWithSpace(columnSetDefault).appendWithSpace(convertDefaultValue(alter.getDefaultValue()));
|
||||
}
|
||||
buffer.endOfStatement();
|
||||
}
|
||||
|
||||
/**
|
||||
* Alter column setting both the type and not null constraint.
|
||||
* Alter column setting (type, default value and not null constraint).
|
||||
* <p>
|
||||
* Used by MySql, SQL Server, and HANA as these require both column attributes to be set together.
|
||||
* Used by MySql, SQL Server, and HANA as these require all column attributes to
|
||||
* be set together.
|
||||
* </p>
|
||||
*/
|
||||
public String alterColumnBaseAttributes(AlterColumn alter) {
|
||||
// by default do nothing, only used by mysql, sql server, and HANA as they can only
|
||||
// modify the column with the full column definition
|
||||
return null;
|
||||
public void alterColumn(DdlWrite writer, AlterColumn alter) {
|
||||
|
||||
if (hasValue(alter.getType())) {
|
||||
alterColumnType(writer, alter);
|
||||
}
|
||||
|
||||
if (hasValue(alter.getDefaultValue())) {
|
||||
alterColumnDefault(writer, alter);
|
||||
}
|
||||
|
||||
if (alter.isNotnull() != null) {
|
||||
alterColumnNotnull(writer, alter);
|
||||
}
|
||||
}
|
||||
|
||||
protected void appendColumns(String[] columns, StringBuilder buffer) {
|
||||
|
||||
+10
-2
@@ -2,6 +2,8 @@ package io.ebeaninternal.dbmigration.ddlgeneration.platform;
|
||||
|
||||
import io.ebean.config.dbplatform.DatabasePlatform;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlWrite;
|
||||
import io.ebeaninternal.dbmigration.migration.AlterColumn;
|
||||
|
||||
/**
|
||||
* Postgres specific DDL.
|
||||
@@ -56,7 +58,13 @@ public class PostgresDdl extends PlatformDdl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnType(String tableName, String columnName, String type) {
|
||||
return super.alterColumnType(tableName, columnName, type) + " using " + columnName + "::" + convert(type);
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
+11
-6
@@ -3,6 +3,8 @@ package io.ebeaninternal.dbmigration.ddlgeneration.platform;
|
||||
import io.ebean.config.dbplatform.DatabasePlatform;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlOptions;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlWrite;
|
||||
import io.ebeaninternal.dbmigration.migration.AlterColumn;
|
||||
|
||||
/**
|
||||
* SQLite platform specific DDL.
|
||||
@@ -59,18 +61,21 @@ public class SQLiteDdl extends PlatformDdl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnDefaultValue(String tableName, String columnName, String defaultValue) {
|
||||
return "-- not supported: " + super.alterColumnDefaultValue(tableName, columnName, defaultValue);
|
||||
public void alterColumnType(DdlWrite writer, AlterColumn alter) {
|
||||
writer.apply().append("-- not supported: ");
|
||||
super.alterColumnType(writer, alter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnType(String tableName, String columnName, String type) {
|
||||
return "-- not supported: " + super.alterColumnType(tableName, columnName, type);
|
||||
public void alterColumnDefault(DdlWrite writer, AlterColumn alter) {
|
||||
writer.apply().append("-- not supported: ");
|
||||
super.alterColumnDefault(writer, alter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnNotnull(String tableName, String columnName, boolean notnull) {
|
||||
return "-- not supported: " + super.alterColumnNotnull(tableName, columnName, notnull);
|
||||
public void alterColumnNotnull(DdlWrite writer, AlterColumn alter) {
|
||||
writer.apply().append("-- not supported: ");
|
||||
super.alterColumnNotnull(writer, alter);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+73
-53
@@ -11,6 +11,12 @@ import io.ebeaninternal.dbmigration.migration.AlterColumn;
|
||||
*/
|
||||
public class SqlServerDdl extends PlatformDdl {
|
||||
|
||||
private static final String CONSTRAINT = "C";
|
||||
private static final String UNIQUE_CONSTRAINT = "UQ";
|
||||
private static final String USER_TABLE = "U";
|
||||
private static final String FOREIGN_KEY = "F";
|
||||
private static final String SEQUENCE_OBJECT = "SO";
|
||||
|
||||
public SqlServerDdl(DatabasePlatform platform) {
|
||||
super(platform);
|
||||
this.identitySuffix = " identity(1,1)";
|
||||
@@ -31,12 +37,7 @@ public class SqlServerDdl extends PlatformDdl {
|
||||
|
||||
@Override
|
||||
public String dropTable(String tableName) {
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append("IF OBJECT_ID('");
|
||||
buffer.append(tableName);
|
||||
buffer.append("', 'U') IS NOT NULL drop table ");
|
||||
buffer.append(tableName);
|
||||
return buffer.toString();
|
||||
return ifObjectExists(tableName, USER_TABLE) + "drop table " + tableName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -46,12 +47,12 @@ public class SqlServerDdl extends PlatformDdl {
|
||||
if (pos != -1) {
|
||||
objectId = tableName.substring(0, pos + 1) + fkName;
|
||||
}
|
||||
return "IF OBJECT_ID('" + objectId + "', 'F') IS NOT NULL " + super.alterTableDropForeignKey(tableName, fkName);
|
||||
return ifObjectExists(objectId, FOREIGN_KEY) + super.alterTableDropForeignKey(tableName, fkName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String dropSequence(String sequenceName) {
|
||||
return "IF OBJECT_ID('" + sequenceName + "', 'SO') IS NOT NULL drop sequence " + sequenceName;
|
||||
return ifObjectExists(sequenceName, SEQUENCE_OBJECT) + "drop sequence " + sequenceName;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -71,12 +72,11 @@ public class SqlServerDdl extends PlatformDdl {
|
||||
throw new NullPointerException();
|
||||
}
|
||||
// issues#233
|
||||
String start = "create unique nonclustered index " + uqName + " on " + tableName + "(";
|
||||
StringBuilder sb = new StringBuilder(start);
|
||||
|
||||
StringBuilder sb = new StringBuilder(256);
|
||||
sb.append("create unique nonclustered index ").append(uqName).append(" on ").append(tableName).append('(');
|
||||
for (int i = 0; i < columns.length; i++) {
|
||||
if (i > 0) {
|
||||
sb.append(",");
|
||||
sb.append(',');
|
||||
}
|
||||
sb.append(columns[i]);
|
||||
}
|
||||
@@ -91,11 +91,9 @@ public class SqlServerDdl extends PlatformDdl {
|
||||
|
||||
@Override
|
||||
public String alterTableDropConstraint(String tableName, String constraintName) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("IF (OBJECT_ID('").append(constraintName).append("', 'C') IS NOT NULL) ");
|
||||
sb.append(super.alterTableDropConstraint(tableName, constraintName));
|
||||
return sb.toString();
|
||||
return ifObjectExists(maxConstraintName(constraintName), CONSTRAINT) + super.alterTableDropConstraint(tableName, constraintName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop a unique constraint from the table (Sometimes this is an index).
|
||||
*/
|
||||
@@ -103,10 +101,12 @@ public class SqlServerDdl extends PlatformDdl {
|
||||
public String alterTableDropUniqueConstraint(String tableName, String uniqueConstraintName) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(dropIndex(uniqueConstraintName, tableName)).append(";\n");
|
||||
sb.append("IF (OBJECT_ID('").append(maxConstraintName(uniqueConstraintName)).append("', 'UQ') IS NOT NULL) ");
|
||||
sb.append(super.alterTableDropUniqueConstraint(tableName, uniqueConstraintName));
|
||||
|
||||
sb.append(ifObjectExists(maxConstraintName(uniqueConstraintName), UNIQUE_CONSTRAINT))
|
||||
.append(super.alterTableDropUniqueConstraint(tableName, uniqueConstraintName));
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate and return the create sequence DDL.
|
||||
*/
|
||||
@@ -133,50 +133,57 @@ public class SqlServerDdl extends PlatformDdl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnDefaultValue(String tableName, String columnName, String defaultValue) {
|
||||
protected void alterColumnDefault(DdlWrite writer, AlterColumn alter) {
|
||||
// Unfortunately, the SqlServer creates default values with a random name.
|
||||
// You can specify a name in DDL, but this does not work in conjunction with
|
||||
// temporal tables in certain cases. So we have to delete the constraint with
|
||||
// a rather complex statement.
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (DdlHelp.isDropDefault(defaultValue)) {
|
||||
sb.append("EXEC usp_ebean_drop_default_constraint ").append(tableName).append(", ").append(columnName);
|
||||
} else {
|
||||
sb.append("alter table ").append(tableName);
|
||||
sb.append(" add default ").append(convertDefaultValue(defaultValue)).append(" for ").append(columnName);
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnBaseAttributes(AlterColumn alter) {
|
||||
if (alter.getType() == null && alter.isNotnull() == null) {
|
||||
// No type change or notNull change
|
||||
// defaultValue change already handled in alterColumnDefaultValue
|
||||
return null;
|
||||
}
|
||||
String tableName = alter.getTableName();
|
||||
String columnName = alter.getColumnName();
|
||||
String type = alter.getType() != null ? alter.getType() : alter.getCurrentType();
|
||||
type = convert(type);
|
||||
boolean notnull = (alter.isNotnull() != null) ? alter.isNotnull() : Boolean.TRUE.equals(alter.isCurrentNotnull());
|
||||
String notnullClause = notnull ? " not null" : "";
|
||||
|
||||
return "alter table " + tableName + " " + alterColumn + " " + columnName + " " + type + notnullClause;
|
||||
String defaultValue = alter.getDefaultValue();
|
||||
if (DdlHelp.isDropDefault(defaultValue)) {
|
||||
writer.apply().appendStatement(execUspDropDefaultConstraint(tableName, columnName));
|
||||
} else {
|
||||
writer.apply().appendStatement(execUspDropDefaultConstraint(tableName, columnName));
|
||||
setDefaultValue(writer, tableName, columnName, defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnType(String tableName, String columnName, String type) {
|
||||
public void alterColumn(DdlWrite writer, AlterColumn alter) {
|
||||
String tableName = alter.getTableName();
|
||||
String columnName = alter.getColumnName();
|
||||
if (alter.getType() == null && alter.isNotnull() == null) {
|
||||
// No type change or notNull change
|
||||
if (hasValue(alter.getDefaultValue())) {
|
||||
alterColumnDefault(writer, alter);
|
||||
}
|
||||
} else {
|
||||
// we must regenerate whole statement -> read altered and current value
|
||||
String type = alter.getType() != null ? alter.getType() : alter.getCurrentType();
|
||||
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));
|
||||
}
|
||||
|
||||
// can't alter itself - done in alterColumnBaseAttributes()
|
||||
return null;
|
||||
}
|
||||
buffer = writer.apply().append("alter table ").append(tableName)
|
||||
.appendWithSpace(alterColumn).appendWithSpace(columnName);
|
||||
buffer.appendWithSpace(type);
|
||||
if (notnull) {
|
||||
buffer.append(" not null");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String alterColumnNotnull(String tableName, String columnName, boolean notnull) {
|
||||
buffer.endOfStatement();
|
||||
|
||||
// can't alter itself - done in alterColumnBaseAttributes()
|
||||
return null;
|
||||
// re add - default constraint
|
||||
if (hasValue(defaultValue) && !DdlHelp.isDropDefault(defaultValue)) {
|
||||
setDefaultValue(writer, tableName, columnName, defaultValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -202,9 +209,8 @@ public class SqlServerDdl extends PlatformDdl {
|
||||
* (constraints, default values, indices and foreign keys). That's why we call a user stored procedure here
|
||||
*/
|
||||
@Override
|
||||
public void alterTableDropColumn(DdlBuffer buffer, String tableName, String columnName) {
|
||||
|
||||
buffer.append("EXEC usp_ebean_drop_column ").append(tableName).append(", ").append(columnName).endOfStatement();
|
||||
public void alterTableDropColumn(DdlWrite writer, String tableName, String columnName) {
|
||||
writer.apply().append("EXEC usp_ebean_drop_column ").append(tableName).append(", ").append(columnName).endOfStatement();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -246,4 +252,18 @@ public class SqlServerDdl extends PlatformDdl {
|
||||
.endOfStatement();
|
||||
}
|
||||
|
||||
private 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 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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+10
-2
@@ -4,6 +4,7 @@ import io.ebean.config.DatabaseConfig;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer;
|
||||
import io.ebeaninternal.dbmigration.ddlgeneration.DdlWrite;
|
||||
import io.ebeaninternal.dbmigration.migration.AddHistoryTable;
|
||||
import io.ebeaninternal.dbmigration.migration.AlterColumn;
|
||||
import io.ebeaninternal.dbmigration.migration.DropHistoryTable;
|
||||
import io.ebeaninternal.dbmigration.model.MTable;
|
||||
|
||||
@@ -62,9 +63,16 @@ public class SqlServerHistoryDdl implements PlatformHistoryDdl {
|
||||
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);
|
||||
alter.setColumnName(systemPeriodEnd);
|
||||
platformDdl.alterColumn(tmpWriter, alter);
|
||||
apply.append(tmpWriter.apply().getBuffer()); // workaround - will be refactored later
|
||||
|
||||
apply.append(platformDdl.alterColumnDefaultValue(baseTable, systemPeriodStart, DdlHelp.DROP_DEFAULT)).endOfStatement();
|
||||
apply.append(platformDdl.alterColumnDefaultValue(baseTable, systemPeriodEnd, DdlHelp.DROP_DEFAULT)).endOfStatement();
|
||||
// switch of versioning & period
|
||||
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();
|
||||
|
||||
+3
-3
@@ -55,7 +55,7 @@ public class BaseTableDdlTest {
|
||||
column.setName("col_name");
|
||||
column.setType("varchar(20)");
|
||||
|
||||
ddlGen.alterTableAddColumn(writer.apply(), "mytable", column, false, false);
|
||||
ddlGen.alterTableAddColumn(writer, "mytable", column, false, false);
|
||||
|
||||
String ddl = writer.apply().getBuffer();
|
||||
assertThat(ddl).contains("alter table mytable add col_name varchar2(20)");
|
||||
@@ -72,7 +72,7 @@ public class BaseTableDdlTest {
|
||||
column.setName("col_name");
|
||||
column.setType("varchar(20)");
|
||||
|
||||
ddlGen.alterTableAddColumn(writer.apply(), "mytable", column, false, false);
|
||||
ddlGen.alterTableAddColumn(writer, "mytable", column, false, false);
|
||||
|
||||
String ddl = writer.apply().getBuffer();
|
||||
assertThat(ddl).contains("alter table mytable add column col_name String");
|
||||
@@ -105,7 +105,7 @@ public class BaseTableDdlTest {
|
||||
column.setComment("some comment");
|
||||
column.setType("int");
|
||||
|
||||
ddl.alterTableAddColumn(writer.apply(), "my_table", column, false, false);
|
||||
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",
|
||||
|
||||
+2
-2
@@ -13,7 +13,7 @@ public class HanaDdlTest {
|
||||
public void alterTableDropColumn() {
|
||||
HanaColumnStoreDdl ddl = new HanaColumnStoreDdl(new HanaPlatform());
|
||||
DdlWrite writer = new DdlWrite();
|
||||
ddl.alterTableDropColumn(writer.apply(), "my_table", "my_column");
|
||||
ddl.alterTableDropColumn(writer, "my_table", "my_column");
|
||||
assertEquals("CALL usp_ebean_drop_column('my_table', 'my_column');\n", writer.apply().getBuffer());
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public class HanaDdlTest {
|
||||
column.setCheckConstraintName("check_constraint");
|
||||
column.setHistoryExclude(Boolean.TRUE);
|
||||
column.setIdentity(Boolean.TRUE);
|
||||
ddl.alterTableAddColumn(writer.apply(), "my_table", column, false, "1");
|
||||
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", writer.apply().getBuffer());
|
||||
}
|
||||
}
|
||||
|
||||
+364
-164
@@ -3,6 +3,7 @@ package io.ebeaninternal.dbmigration.ddlgeneration.platform;
|
||||
import io.ebean.DB;
|
||||
import io.ebean.config.DatabaseConfig;
|
||||
import io.ebean.config.dbplatform.IdType;
|
||||
import io.ebean.config.dbplatform.db2.DB2LuwPlatform;
|
||||
import io.ebean.config.dbplatform.h2.H2Platform;
|
||||
import io.ebean.config.dbplatform.hana.HanaPlatform;
|
||||
import io.ebean.config.dbplatform.mysql.MySqlPlatform;
|
||||
@@ -14,12 +15,12 @@ import io.ebeaninternal.dbmigration.ddlgeneration.PlatformDdlBuilder;
|
||||
import io.ebeaninternal.dbmigration.migration.AlterColumn;
|
||||
import io.ebeaninternal.dbmigration.migration.AlterForeignKey;
|
||||
import io.ebeaninternal.dbmigration.migration.Column;
|
||||
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import org.assertj.core.api.SoftAssertions;
|
||||
|
||||
public class PlatformDdl_AlterColumnTest {
|
||||
|
||||
@@ -31,229 +32,359 @@ public class PlatformDdl_AlterColumnTest {
|
||||
private final PlatformDdl oraDdl = PlatformDdlBuilder.create(new OraclePlatform());
|
||||
private final PlatformDdl sqlServerDdl = PlatformDdlBuilder.create(new SqlServer17Platform());
|
||||
private final PlatformDdl hanaDdl = PlatformDdlBuilder.create(new HanaPlatform());
|
||||
private final PlatformDdl db2Ddl = PlatformDdlBuilder.create(new DB2LuwPlatform());
|
||||
|
||||
private final SoftAssertions softly = new SoftAssertions();
|
||||
|
||||
{
|
||||
DatabaseConfig serverConfig = DB.getDefault().pluginApi().config();
|
||||
sqlServerDdl.configure(serverConfig);
|
||||
}
|
||||
|
||||
AlterColumn alterNotNull() {
|
||||
AlterColumn alterColumn = new AlterColumn();
|
||||
alterColumn.setTableName("mytab");
|
||||
alterColumn.setColumnName("acol");
|
||||
alterColumn.setCurrentType("varchar(5)");
|
||||
alterColumn.setNotnull(Boolean.TRUE);
|
||||
|
||||
return alterColumn;
|
||||
@AfterEach
|
||||
void assertAll() {
|
||||
softly.assertAll();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayType_default() {
|
||||
assertThat(mysqlDdl.convertArrayType("varchar[](90)")).isEqualTo("varchar(90)");
|
||||
assertThat(mysqlDdl.convertArrayType("integer[](60)")).isEqualTo("varchar(60)");
|
||||
assertThat(mysqlDdl.convertArrayType("varchar[]")).isEqualTo("varchar(1000)");
|
||||
assertThat(mysqlDdl.convertArrayType("integer[]")).isEqualTo("varchar(1000)");
|
||||
softly.assertThat(mysqlDdl.convertArrayType("varchar[](90)")).isEqualTo("varchar(90)");
|
||||
softly.assertThat(mysqlDdl.convertArrayType("integer[](60)")).isEqualTo("varchar(60)");
|
||||
softly.assertThat(mysqlDdl.convertArrayType("varchar[]")).isEqualTo("varchar(1000)");
|
||||
softly.assertThat(mysqlDdl.convertArrayType("integer[]")).isEqualTo("varchar(1000)");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayType_h2() {
|
||||
if (useV1Syntax) {
|
||||
assertThat(h2Ddl.convertArrayType("varchar[](90)")).isEqualTo("array");
|
||||
assertThat(h2Ddl.convertArrayType("integer[](60)")).isEqualTo("array");
|
||||
assertThat(h2Ddl.convertArrayType("varchar[]")).isEqualTo("array");
|
||||
assertThat(h2Ddl.convertArrayType("integer[]")).isEqualTo("array");
|
||||
softly.assertThat(h2Ddl.convertArrayType("varchar[](90)")).isEqualTo("array");
|
||||
softly.assertThat(h2Ddl.convertArrayType("integer[](60)")).isEqualTo("array");
|
||||
softly.assertThat(h2Ddl.convertArrayType("varchar[]")).isEqualTo("array");
|
||||
softly.assertThat(h2Ddl.convertArrayType("integer[]")).isEqualTo("array");
|
||||
} else {
|
||||
assertThat(h2Ddl.convertArrayType("varchar[](90)")).isEqualTo("varchar array");
|
||||
assertThat(h2Ddl.convertArrayType("integer[](60)")).isEqualTo("integer array");
|
||||
assertThat(h2Ddl.convertArrayType("varchar[]")).isEqualTo("varchar array");
|
||||
assertThat(h2Ddl.convertArrayType("integer[]")).isEqualTo("integer array");
|
||||
softly.assertThat(h2Ddl.convertArrayType("varchar[](90)")).isEqualTo("varchar array");
|
||||
softly.assertThat(h2Ddl.convertArrayType("integer[](60)")).isEqualTo("integer array");
|
||||
softly.assertThat(h2Ddl.convertArrayType("varchar[]")).isEqualTo("varchar array");
|
||||
softly.assertThat(h2Ddl.convertArrayType("integer[]")).isEqualTo("integer array");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayType_postgres() {
|
||||
assertThat(pgDdl.convertArrayType("varchar[](90)")).isEqualTo("varchar[]");
|
||||
assertThat(pgDdl.convertArrayType("integer[](60)")).isEqualTo("integer[]");
|
||||
assertThat(pgDdl.convertArrayType("varchar[]")).isEqualTo("varchar[]");
|
||||
assertThat(pgDdl.convertArrayType("integer[]")).isEqualTo("integer[]");
|
||||
softly.assertThat(pgDdl.convertArrayType("varchar[](90)")).isEqualTo("varchar[]");
|
||||
softly.assertThat(pgDdl.convertArrayType("integer[](60)")).isEqualTo("integer[]");
|
||||
softly.assertThat(pgDdl.convertArrayType("varchar[]")).isEqualTo("varchar[]");
|
||||
softly.assertThat(pgDdl.convertArrayType("integer[]")).isEqualTo("integer[]");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayType_hana() {
|
||||
assertThat(hanaDdl.convertArrayType("varchar[](90)")).isEqualTo("nvarchar(255) array(90)");
|
||||
assertThat(hanaDdl.convertArrayType("integer[](60)")).isEqualTo("integer array(60)");
|
||||
assertThat(hanaDdl.convertArrayType("varchar[]")).isEqualTo("nvarchar(255) array");
|
||||
assertThat(hanaDdl.convertArrayType("integer[]")).isEqualTo("integer array");
|
||||
softly.assertThat(hanaDdl.convertArrayType("varchar[](90)")).isEqualTo("nvarchar(255) array(90)");
|
||||
softly.assertThat(hanaDdl.convertArrayType("integer[](60)")).isEqualTo("integer array(60)");
|
||||
softly.assertThat(hanaDdl.convertArrayType("varchar[]")).isEqualTo("nvarchar(255) array");
|
||||
softly.assertThat(hanaDdl.convertArrayType("integer[]")).isEqualTo("integer array");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlterColumnBaseAttributes() {
|
||||
|
||||
AlterColumn alterColumn = alterNotNull();
|
||||
assertNull(h2Ddl.alterColumnBaseAttributes(alterColumn));
|
||||
assertNull(pgDdl.alterColumnBaseAttributes(alterColumn));
|
||||
assertNull(oraDdl.alterColumnBaseAttributes(alterColumn));
|
||||
AlterColumn alter = new AlterColumn();
|
||||
alter.setTableName("mytab");
|
||||
alter.setColumnName("acol");
|
||||
alter.setCurrentType("varchar(5)");
|
||||
alter.setCurrentDefaultValue("'ho'");
|
||||
alter.setCurrentNotnull(Boolean.FALSE);
|
||||
|
||||
String sql = mysqlDdl.alterColumnBaseAttributes(alterColumn);
|
||||
assertEquals("alter table mytab modify acol varchar(5) not null", sql);
|
||||
// alter all attributes
|
||||
alter.setNotnull(Boolean.TRUE); // -> alter to not null
|
||||
alter.setDefaultValue("'hi'"); // and set default
|
||||
alter.setType("varchar(50)"); // and alter type
|
||||
|
||||
sql = sqlServerDdl.alterColumnBaseAttributes(alterColumn);
|
||||
assertEquals("alter table mytab alter column acol nvarchar(5) not null", sql);
|
||||
String sql = alterColumn(h2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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 = hanaDdl.alterColumnBaseAttributes(alterColumn);
|
||||
assertEquals("alter table mytab alter ( acol nvarchar(5) not null)", sql);
|
||||
sql = alterColumn(pgDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
alterColumn.setNotnull(Boolean.FALSE);
|
||||
sql = mysqlDdl.alterColumnBaseAttributes(alterColumn);
|
||||
assertEquals("alter table mytab modify acol varchar(5)", sql);
|
||||
sql = alterColumn(oraDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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 = hanaDdl.alterColumnBaseAttributes(alterColumn);
|
||||
assertEquals("alter table mytab alter ( acol nvarchar(5))", sql);
|
||||
sql = alterColumn(mysqlDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol varchar(50) not null default 'hi';\n");
|
||||
|
||||
alterColumn.setNotnull(null);
|
||||
alterColumn.setType("varchar(100)");
|
||||
sql = alterColumn(sqlServerDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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 = mysqlDdl.alterColumnBaseAttributes(alterColumn);
|
||||
assertEquals("alter table mytab modify acol varchar(100)", sql);
|
||||
sql = alterColumn(hanaDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter ( acol nvarchar(50) default 'hi' not null);\n");
|
||||
|
||||
sql = hanaDdl.alterColumnBaseAttributes(alterColumn);
|
||||
assertEquals("alter table mytab alter ( acol nvarchar(100))", sql);
|
||||
sql = alterColumn(db2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
alterColumn.setCurrentNotnull(Boolean.TRUE);
|
||||
sql = mysqlDdl.alterColumnBaseAttributes(alterColumn);
|
||||
assertEquals("alter table mytab modify acol varchar(100) not null", sql);
|
||||
//
|
||||
alter.setCurrentNotnull(Boolean.TRUE);
|
||||
alter.setNotnull(Boolean.FALSE);
|
||||
alter.setDefaultValue("DROP DEFAULT");
|
||||
alter.setType(null); // do not alter type
|
||||
|
||||
sql = alterColumn(h2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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"
|
||||
+ "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"
|
||||
+ "alter table mytab modify acol null;\n");
|
||||
|
||||
sql = alterColumn(mysqlDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol varchar(5);\n");
|
||||
|
||||
sql = alterColumn(sqlServerDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
sql = alterColumn(db2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n"
|
||||
+ "alter table mytab alter column acol drop not null;\n");
|
||||
|
||||
sql = hanaDdl.alterColumnBaseAttributes(alterColumn);
|
||||
assertEquals("alter table mytab alter ( acol nvarchar(100) not null)", sql);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlterColumnType() {
|
||||
|
||||
String sql = h2Ddl.alterColumnType("mytab", "acol", "varchar(20)");
|
||||
assertEquals("alter table mytab alter column acol varchar(20)", sql);
|
||||
AlterColumn alter = new AlterColumn();
|
||||
alter.setTableName("mytab");
|
||||
alter.setColumnName("acol");
|
||||
alter.setCurrentType("integer");
|
||||
alter.setType("varchar(20)");
|
||||
|
||||
sql = pgDdl.alterColumnType("mytab", "acol", "varchar(20)");
|
||||
assertEquals("alter table mytab alter column acol type varchar(20) using acol::varchar(20)", sql);
|
||||
sql = pgDdl.alterColumnType("mytab", "acol", "bigint");
|
||||
assertEquals("alter table mytab alter column acol type bigint using acol::bigint", sql);
|
||||
String sql = alterColumn(h2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol varchar(20);\n");
|
||||
|
||||
sql = oraDdl.alterColumnType("mytab", "acol", "varchar(20)");
|
||||
assertEquals("alter table mytab modify acol varchar2(20)", sql);
|
||||
sql = alterColumn(pgDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol type varchar(20) using acol::varchar(20);\n");
|
||||
|
||||
sql = mysqlDdl.alterColumnType("mytab", "acol", "varchar(20)");
|
||||
assertNull(sql);
|
||||
sql = alterColumn(oraDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol varchar2(20);\n");
|
||||
|
||||
sql = sqlServerDdl.alterColumnType("mytab", "acol", "varchar(20)");
|
||||
assertNull(sql);
|
||||
sql = alterColumn(mysqlDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol varchar(20);\n");
|
||||
|
||||
sql = alterColumn(sqlServerDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
sql = alterColumn(db2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set data type varchar(20);\n");
|
||||
|
||||
alter.setType("bigint");
|
||||
sql = alterColumn(pgDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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"
|
||||
+ "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"
|
||||
+ "alter table mytab alter ( acol nvarchar(10));\n");
|
||||
|
||||
sql = hanaDdl.alterColumnType("mytab", "acol", "varchar(20)");
|
||||
assertNull(sql);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlterColumnNotnull() {
|
||||
AlterColumn alter = new AlterColumn();
|
||||
alter.setTableName("mytab");
|
||||
alter.setColumnName("acol");
|
||||
alter.setCurrentType("varchar(20)");
|
||||
alter.setCurrentNotnull(Boolean.FALSE);
|
||||
alter.setNotnull(Boolean.TRUE);
|
||||
|
||||
String sql = h2Ddl.alterColumnNotnull("mytab", "acol", true);
|
||||
assertEquals("alter table mytab alter column acol set not null", sql);
|
||||
String sql = alterColumn(h2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set not null;\n");
|
||||
|
||||
sql = pgDdl.alterColumnNotnull("mytab", "acol", true);
|
||||
assertEquals("alter table mytab alter column acol set not null", sql);
|
||||
sql = alterColumn(pgDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set not null;\n");
|
||||
|
||||
sql = oraDdl.alterColumnNotnull("mytab", "acol", true);
|
||||
assertEquals("alter table mytab modify acol not null", sql);
|
||||
sql = alterColumn(oraDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol not null;\n");
|
||||
|
||||
sql = mysqlDdl.alterColumnNotnull("mytab", "acol", true);
|
||||
assertNull(sql);
|
||||
sql = alterColumn(mysqlDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol varchar(20) not null;\n");
|
||||
|
||||
sql = sqlServerDdl.alterColumnNotnull("mytab", "acol", true);
|
||||
assertNull(sql);
|
||||
sql = alterColumn(sqlServerDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
sql = alterColumn(db2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set not null;\n");
|
||||
|
||||
sql = hanaDdl.alterColumnNotnull("mytab", "acol", true);
|
||||
assertNull(sql);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlterColumnNull() {
|
||||
|
||||
String sql = h2Ddl.alterColumnNotnull("mytab", "acol", false);
|
||||
assertEquals("alter table mytab alter column acol set null", sql);
|
||||
AlterColumn alter = new AlterColumn();
|
||||
alter.setTableName("mytab");
|
||||
alter.setColumnName("acol");
|
||||
alter.setCurrentType("varchar(20)");
|
||||
alter.setCurrentDefaultValue("'hi'");
|
||||
alter.setCurrentNotnull(Boolean.TRUE);
|
||||
|
||||
sql = pgDdl.alterColumnNotnull("mytab", "acol", false);
|
||||
assertEquals("alter table mytab alter column acol drop not null", sql);
|
||||
alter.setNotnull(Boolean.FALSE);
|
||||
String sql = alterColumn(h2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set null;\n");
|
||||
|
||||
sql = oraDdl.alterColumnNotnull("mytab", "acol", false);
|
||||
assertEquals("alter table mytab modify acol null", sql);
|
||||
sql = alterColumn(pgDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop not null;\n");
|
||||
|
||||
sql = mysqlDdl.alterColumnNotnull("mytab", "acol", false);
|
||||
assertNull(sql);
|
||||
sql = alterColumn(oraDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol null;\n");
|
||||
|
||||
sql = sqlServerDdl.alterColumnNotnull("mytab", "acol", false);
|
||||
assertNull(sql);
|
||||
sql = alterColumn(mysqlDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol varchar(20) default 'hi';\n");
|
||||
|
||||
sql = hanaDdl.alterColumnNotnull("mytab", "acol", false);
|
||||
assertNull(sql);
|
||||
sql = alterColumn(sqlServerDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
sql = alterColumn(db2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop not null;\n");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlterColumnDefaultValue() {
|
||||
public void testAlterColumnAddDefaultValue() {
|
||||
AlterColumn alter = new AlterColumn();
|
||||
alter.setTableName("mytab");
|
||||
alter.setColumnName("acol");
|
||||
alter.setCurrentType("varchar(20)");
|
||||
alter.setCurrentNotnull(Boolean.TRUE);
|
||||
alter.setDefaultValue("'hi'");
|
||||
|
||||
String sql = h2Ddl.alterColumnDefaultValue("mytab", "acol", "'hi'");
|
||||
assertEquals("alter table mytab alter column acol set default 'hi'", sql);
|
||||
String sql = alterColumn(h2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set default 'hi';\n");
|
||||
|
||||
sql = pgDdl.alterColumnDefaultValue("mytab", "acol", "'hi'");
|
||||
assertEquals("alter table mytab alter column acol set default 'hi'", sql);
|
||||
sql = alterColumn(pgDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set default 'hi';\n");
|
||||
|
||||
sql = oraDdl.alterColumnDefaultValue("mytab", "acol", "'hi'");
|
||||
assertEquals("alter table mytab modify acol default 'hi'", sql);
|
||||
sql = alterColumn(oraDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol default 'hi';\n");
|
||||
|
||||
sql = mysqlDdl.alterColumnDefaultValue("mytab", "acol", "'hi'");
|
||||
assertEquals("alter table mytab alter acol set default 'hi'", sql);
|
||||
sql = alterColumn(mysqlDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter acol set default 'hi';\n");
|
||||
|
||||
sql = sqlServerDdl.alterColumnDefaultValue("mytab", "acol", "'hi'");
|
||||
assertEquals("alter table mytab add default 'hi' for acol", sql);
|
||||
sql = alterColumn(sqlServerDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("EXEC usp_ebean_drop_default_constraint mytab, acol;\n"
|
||||
+ "alter table mytab add default 'hi' for acol;\n");
|
||||
|
||||
boolean exceptionCaught = false;
|
||||
try {
|
||||
hanaDdl.alterColumnDefaultValue("mytab", "acol", "'hi'");
|
||||
} catch (UnsupportedOperationException e) {
|
||||
exceptionCaught = true;
|
||||
}
|
||||
assertTrue(exceptionCaught);
|
||||
sql = alterColumn(hanaDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlterColumnChangeDefaultValue() {
|
||||
AlterColumn alter = new AlterColumn();
|
||||
alter.setTableName("mytab");
|
||||
alter.setColumnName("acol");
|
||||
alter.setCurrentType("varchar(20)");
|
||||
alter.setCurrentNotnull(Boolean.TRUE);
|
||||
alter.setDefaultValue("'ho'");
|
||||
alter.setDefaultValue("'hi'");
|
||||
|
||||
String sql = alterColumn(h2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
sql = alterColumn(oraDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
sql = alterColumn(sqlServerDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
sql = alterColumn(db2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol set default 'hi';\n");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAlterColumnDropDefault() {
|
||||
|
||||
String sql = h2Ddl.alterColumnDefaultValue("mytab", "acol", "DROP DEFAULT");
|
||||
assertEquals("alter table mytab alter column acol drop default", sql);
|
||||
AlterColumn alter = new AlterColumn();
|
||||
alter.setTableName("mytab");
|
||||
alter.setColumnName("acol");
|
||||
alter.setCurrentType("varchar(20)");
|
||||
alter.setCurrentNotnull(Boolean.TRUE);
|
||||
alter.setCurrentDefaultValue("'hi'");
|
||||
alter.setDefaultValue("DROP DEFAULT");
|
||||
|
||||
sql = pgDdl.alterColumnDefaultValue("mytab", "acol", "DROP DEFAULT");
|
||||
assertEquals("alter table mytab alter column acol drop default", sql);
|
||||
String sql = alterColumn(h2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n");
|
||||
|
||||
sql = oraDdl.alterColumnDefaultValue("mytab", "acol", "DROP DEFAULT");
|
||||
assertEquals("alter table mytab modify acol default null", sql);
|
||||
sql = alterColumn(pgDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n");
|
||||
|
||||
sql = mysqlDdl.alterColumnDefaultValue("mytab", "acol", "DROP DEFAULT");
|
||||
assertEquals("alter table mytab alter acol drop default", sql);
|
||||
sql = alterColumn(oraDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab modify acol default null;\n");
|
||||
|
||||
sql = sqlServerDdl.alterColumnDefaultValue("mytab", "acol", "DROP DEFAULT");
|
||||
assertEquals("EXEC usp_ebean_drop_default_constraint mytab, acol", sql);
|
||||
sql = alterColumn(mysqlDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter acol drop default;\n");
|
||||
|
||||
sql = alterColumn(sqlServerDdl, alter);
|
||||
softly.assertThat(sql).isEqualTo("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");
|
||||
|
||||
sql = alterColumn(db2Ddl, alter);
|
||||
softly.assertThat(sql).isEqualTo("alter table mytab alter column acol drop default;\n");
|
||||
|
||||
boolean exceptionCaught = false;
|
||||
try {
|
||||
hanaDdl.alterColumnDefaultValue("mytab", "acol", "DROP DEFAULT");
|
||||
} catch (UnsupportedOperationException e) {
|
||||
exceptionCaught = true;
|
||||
}
|
||||
assertTrue(exceptionCaught);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void oracle_alterTableAddColumn() {
|
||||
DdlWrite writer = new DdlWrite();
|
||||
oraDdl.alterTableAddColumn(writer.apply(), "my_table", simpleColumn(), false, "1");
|
||||
assertThat(writer.apply().getBuffer()).isEqualTo("alter table my_table add my_column int default 1 not null;\n");
|
||||
oraDdl.alterTableAddColumn(writer, "my_table", simpleColumn(), false, "1");
|
||||
softly.assertThat(writer.apply().getBuffer())
|
||||
.isEqualTo("alter table my_table add my_column int default 1 not null;\n");
|
||||
}
|
||||
|
||||
private Column simpleColumn() {
|
||||
@@ -267,79 +398,148 @@ public class PlatformDdl_AlterColumnTest {
|
||||
|
||||
@Test
|
||||
public void useIdentityType_h2() {
|
||||
assertEquals(h2Ddl.useIdentityType(null), IdType.IDENTITY);
|
||||
assertEquals(h2Ddl.useIdentityType(IdType.SEQUENCE), IdType.SEQUENCE);
|
||||
assertEquals(h2Ddl.useIdentityType(IdType.IDENTITY), IdType.IDENTITY);
|
||||
assertEquals(h2Ddl.useIdentityType(IdType.GENERATOR), IdType.GENERATOR);
|
||||
assertEquals(h2Ddl.useIdentityType(IdType.EXTERNAL), IdType.EXTERNAL);
|
||||
softly.assertThat(h2Ddl.useIdentityType(null)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(h2Ddl.useIdentityType(IdType.SEQUENCE)).isEqualTo(IdType.SEQUENCE);
|
||||
softly.assertThat(h2Ddl.useIdentityType(IdType.IDENTITY)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(h2Ddl.useIdentityType(IdType.GENERATOR)).isEqualTo(IdType.GENERATOR);
|
||||
softly.assertThat(h2Ddl.useIdentityType(IdType.EXTERNAL)).isEqualTo(IdType.EXTERNAL);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void useIdentityType_postgres() {
|
||||
assertEquals(pgDdl.useIdentityType(IdType.GENERATOR), IdType.GENERATOR);
|
||||
assertEquals(pgDdl.useIdentityType(IdType.EXTERNAL), IdType.EXTERNAL);
|
||||
softly.assertThat(pgDdl.useIdentityType(IdType.GENERATOR)).isEqualTo(IdType.GENERATOR);
|
||||
softly.assertThat(pgDdl.useIdentityType(IdType.EXTERNAL)).isEqualTo(IdType.EXTERNAL);
|
||||
|
||||
assertEquals(pgDdl.useIdentityType(null), IdType.IDENTITY);
|
||||
assertEquals(pgDdl.useIdentityType(IdType.SEQUENCE), IdType.SEQUENCE);
|
||||
assertEquals(pgDdl.useIdentityType(IdType.IDENTITY), IdType.IDENTITY);
|
||||
softly.assertThat(pgDdl.useIdentityType(null)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(pgDdl.useIdentityType(IdType.SEQUENCE)).isEqualTo(IdType.SEQUENCE);
|
||||
softly.assertThat(pgDdl.useIdentityType(IdType.IDENTITY)).isEqualTo(IdType.IDENTITY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void useIdentityType_mysql() {
|
||||
|
||||
assertEquals(mysqlDdl.useIdentityType(null), IdType.IDENTITY);
|
||||
assertEquals(mysqlDdl.useIdentityType(IdType.SEQUENCE), IdType.IDENTITY);
|
||||
assertEquals(mysqlDdl.useIdentityType(IdType.IDENTITY), IdType.IDENTITY);
|
||||
assertEquals(mysqlDdl.useIdentityType(IdType.GENERATOR), IdType.GENERATOR);
|
||||
assertEquals(mysqlDdl.useIdentityType(IdType.EXTERNAL), IdType.EXTERNAL);
|
||||
softly.assertThat(mysqlDdl.useIdentityType(null)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(mysqlDdl.useIdentityType(IdType.SEQUENCE)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(mysqlDdl.useIdentityType(IdType.IDENTITY)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(mysqlDdl.useIdentityType(IdType.GENERATOR)).isEqualTo(IdType.GENERATOR);
|
||||
softly.assertThat(mysqlDdl.useIdentityType(IdType.EXTERNAL)).isEqualTo(IdType.EXTERNAL);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void useIdentityType_oracle() {
|
||||
|
||||
assertEquals(oraDdl.useIdentityType(null), IdType.IDENTITY);
|
||||
assertEquals(oraDdl.useIdentityType(IdType.SEQUENCE), IdType.SEQUENCE);
|
||||
assertEquals(oraDdl.useIdentityType(IdType.IDENTITY), IdType.IDENTITY);
|
||||
assertEquals(oraDdl.useIdentityType(IdType.GENERATOR), IdType.GENERATOR);
|
||||
assertEquals(oraDdl.useIdentityType(IdType.EXTERNAL), IdType.EXTERNAL);
|
||||
softly.assertThat(oraDdl.useIdentityType(null)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(oraDdl.useIdentityType(IdType.SEQUENCE)).isEqualTo(IdType.SEQUENCE);
|
||||
softly.assertThat(oraDdl.useIdentityType(IdType.IDENTITY)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(oraDdl.useIdentityType(IdType.GENERATOR)).isEqualTo(IdType.GENERATOR);
|
||||
softly.assertThat(oraDdl.useIdentityType(IdType.EXTERNAL)).isEqualTo(IdType.EXTERNAL);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void useIdentityType_hana() {
|
||||
|
||||
assertEquals(hanaDdl.useIdentityType(null), IdType.IDENTITY);
|
||||
assertEquals(hanaDdl.useIdentityType(IdType.SEQUENCE), IdType.IDENTITY);
|
||||
assertEquals(hanaDdl.useIdentityType(IdType.IDENTITY), IdType.IDENTITY);
|
||||
assertEquals(hanaDdl.useIdentityType(IdType.GENERATOR), IdType.GENERATOR);
|
||||
assertEquals(hanaDdl.useIdentityType(IdType.EXTERNAL), IdType.EXTERNAL);
|
||||
softly.assertThat(hanaDdl.useIdentityType(null)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(hanaDdl.useIdentityType(IdType.SEQUENCE)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(hanaDdl.useIdentityType(IdType.IDENTITY)).isEqualTo(IdType.IDENTITY);
|
||||
softly.assertThat(hanaDdl.useIdentityType(IdType.GENERATOR)).isEqualTo(IdType.GENERATOR);
|
||||
softly.assertThat(hanaDdl.useIdentityType(IdType.EXTERNAL)).isEqualTo(IdType.EXTERNAL);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void appendForeignKeySuffix_when_defaults() {
|
||||
assertThat(alterFkey(null, null)).isEqualTo(" on delete restrict on update restrict");
|
||||
softly.assertThat(alterFkey(h2Ddl, null, null)).isEqualTo(" on delete restrict on update restrict");
|
||||
softly.assertThat(alterFkey(pgDdl, null, null)).isEqualTo(" on delete restrict on update restrict");
|
||||
softly.assertThat(alterFkey(mysqlDdl, null, null)).isEqualTo(" on delete restrict on update restrict");
|
||||
softly.assertThat(alterFkey(oraDdl, null, null)).isEqualTo("");
|
||||
softly.assertThat(alterFkey(sqlServerDdl, null, null)).isEqualTo("");
|
||||
softly.assertThat(alterFkey(hanaDdl, null, null)).isEqualTo(" on delete restrict on update restrict");
|
||||
softly.assertThat(alterFkey(db2Ddl, null, null)).isEqualTo(" on delete restrict");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void appendForeignKeySuffix_when_RestrictSetNull() {
|
||||
assertThat(alterFkey("RESTRICT", "SET_NULL")).isEqualTo(" on delete restrict on update set null");
|
||||
softly.assertThat(alterFkey(h2Ddl, "RESTRICT", "SET_NULL"))
|
||||
.isEqualTo(" on delete restrict on update set null");
|
||||
|
||||
softly.assertThat(alterFkey(pgDdl, "RESTRICT", "SET_NULL"))
|
||||
.isEqualTo(" on delete restrict on update set null");
|
||||
|
||||
softly.assertThat(alterFkey(mysqlDdl, "RESTRICT", "SET_NULL"))
|
||||
.isEqualTo(" on delete restrict on update set null");
|
||||
|
||||
softly.assertThat(alterFkey(oraDdl, "RESTRICT", "SET_NULL"))
|
||||
.isEqualTo("");
|
||||
|
||||
softly.assertThat(alterFkey(sqlServerDdl, "RESTRICT", "SET_NULL"))
|
||||
.isEqualTo(" on update set null");
|
||||
|
||||
softly.assertThat(alterFkey(hanaDdl, "RESTRICT", "SET_NULL"))
|
||||
.isEqualTo(" on delete restrict on update set null");
|
||||
|
||||
softly.assertThat(alterFkey(db2Ddl, "RESTRICT", "SET_NULL"))
|
||||
.isEqualTo(" on delete restrict");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void appendForeignKeySuffix_when_SetNullRestrict() {
|
||||
assertThat(alterFkey("SET_NULL", "RESTRICT")).isEqualTo(" on delete set null on update restrict");
|
||||
softly.assertThat(alterFkey(h2Ddl, "SET_NULL", "RESTRICT"))
|
||||
.isEqualTo(" on delete set null on update restrict");
|
||||
|
||||
softly.assertThat(alterFkey(pgDdl, "SET_NULL", "RESTRICT"))
|
||||
.isEqualTo(" on delete set null on update restrict");
|
||||
|
||||
softly.assertThat(alterFkey(mysqlDdl, "SET_NULL", "RESTRICT"))
|
||||
.isEqualTo(" on delete set null on update restrict");
|
||||
|
||||
softly.assertThat(alterFkey(oraDdl, "SET_NULL", "RESTRICT"))
|
||||
.isEqualTo(" on delete set null");
|
||||
|
||||
softly.assertThat(alterFkey(sqlServerDdl, "SET_NULL", "RESTRICT"))
|
||||
.isEqualTo(" on delete set null");
|
||||
|
||||
softly.assertThat(alterFkey(hanaDdl, "SET_NULL", "RESTRICT"))
|
||||
.isEqualTo(" on delete set null on update restrict");
|
||||
|
||||
softly.assertThat(alterFkey(db2Ddl, "SET_NULL", "RESTRICT"))
|
||||
.isEqualTo(" on delete set null");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void appendForeignKeySuffix_when_SetDefaultCascade() {
|
||||
assertThat(alterFkey("SET_DEFAULT", "CASCADE")).isEqualTo(" on delete set default on update cascade");
|
||||
softly.assertThat(alterFkey(h2Ddl, "SET_DEFAULT", "CASCADE"))
|
||||
.isEqualTo(" on delete set default on update cascade");
|
||||
|
||||
softly.assertThat(alterFkey(pgDdl, "SET_DEFAULT", "CASCADE"))
|
||||
.isEqualTo(" on delete set default on update cascade");
|
||||
|
||||
softly.assertThat(alterFkey(mysqlDdl, "SET_DEFAULT", "CASCADE"))
|
||||
.isEqualTo(" on delete set default on update cascade");
|
||||
|
||||
softly.assertThat(alterFkey(oraDdl, "SET_DEFAULT", "CASCADE"))
|
||||
.isEqualTo("");
|
||||
|
||||
softly.assertThat(alterFkey(sqlServerDdl, "SET_DEFAULT", "CASCADE"))
|
||||
.isEqualTo(" on delete set default on update cascade");
|
||||
|
||||
softly.assertThat(alterFkey(hanaDdl, "SET_DEFAULT", "CASCADE"))
|
||||
.isEqualTo(" on delete set default on update cascade");
|
||||
|
||||
softly.assertThat(alterFkey(db2Ddl, "SET_DEFAULT", "CASCADE"))
|
||||
.isEqualTo(" on delete set default");
|
||||
}
|
||||
|
||||
private String alterFkey(String onDelete, String onUpdate) {
|
||||
private String alterColumn(PlatformDdl ddl, AlterColumn alterColumn) {
|
||||
DdlWrite write = new DdlWrite();
|
||||
ddl.alterColumn(write, alterColumn);
|
||||
return write.apply().getBuffer();
|
||||
}
|
||||
|
||||
private String alterFkey(PlatformDdl ddl, String onDelete, String onUpdate) {
|
||||
AlterForeignKey afk = new AlterForeignKey();
|
||||
afk.setOnDelete(onDelete);
|
||||
afk.setOnUpdate(onUpdate);
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
h2Ddl.appendForeignKeySuffix(new WriteForeignKey(afk), buffer);
|
||||
ddl.appendForeignKeySuffix(new WriteForeignKey(afk), buffer);
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ public class PlatformDdl_dropUniqueConstraintTest {
|
||||
sql = sqlServerDdl.alterTableDropUniqueConstraint("mytab", "uq_name");
|
||||
assertEquals(
|
||||
"IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('mytab','U') AND name = 'uq_name') drop index uq_name ON mytab;\n"
|
||||
+ "IF (OBJECT_ID('uq_name', 'UQ') IS NOT NULL) alter table mytab drop constraint uq_name",
|
||||
+ "IF OBJECT_ID('uq_name', 'UQ') IS NOT NULL alter table mytab drop constraint uq_name",
|
||||
sql);
|
||||
|
||||
sql = mysqlDdl.alterTableDropUniqueConstraint("mytab", "uq_name");
|
||||
|
||||
@@ -36,9 +36,7 @@ alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
|
||||
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 restrict on update restrict;
|
||||
|
||||
update migtest_e_basic set status = 'A' where status is null;
|
||||
alter table migtest_e_basic alter status set default 'A';
|
||||
alter table migtest_e_basic modify status varchar(1) not null;
|
||||
alter table migtest_e_basic alter status2 drop default;
|
||||
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;
|
||||
@@ -67,8 +65,7 @@ alter table migtest_e_history comment = 'We have history now';
|
||||
-- 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 alter test_string set default 'unknown';
|
||||
alter table migtest_e_history2 modify test_string varchar(255) not null;
|
||||
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);
|
||||
@@ -79,8 +76,7 @@ alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not
|
||||
|
||||
-- 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 alter test_number1 set default 42;
|
||||
alter table migtest_e_history6 modify test_number1 integer 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;
|
||||
|
||||
|
||||
@@ -14,18 +14,15 @@ alter table migtest_fk_none drop foreign key fk_migtest_fk_none_one_id;
|
||||
alter table migtest_fk_none_via_join drop foreign key fk_migtest_fk_none_via_join_one_id;
|
||||
alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
|
||||
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;
|
||||
alter table migtest_e_basic alter status drop default;
|
||||
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 alter status2 set default 'N';
|
||||
alter table migtest_e_basic modify status2 varchar(1) not null;
|
||||
alter table migtest_e_basic modify status2 varchar(1) not null default 'N';
|
||||
alter table migtest_e_basic drop index uq_migtest_e_basic_description;
|
||||
|
||||
update migtest_e_basic set user_id = 23 where user_id is null;
|
||||
alter table migtest_e_basic drop foreign key fk_migtest_e_basic_user_id;
|
||||
alter table migtest_e_basic alter user_id set default 23;
|
||||
alter table migtest_e_basic modify user_id integer not null;
|
||||
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);
|
||||
@@ -38,19 +35,16 @@ alter table migtest_e_basic drop index uq_migtest_e_basic_indextest5;
|
||||
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_e_history2 alter test_string drop default;
|
||||
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 alter test_number1 drop default;
|
||||
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 alter test_number2 set default 7;
|
||||
alter table migtest_e_history6 modify test_number2 integer not null;
|
||||
alter table migtest_e_history6 modify test_number2 integer not null default 7;
|
||||
create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
|
||||
create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
|
||||
drop index ix_migtest_e_basic_indextest3 on migtest_e_basic;
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
-616900688, 1.0__initial.sql
|
||||
128637084, 1.1.sql
|
||||
-786596816, 1.1.sql
|
||||
-2077736415, 1.2__dropsFor_1.1.sql
|
||||
-1744111309, 1.3.sql
|
||||
1262945599, 1.3.sql
|
||||
89701608, 1.4__dropsFor_1.3.sql
|
||||
561281075, R__order_views.sql
|
||||
|
||||
|
||||
@@ -36,9 +36,7 @@ alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
|
||||
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 restrict on update restrict;
|
||||
|
||||
update migtest_e_basic set status = 'A' where status is null;
|
||||
alter table migtest_e_basic alter status set default 'A';
|
||||
alter table migtest_e_basic modify status varchar(1) not null;
|
||||
alter table migtest_e_basic alter status2 drop default;
|
||||
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;
|
||||
@@ -67,8 +65,7 @@ alter table migtest_e_history comment = 'We have history now';
|
||||
-- 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 alter test_string set default 'unknown';
|
||||
alter table migtest_e_history2 modify test_string varchar(255) not null;
|
||||
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);
|
||||
@@ -79,8 +76,7 @@ alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not
|
||||
|
||||
-- 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 alter test_number1 set default 42;
|
||||
alter table migtest_e_history6 modify test_number1 integer 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;
|
||||
|
||||
|
||||
@@ -14,18 +14,15 @@ alter table migtest_fk_none drop foreign key fk_migtest_fk_none_one_id;
|
||||
alter table migtest_fk_none_via_join drop foreign key fk_migtest_fk_none_via_join_one_id;
|
||||
alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
|
||||
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;
|
||||
alter table migtest_e_basic alter status drop default;
|
||||
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 alter status2 set default 'N';
|
||||
alter table migtest_e_basic modify status2 varchar(1) not null;
|
||||
alter table migtest_e_basic modify status2 varchar(1) not null default 'N';
|
||||
alter table migtest_e_basic drop index uq_migtest_e_basic_description;
|
||||
|
||||
update migtest_e_basic set user_id = 23 where user_id is null;
|
||||
alter table migtest_e_basic drop foreign key fk_migtest_e_basic_user_id;
|
||||
alter table migtest_e_basic alter user_id set default 23;
|
||||
alter table migtest_e_basic modify user_id integer not null;
|
||||
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);
|
||||
@@ -38,19 +35,16 @@ alter table migtest_e_basic drop index uq_migtest_e_basic_indextest5;
|
||||
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_e_history2 alter test_string drop default;
|
||||
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 alter test_number1 drop default;
|
||||
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 alter test_number2 set default 7;
|
||||
alter table migtest_e_history6 modify test_number2 integer not null;
|
||||
alter table migtest_e_history6 modify test_number2 integer not null default 7;
|
||||
create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
|
||||
create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
|
||||
drop index ix_migtest_e_basic_indextest3 on migtest_e_basic;
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
1835064798, I__create_procs.sql
|
||||
-616900688, 1.0__initial.sql
|
||||
128637084, 1.1.sql
|
||||
-786596816, 1.1.sql
|
||||
-2098746494, 1.2__dropsFor_1.1.sql
|
||||
-1744111309, 1.3.sql
|
||||
1262945599, 1.3.sql
|
||||
930722740, 1.4__dropsFor_1.3.sql
|
||||
561281075, R__order_views.sql
|
||||
|
||||
|
||||
@@ -42,9 +42,7 @@ alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
|
||||
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 restrict on update restrict;
|
||||
|
||||
update migtest_e_basic set status = 'A' where status is null;
|
||||
alter table migtest_e_basic alter status set default 'A';
|
||||
alter table migtest_e_basic modify status varchar(1) not null;
|
||||
alter table migtest_e_basic alter status2 drop default;
|
||||
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;
|
||||
@@ -72,8 +70,7 @@ alter table migtest_e_history comment = 'We have history now';
|
||||
|
||||
-- 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 alter test_string set default 'unknown';
|
||||
alter table migtest_e_history2 modify test_string varchar(255) not null;
|
||||
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);
|
||||
@@ -89,8 +86,7 @@ alter table migtest_e_history5_history add column test_boolean tinyint(1) defaul
|
||||
|
||||
-- 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 alter test_number1 set default 42;
|
||||
alter table migtest_e_history6 modify test_number1 integer 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;
|
||||
|
||||
|
||||
@@ -19,18 +19,15 @@ alter table migtest_fk_none drop foreign key fk_migtest_fk_none_one_id;
|
||||
alter table migtest_fk_none_via_join drop foreign key fk_migtest_fk_none_via_join_one_id;
|
||||
alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
|
||||
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;
|
||||
alter table migtest_e_basic alter status drop default;
|
||||
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 alter status2 set default 'N';
|
||||
alter table migtest_e_basic modify status2 varchar(1) not null;
|
||||
alter table migtest_e_basic modify status2 varchar(1) not null default 'N';
|
||||
alter table migtest_e_basic drop index uq_migtest_e_basic_description;
|
||||
|
||||
update migtest_e_basic set user_id = 23 where user_id is null;
|
||||
alter table migtest_e_basic drop foreign key fk_migtest_e_basic_user_id;
|
||||
alter table migtest_e_basic alter user_id set default 23;
|
||||
alter table migtest_e_basic modify user_id integer not null;
|
||||
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);
|
||||
@@ -43,7 +40,6 @@ alter table migtest_e_basic drop index uq_migtest_e_basic_indextest5;
|
||||
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_e_history2 alter test_string drop default;
|
||||
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);
|
||||
@@ -52,13 +48,11 @@ 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 alter test_number1 drop default;
|
||||
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 alter test_number2 set default 7;
|
||||
alter table migtest_e_history6 modify test_number2 integer not null;
|
||||
alter table migtest_e_history6 modify test_number2 integer not null default 7;
|
||||
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);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
1835064798, I__create_procs.sql
|
||||
890673066, 1.0__initial.sql
|
||||
-1627573867, 1.1.sql
|
||||
67386209, 1.1.sql
|
||||
1986189381, 1.2__dropsFor_1.1.sql
|
||||
798979911, 1.3.sql
|
||||
2054074037, 1.3.sql
|
||||
-1373040825, 1.4__dropsFor_1.3.sql
|
||||
561281075, R__order_views.sql
|
||||
|
||||
|
||||
@@ -42,9 +42,7 @@ alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
|
||||
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 restrict on update restrict;
|
||||
|
||||
update migtest_e_basic set status = 'A' where status is null;
|
||||
alter table migtest_e_basic alter status set default 'A';
|
||||
alter table migtest_e_basic modify status varchar(1) not null;
|
||||
alter table migtest_e_basic alter status2 drop default;
|
||||
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;
|
||||
@@ -72,8 +70,7 @@ alter table migtest_e_history comment = 'We have history now';
|
||||
|
||||
-- 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 alter test_string set default 'unknown';
|
||||
alter table migtest_e_history2 modify test_string varchar(255) not null;
|
||||
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);
|
||||
@@ -89,8 +86,7 @@ alter table migtest_e_history5_history add column test_boolean tinyint(1) defaul
|
||||
|
||||
-- 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 alter test_number1 set default 42;
|
||||
alter table migtest_e_history6 modify test_number1 integer 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;
|
||||
|
||||
|
||||
@@ -19,18 +19,15 @@ alter table migtest_fk_none drop foreign key fk_migtest_fk_none_one_id;
|
||||
alter table migtest_fk_none_via_join drop foreign key fk_migtest_fk_none_via_join_one_id;
|
||||
alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
|
||||
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;
|
||||
alter table migtest_e_basic alter status drop default;
|
||||
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 alter status2 set default 'N';
|
||||
alter table migtest_e_basic modify status2 varchar(1) not null;
|
||||
alter table migtest_e_basic modify status2 varchar(1) not null default 'N';
|
||||
alter table migtest_e_basic drop index uq_migtest_e_basic_description;
|
||||
|
||||
update migtest_e_basic set user_id = 23 where user_id is null;
|
||||
alter table migtest_e_basic drop foreign key fk_migtest_e_basic_user_id;
|
||||
alter table migtest_e_basic alter user_id set default 23;
|
||||
alter table migtest_e_basic modify user_id integer not null;
|
||||
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);
|
||||
@@ -43,7 +40,6 @@ alter table migtest_e_basic drop index uq_migtest_e_basic_indextest5;
|
||||
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_e_history2 alter test_string drop default;
|
||||
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);
|
||||
@@ -52,13 +48,11 @@ 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 alter test_number1 drop default;
|
||||
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 alter test_number2 set default 7;
|
||||
alter table migtest_e_history6 modify test_number2 integer not null;
|
||||
alter table migtest_e_history6 modify test_number2 integer not null default 7;
|
||||
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);
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
1835064798, I__create_procs.sql
|
||||
881444156, 1.0__initial.sql
|
||||
-1627573867, 1.1.sql
|
||||
67386209, 1.1.sql
|
||||
1986189381, 1.2__dropsFor_1.1.sql
|
||||
798979911, 1.3.sql
|
||||
2054074037, 1.3.sql
|
||||
-1373040825, 1.4__dropsFor_1.3.sql
|
||||
561281075, R__order_views.sql
|
||||
|
||||
|
||||
@@ -36,11 +36,12 @@ IF OBJECT_ID('fk_migtest_fk_set_null_one_id', 'F') IS NOT NULL alter table migte
|
||||
alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id);
|
||||
|
||||
update migtest_e_basic set status = 'A' where status is null;
|
||||
IF (OBJECT_ID('ck_migtest_e_basic_status', 'C') IS NOT NULL) alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
|
||||
alter table migtest_e_basic add default 'A' for status;
|
||||
IF OBJECT_ID('ck_migtest_e_basic_status', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
|
||||
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;
|
||||
alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
|
||||
IF (OBJECT_ID('ck_migtest_e_basic_status2', 'C') IS NOT NULL) alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
|
||||
IF OBJECT_ID('ck_migtest_e_basic_status2', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
|
||||
EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2;
|
||||
alter table migtest_e_basic alter column status2 varchar(127);
|
||||
|
||||
@@ -60,20 +61,21 @@ alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( p
|
||||
alter table migtest_e_basic add new_integer integer default 42 not null;
|
||||
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_indextest2') drop index uq_migtest_e_basic_indextest2 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_indextest2', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_indextest2', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_indextest6') drop index uq_migtest_e_basic_indextest6 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_indextest6', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_indextest6', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
|
||||
create unique nonclustered index uq_migtest_e_basic_status_indextest1 on migtest_e_basic(status,indextest1) where indextest1 is not null;
|
||||
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;
|
||||
IF (OBJECT_ID('ck_migtest_e_enum_test_status', 'C') IS NOT NULL) alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
|
||||
IF OBJECT_ID('ck_migtest_e_enum_test_status', 'C') IS NOT NULL alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
|
||||
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;
|
||||
alter table migtest_e_history2 add default 'unknown' for test_string;
|
||||
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);
|
||||
@@ -84,8 +86,9 @@ alter table migtest_e_history5 add test_boolean bit default 0 not null;
|
||||
|
||||
-- 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 add default 42 for test_number1;
|
||||
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;
|
||||
|
||||
|
||||
@@ -14,39 +14,41 @@ IF OBJECT_ID('fk_migtest_fk_none_one_id', 'F') IS NOT NULL alter table migtest_f
|
||||
IF OBJECT_ID('fk_migtest_fk_none_via_join_one_id', 'F') IS NOT NULL alter table migtest_fk_none_via_join drop constraint fk_migtest_fk_none_via_join_one_id;
|
||||
IF OBJECT_ID('fk_migtest_fk_set_null_one_id', 'F') IS NOT NULL alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id;
|
||||
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;
|
||||
IF (OBJECT_ID('ck_migtest_e_basic_status', 'C') IS NOT NULL) alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
|
||||
IF OBJECT_ID('ck_migtest_e_basic_status', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
|
||||
EXEC usp_ebean_drop_default_constraint migtest_e_basic, status;
|
||||
alter table migtest_e_basic alter column status varchar(1);
|
||||
alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
|
||||
|
||||
update migtest_e_basic set status2 = 'N' where status2 is null;
|
||||
IF (OBJECT_ID('ck_migtest_e_basic_status2', 'C') IS NOT NULL) alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
|
||||
alter table migtest_e_basic add default 'N' for status2;
|
||||
IF OBJECT_ID('ck_migtest_e_basic_status2', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
|
||||
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;
|
||||
alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_description') drop index uq_migtest_e_basic_description ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_description', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_description', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
|
||||
|
||||
update migtest_e_basic set user_id = 23 where user_id is null;
|
||||
IF OBJECT_ID('fk_migtest_e_basic_user_id', 'F') IS NOT NULL alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id;
|
||||
alter table migtest_e_basic add default 23 for user_id;
|
||||
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;
|
||||
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_status_indextest1') drop index uq_migtest_e_basic_status_indextest1 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_status_indextest1', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_status_indextest1', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_name') drop index uq_migtest_e_basic_name ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_name', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_name', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_indextest4') drop index uq_migtest_e_basic_indextest4 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_indextest4', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_indextest4', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_indextest5') drop index uq_migtest_e_basic_indextest5 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_indextest5', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_indextest5', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
|
||||
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;
|
||||
IF (OBJECT_ID('ck_migtest_e_enum_test_status', 'C') IS NOT NULL) alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
|
||||
IF OBJECT_ID('ck_migtest_e_enum_test_status', 'C') IS NOT NULL alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
|
||||
alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
|
||||
EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string;
|
||||
alter table migtest_e_history2 alter column test_string varchar(255);
|
||||
@@ -59,8 +61,9 @@ 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;
|
||||
alter table migtest_e_history6 add default 7 for test_number2;
|
||||
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;
|
||||
create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
|
||||
create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest3') drop index ix_migtest_e_basic_indextest3 ON migtest_e_basic;
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
-2122378240, I__create_procs.sql
|
||||
1983037247, 1.0__initial.sql
|
||||
-1042228916, 1.1.sql
|
||||
1735900055, 1.1.sql
|
||||
1019731053, 1.2__dropsFor_1.1.sql
|
||||
-897790738, 1.3.sql
|
||||
239521374, 1.3.sql
|
||||
-1335541264, 1.4__dropsFor_1.3.sql
|
||||
1607822082, R__order_views_mssql.sql
|
||||
|
||||
|
||||
@@ -37,11 +37,12 @@ IF OBJECT_ID('fk_migtest_fk_set_null_one_id', 'F') IS NOT NULL alter table migte
|
||||
alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id);
|
||||
|
||||
update migtest_e_basic set status = 'A' where status is null;
|
||||
IF (OBJECT_ID('ck_migtest_e_basic_status', 'C') IS NOT NULL) alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
|
||||
alter table migtest_e_basic add default 'A' for status;
|
||||
IF OBJECT_ID('ck_migtest_e_basic_status', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
|
||||
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;
|
||||
alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
|
||||
IF (OBJECT_ID('ck_migtest_e_basic_status2', 'C') IS NOT NULL) alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
|
||||
IF OBJECT_ID('ck_migtest_e_basic_status2', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
|
||||
EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2;
|
||||
alter table migtest_e_basic alter column status2 nvarchar(127);
|
||||
|
||||
@@ -61,20 +62,21 @@ alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( p
|
||||
alter table migtest_e_basic add new_integer integer default 42 not null;
|
||||
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_indextest2') drop index uq_migtest_e_basic_indextest2 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_indextest2', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_indextest2', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_indextest6') drop index uq_migtest_e_basic_indextest6 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_indextest6', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_indextest6', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
|
||||
create unique nonclustered index uq_migtest_e_basic_status_indextest1 on migtest_e_basic(status,indextest1) where indextest1 is not null;
|
||||
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;
|
||||
IF (OBJECT_ID('ck_migtest_e_enum_test_status', 'C') IS NOT NULL) alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
|
||||
IF OBJECT_ID('ck_migtest_e_enum_test_status', 'C') IS NOT NULL alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
|
||||
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;
|
||||
alter table migtest_e_history2 add default 'unknown' for test_string;
|
||||
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);
|
||||
@@ -85,8 +87,9 @@ alter table migtest_e_history5 add test_boolean bit default 0 not null;
|
||||
|
||||
-- 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 add default 42 for test_number1;
|
||||
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;
|
||||
|
||||
|
||||
@@ -15,39 +15,41 @@ IF OBJECT_ID('fk_migtest_fk_none_one_id', 'F') IS NOT NULL alter table migtest_f
|
||||
IF OBJECT_ID('fk_migtest_fk_none_via_join_one_id', 'F') IS NOT NULL alter table migtest_fk_none_via_join drop constraint fk_migtest_fk_none_via_join_one_id;
|
||||
IF OBJECT_ID('fk_migtest_fk_set_null_one_id', 'F') IS NOT NULL alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id;
|
||||
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;
|
||||
IF (OBJECT_ID('ck_migtest_e_basic_status', 'C') IS NOT NULL) alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
|
||||
IF OBJECT_ID('ck_migtest_e_basic_status', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
|
||||
EXEC usp_ebean_drop_default_constraint migtest_e_basic, status;
|
||||
alter table migtest_e_basic alter column status nvarchar(1);
|
||||
alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
|
||||
|
||||
update migtest_e_basic set status2 = 'N' where status2 is null;
|
||||
IF (OBJECT_ID('ck_migtest_e_basic_status2', 'C') IS NOT NULL) alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
|
||||
alter table migtest_e_basic add default 'N' for status2;
|
||||
IF OBJECT_ID('ck_migtest_e_basic_status2', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
|
||||
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;
|
||||
alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_description') drop index uq_migtest_e_basic_description ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_description', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_description', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
|
||||
|
||||
update migtest_e_basic set user_id = 23 where user_id is null;
|
||||
IF OBJECT_ID('fk_migtest_e_basic_user_id', 'F') IS NOT NULL alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id;
|
||||
alter table migtest_e_basic add default 23 for user_id;
|
||||
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;
|
||||
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_status_indextest1') drop index uq_migtest_e_basic_status_indextest1 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_status_indextest1', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_status_indextest1', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_name') drop index uq_migtest_e_basic_name ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_name', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_name', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_indextest4') drop index uq_migtest_e_basic_indextest4 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_indextest4', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_indextest4', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'uq_migtest_e_basic_indextest5') drop index uq_migtest_e_basic_indextest5 ON migtest_e_basic;
|
||||
IF (OBJECT_ID('uq_migtest_e_basic_indextest5', 'UQ') IS NOT NULL) alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
|
||||
IF OBJECT_ID('uq_migtest_e_basic_indextest5', 'UQ') IS NOT NULL alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
|
||||
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;
|
||||
IF (OBJECT_ID('ck_migtest_e_enum_test_status', 'C') IS NOT NULL) alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
|
||||
IF OBJECT_ID('ck_migtest_e_enum_test_status', 'C') IS NOT NULL alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
|
||||
alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
|
||||
EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string;
|
||||
alter table migtest_e_history2 alter column test_string nvarchar(255);
|
||||
@@ -60,8 +62,9 @@ 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;
|
||||
alter table migtest_e_history6 add default 7 for test_number2;
|
||||
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;
|
||||
create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
|
||||
create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
|
||||
IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest3') drop index ix_migtest_e_basic_indextest3 ON migtest_e_basic;
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
-2122378240, I__create_procs.sql
|
||||
-813787447, 1.0__initial.sql
|
||||
-898063858, 1.1.sql
|
||||
-925841767, 1.1.sql
|
||||
1019731053, 1.2__dropsFor_1.1.sql
|
||||
-494373130, 1.3.sql
|
||||
-1858208, 1.3.sql
|
||||
-1335541264, 1.4__dropsFor_1.3.sql
|
||||
1607822082, R__order_views_mssql.sql
|
||||
|
||||
|
||||
Reference in New Issue
Block a user