diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java index f82021634..54d0ec5be 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java @@ -840,6 +840,7 @@ 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) throws IOException { diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaTableDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaTableDdl.java index 8740db1c4..c0ce7dcee 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaTableDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaTableDdl.java @@ -30,10 +30,7 @@ public class HanaTableDdl extends BaseTableDdl { @Override protected void alterColumnDefaultValue(DdlWrite writer, AlterColumn alter) throws IOException { - String ddl = platformDdl.alterColumnBaseAttributes(alter); - if (hasValue(ddl)) { - writer.apply().append(ddl).endOfStatement(); - } + // done in alterColumnBaseAttributes } @Override diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java index 46ed420eb..0c83e2706 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java @@ -112,7 +112,10 @@ public class MySqlDdl extends PlatformDdl { @Override public String alterColumnBaseAttributes(AlterColumn alter) { - if (DdlHelp.isDropDefault(alter.getDefaultValue())) { + 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(); diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java index 0e8885645..c431851c4 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java @@ -149,7 +149,10 @@ public class SqlServerDdl extends PlatformDdl { @Override public String alterColumnBaseAttributes(AlterColumn alter) { - if (DdlHelp.isDropDefault(alter.getDefaultValue())) { + 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(); diff --git a/src/test/java/misc/migration/v1_0/EBasic.java b/src/test/java/misc/migration/v1_0/EBasic.java index 8c90882ef..e1c16afd6 100644 --- a/src/test/java/misc/migration/v1_0/EBasic.java +++ b/src/test/java/misc/migration/v1_0/EBasic.java @@ -1,5 +1,6 @@ package misc.migration.v1_0; +import io.ebean.annotation.DbDefault; import io.ebean.annotation.EnumValue; import io.ebean.annotation.Index; import io.ebean.annotation.NotNull; @@ -32,6 +33,10 @@ public class EBasic { Status status; + @DbDefault("N") + @NotNull + Status status2; + @Size(max=127) String name; @@ -39,11 +44,11 @@ public class EBasic { String description; Timestamp someDate; - + boolean old_boolean; Boolean old_boolean2; - + @ManyToOne ERef eref; diff --git a/src/test/java/misc/migration/v1_1/EBasic.java b/src/test/java/misc/migration/v1_1/EBasic.java index b46d426ad..9e5b1742d 100644 --- a/src/test/java/misc/migration/v1_1/EBasic.java +++ b/src/test/java/misc/migration/v1_1/EBasic.java @@ -52,6 +52,9 @@ public class EBasic { @DbDefault("A") Status status; + @Size(max=127) + String status2; + @Index(unique = true) @Size(max=127) String name; diff --git a/src/test/java/misc/migration/v1_2/EBasic.java b/src/test/java/misc/migration/v1_2/EBasic.java index 5753cb767..eb2a16d9e 100644 --- a/src/test/java/misc/migration/v1_2/EBasic.java +++ b/src/test/java/misc/migration/v1_2/EBasic.java @@ -33,6 +33,10 @@ public class EBasic { Status status; + @DbDefault("N") + @NotNull + Status status2; + @Size(max=127) String name; @@ -40,15 +44,15 @@ public class EBasic { String description; Timestamp someDate; - + boolean old_boolean; Boolean old_boolean2; - + @ManyToOne ERef eref; - - + + // test add & remove indices @Index @Size(max=127) @@ -75,7 +79,7 @@ public class EBasic { @NotNull @DbDefault("23") int user_id; - + public EBasic() { } diff --git a/src/test/resources/dbmigration/migrationtest/db2/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/db2/1.0__initial.sql index 239b28462..095b581de 100644 --- a/src/test/resources/dbmigration/migrationtest/db2/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/db2/1.0__initial.sql @@ -57,6 +57,7 @@ create table migtest_fk_set_null ( create table migtest_e_basic ( id integer generated by default as identity not null, status varchar(1), + status2 varchar(1) default 'N' not null, name varchar(127), description varchar(127), some_date timestamp, @@ -71,6 +72,7 @@ create table migtest_e_basic ( indextest6 varchar(127), user_id integer not null, constraint ck_mgtst__bsc_stts check ( status in ('N','A','I')), + constraint ck_mgtst__b_z543fg check ( status2 in ('N','A','I')), constraint pk_migtest_e_basic primary key (id) ); -- NOT SUPPORTED alter table migtest_e_basic add constraint uq_mgtst__b_4aybzy unique (indextest2); diff --git a/src/test/resources/dbmigration/migrationtest/db2/1.1.sql b/src/test/resources/dbmigration/migrationtest/db2/1.1.sql index d36f007a2..605a24af3 100644 --- a/src/test/resources/dbmigration/migrationtest/db2/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/db2/1.1.sql @@ -35,6 +35,10 @@ alter table migtest_e_basic drop constraint ck_mgtst__bsc_stts; alter table migtest_e_basic alter column status set default 'A'; alter table migtest_e_basic alter column status set not null; alter table migtest_e_basic add constraint ck_mgtst__bsc_stts check ( status in ('N','A','I','?')); +alter table migtest_e_basic drop constraint ck_mgtst__b_z543fg; +alter table migtest_e_basic alter column status2 varchar(127); +alter table migtest_e_basic alter column status2 drop default; +alter table migtest_e_basic alter column status2 set null; -- rename all collisions; -- NOT SUPPORTED alter table migtest_e_basic add constraint uq_mgtst__b_vs45xo unique (description); diff --git a/src/test/resources/dbmigration/migrationtest/db2/1.3.sql b/src/test/resources/dbmigration/migrationtest/db2/1.3.sql index 8bd92631d..9489c8d98 100644 --- a/src/test/resources/dbmigration/migrationtest/db2/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/db2/1.3.sql @@ -18,6 +18,13 @@ alter table migtest_e_basic drop constraint ck_mgtst__bsc_stts; alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic add constraint ck_mgtst__bsc_stts check ( status in ('N','A','I')); + +update migtest_e_basic set status2 = 'N' where status2 is null; +alter table migtest_e_basic drop constraint ck_mgtst__b_z543fg; +alter table migtest_e_basic alter column status2 varchar(1); +alter table migtest_e_basic alter column status2 set default 'N'; +alter table migtest_e_basic alter column status2 set not null; +alter table migtest_e_basic add constraint ck_mgtst__b_z543fg check ( status2 in ('N','A','I')); alter table migtest_e_basic drop constraint uq_mgtst__b_vs45xo; update migtest_e_basic set user_id = 23 where user_id is null; diff --git a/src/test/resources/dbmigration/migrationtest/h2/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/h2/1.0__initial.sql index f90dcc0a0..46b82191e 100644 --- a/src/test/resources/dbmigration/migrationtest/h2/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/h2/1.0__initial.sql @@ -57,6 +57,7 @@ create table migtest_fk_set_null ( create table migtest_e_basic ( id integer auto_increment not null, status varchar(1), + status2 varchar(1) default 'N' not null, name varchar(127), description varchar(127), some_date timestamp, @@ -71,6 +72,7 @@ create table migtest_e_basic ( indextest6 varchar(127), user_id integer not null, constraint ck_migtest_e_basic_status check ( status in ('N','A','I')), + constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')), constraint uq_migtest_e_basic_indextest2 unique (indextest2), constraint uq_migtest_e_basic_indextest6 unique (indextest6), constraint pk_migtest_e_basic primary key (id) diff --git a/src/test/resources/dbmigration/migrationtest/h2/1.1.sql b/src/test/resources/dbmigration/migrationtest/h2/1.1.sql index 2732f5d8e..877c54f92 100644 --- a/src/test/resources/dbmigration/migrationtest/h2/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/h2/1.1.sql @@ -41,6 +41,10 @@ alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; alter table migtest_e_basic alter column status set default 'A'; alter table migtest_e_basic alter column status set not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 varchar(127); +alter table migtest_e_basic alter column status2 drop default; +alter table migtest_e_basic alter column status2 set null; -- rename all collisions; alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); diff --git a/src/test/resources/dbmigration/migrationtest/h2/1.3.sql b/src/test/resources/dbmigration/migrationtest/h2/1.3.sql index 2d5e03935..050bb2146 100644 --- a/src/test/resources/dbmigration/migrationtest/h2/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/h2/1.3.sql @@ -23,6 +23,13 @@ alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); + +update migtest_e_basic set status2 = 'N' where status2 is null; +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 varchar(1); +alter table migtest_e_basic alter column status2 set default 'N'; +alter table migtest_e_basic alter column status2 set not null; +alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); 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; diff --git a/src/test/resources/dbmigration/migrationtest/hana/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/hana/1.0__initial.sql index cb6d8e6d4..17e451bad 100644 --- a/src/test/resources/dbmigration/migrationtest/hana/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/hana/1.0__initial.sql @@ -57,6 +57,7 @@ create column table migtest_fk_set_null ( create column table migtest_e_basic ( id integer generated by default as identity not null, status nvarchar(1), + status2 nvarchar(1) default 'N' not null, name nvarchar(127), description nvarchar(127), some_date timestamp, @@ -71,6 +72,7 @@ create column table migtest_e_basic ( indextest6 nvarchar(127), user_id integer not null, constraint ck_migtest_e_basic_status check ( status in ('N','A','I')), + constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')), constraint uq_migtest_e_basic_indextest2 unique (indextest2), constraint uq_migtest_e_basic_indextest6 unique (indextest6), constraint pk_migtest_e_basic primary key (id) diff --git a/src/test/resources/dbmigration/migrationtest/hana/1.1.sql b/src/test/resources/dbmigration/migrationtest/hana/1.1.sql index efa06b208..7f92f6534 100644 --- a/src/test/resources/dbmigration/migrationtest/hana/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/hana/1.1.sql @@ -39,8 +39,15 @@ exec 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status'; end; $$; alter table migtest_e_basic alter ( status nvarchar(1) default 'A' not null); -alter table migtest_e_basic alter ( status nvarchar(1) default 'A' not null); alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); +delimiter $$ +do +begin +declare exit handler for sql_error_code 397 begin end; +exec 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2'; +end; +$$; +alter table migtest_e_basic alter ( status2 nvarchar(127) default null); -- rename all collisions; -- cannot create unique index "uq_migtest_e_basic_description" on table "migtest_e_basic" with nullable columns; @@ -90,7 +97,6 @@ alter table migtest_e_history2 drop system versioning /* 0 */; -- 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 nvarchar(255) default 'unknown' not null); -alter table migtest_e_history2 alter ( test_string nvarchar(255) default 'unknown' not null); alter table migtest_e_history2_history alter ( test_string nvarchar(255) default 'unknown' not null); alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated /* 1 */; alter table migtest_e_history2 drop system versioning /* 2 */; @@ -118,7 +124,6 @@ alter table migtest_e_history6 drop system versioning /* 10 */; -- 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 integer default 42 not null); -alter table migtest_e_history6 alter ( test_number1 integer default 42 not null); alter table migtest_e_history6_history alter ( test_number1 integer default 42 not null); alter table migtest_e_history6 add system versioning history table migtest_e_history6_history not validated /* 11 */; alter table migtest_e_history6 drop system versioning /* 12 */; diff --git a/src/test/resources/dbmigration/migrationtest/hana/1.3.sql b/src/test/resources/dbmigration/migrationtest/hana/1.3.sql index 11221535d..8c8aa59fc 100644 --- a/src/test/resources/dbmigration/migrationtest/hana/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/hana/1.3.sql @@ -22,8 +22,19 @@ exec 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status'; end; $$; alter table migtest_e_basic alter ( status nvarchar(1) default null); -alter table migtest_e_basic alter ( status nvarchar(1) default null); 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; +delimiter $$ +do +begin +declare exit handler for sql_error_code 397 begin end; +exec 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2'; +end; +$$; +alter table migtest_e_basic alter ( status2 nclob default 'N' not null); +alter table migtest_e_basic alter ( status2 nvarchar(1) default 'N' not null); +alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); delimiter $$ do begin @@ -35,7 +46,6 @@ $$; update migtest_e_basic set user_id = 23 where user_id is null; alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id; alter table migtest_e_basic alter ( user_id integer default 23 not null); -alter table migtest_e_basic alter ( user_id integer default 23 not null); alter table migtest_e_basic add ( old_boolean boolean default false not null); alter table migtest_e_basic add ( old_boolean2 boolean); alter table migtest_e_basic add ( eref_id integer); @@ -82,7 +92,6 @@ comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; alter table migtest_e_history2 drop system versioning /* 0 */; alter table migtest_e_history2 alter ( test_string nvarchar(255) default null); -alter table migtest_e_history2 alter ( test_string nvarchar(255) default null); alter table migtest_e_history2_history alter ( test_string nvarchar(255) default null); alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated /* 1 */; alter table migtest_e_history2 drop system versioning /* 2 */; @@ -102,7 +111,6 @@ alter table migtest_e_history4_history alter ( test_number integer); alter table migtest_e_history4 add system versioning history table migtest_e_history4_history not validated /* 7 */; alter table migtest_e_history6 drop system versioning /* 8 */; alter table migtest_e_history6 alter ( test_number1 integer default null); -alter table migtest_e_history6 alter ( test_number1 integer default null); alter table migtest_e_history6_history alter ( test_number1 integer default null); alter table migtest_e_history6 add system versioning history table migtest_e_history6_history not validated /* 9 */; alter table migtest_e_history6 drop system versioning /* 10 */; @@ -110,7 +118,6 @@ alter table migtest_e_history6 drop system versioning /* 10 */; -- 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 integer default 7 not null); -alter table migtest_e_history6 alter ( test_number2 integer default 7 not null); alter table migtest_e_history6_history alter ( test_number2 integer default 7 not null); alter table migtest_e_history6 add system versioning history table migtest_e_history6_history not validated /* 11 */; -- explicit index "ix_migtest_e_basic_indextest1" for single column "indextest1" of table "migtest_e_basic" is not necessary; diff --git a/src/test/resources/dbmigration/migrationtest/hsqldb/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/hsqldb/1.0__initial.sql index 1de75c5eb..b4d627c18 100644 --- a/src/test/resources/dbmigration/migrationtest/hsqldb/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/hsqldb/1.0__initial.sql @@ -57,6 +57,7 @@ create table migtest_fk_set_null ( create table migtest_e_basic ( id integer generated by default as identity (start with 1) not null, status varchar(1), + status2 varchar(1) default 'N' not null, name varchar(127), description varchar(127), some_date timestamp, @@ -71,6 +72,7 @@ create table migtest_e_basic ( indextest6 varchar(127), user_id integer not null, constraint ck_migtest_e_basic_status check ( status in ('N','A','I')), + constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')), constraint uq_migtest_e_basic_indextest2 unique (indextest2), constraint uq_migtest_e_basic_indextest6 unique (indextest6), constraint pk_migtest_e_basic primary key (id) diff --git a/src/test/resources/dbmigration/migrationtest/hsqldb/1.1.sql b/src/test/resources/dbmigration/migrationtest/hsqldb/1.1.sql index 102421264..cebb8b994 100644 --- a/src/test/resources/dbmigration/migrationtest/hsqldb/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/hsqldb/1.1.sql @@ -35,6 +35,10 @@ alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; alter table migtest_e_basic alter column status set default 'A'; alter table migtest_e_basic alter column status set not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 varchar(127); +alter table migtest_e_basic alter column status2 drop default; +alter table migtest_e_basic alter column status2 set null; -- rename all collisions; alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); diff --git a/src/test/resources/dbmigration/migrationtest/hsqldb/1.3.sql b/src/test/resources/dbmigration/migrationtest/hsqldb/1.3.sql index 1414c3818..ed3b50536 100644 --- a/src/test/resources/dbmigration/migrationtest/hsqldb/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/hsqldb/1.3.sql @@ -18,6 +18,13 @@ alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); + +update migtest_e_basic set status2 = 'N' where status2 is null; +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 varchar(1); +alter table migtest_e_basic alter column status2 set default 'N'; +alter table migtest_e_basic alter column status2 set not null; +alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); 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; diff --git a/src/test/resources/dbmigration/migrationtest/model/1.0__initial.model.xml b/src/test/resources/dbmigration/migrationtest/model/1.0__initial.model.xml index fa3defb9a..ce4f03b4b 100644 --- a/src/test/resources/dbmigration/migrationtest/model/1.0__initial.model.xml +++ b/src/test/resources/dbmigration/migrationtest/model/1.0__initial.model.xml @@ -40,6 +40,7 @@ + diff --git a/src/test/resources/dbmigration/migrationtest/model/1.1.model.xml b/src/test/resources/dbmigration/migrationtest/model/1.1.model.xml index 5a2e4d63d..d304daa7d 100644 --- a/src/test/resources/dbmigration/migrationtest/model/1.1.model.xml +++ b/src/test/resources/dbmigration/migrationtest/model/1.1.model.xml @@ -14,6 +14,7 @@ + -- rename all collisions diff --git a/src/test/resources/dbmigration/migrationtest/model/1.3.model.xml b/src/test/resources/dbmigration/migrationtest/model/1.3.model.xml index d32d725be..91d0e6449 100644 --- a/src/test/resources/dbmigration/migrationtest/model/1.3.model.xml +++ b/src/test/resources/dbmigration/migrationtest/model/1.3.model.xml @@ -7,6 +7,7 @@ + diff --git a/src/test/resources/dbmigration/migrationtest/mysql/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/mysql/1.0__initial.sql index e5e98049b..0267c1545 100644 --- a/src/test/resources/dbmigration/migrationtest/mysql/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/mysql/1.0__initial.sql @@ -57,6 +57,7 @@ create table migtest_fk_set_null ( create table migtest_e_basic ( id integer auto_increment not null, status varchar(1), + status2 varchar(1) default 'N' not null, name varchar(127), description varchar(127), some_date datetime(6), diff --git a/src/test/resources/dbmigration/migrationtest/mysql/1.1.sql b/src/test/resources/dbmigration/migrationtest/mysql/1.1.sql index ecc42a6ef..e3e5bf26a 100644 --- a/src/test/resources/dbmigration/migrationtest/mysql/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/mysql/1.1.sql @@ -39,6 +39,8 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for 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 status2 varchar(127); -- rename all collisions; alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); diff --git a/src/test/resources/dbmigration/migrationtest/mysql/1.3.sql b/src/test/resources/dbmigration/migrationtest/mysql/1.3.sql index da05d955b..057cec8bd 100644 --- a/src/test/resources/dbmigration/migrationtest/mysql/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/mysql/1.3.sql @@ -20,6 +20,11 @@ alter table migtest_fk_none_via_join drop foreign key fk_migtest_fk_none_via_joi 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 set null; 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 drop index uq_migtest_e_basic_description; update migtest_e_basic set user_id = 23 where user_id is null; @@ -38,6 +43,7 @@ alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique 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_history2_history add column obsolete_string1 varchar(255); @@ -46,6 +52,7 @@ 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; diff --git a/src/test/resources/dbmigration/migrationtest/oracle/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/oracle/1.0__initial.sql index c2f988553..8c9b8aefb 100644 --- a/src/test/resources/dbmigration/migrationtest/oracle/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/oracle/1.0__initial.sql @@ -65,6 +65,7 @@ create sequence migtest_fk_set_null_seq; create table migtest_e_basic ( id number(10) not null, status varchar2(1), + status2 varchar2(1) default 'N' not null, name varchar2(127), description varchar2(127), some_date timestamp, @@ -79,6 +80,7 @@ create table migtest_e_basic ( indextest6 varchar2(127), user_id number(10) not null, constraint ck_migtest_e_basic_status check ( status in ('N','A','I')), + constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')), constraint uq_migtest_e_basic_indextest2 unique (indextest2), constraint uq_migtest_e_basic_indextest6 unique (indextest6), constraint pk_migtest_e_basic primary key (id) diff --git a/src/test/resources/dbmigration/migrationtest/oracle/1.1.sql b/src/test/resources/dbmigration/migrationtest/oracle/1.1.sql index 9015ce54c..68ab55e92 100644 --- a/src/test/resources/dbmigration/migrationtest/oracle/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/oracle/1.1.sql @@ -36,6 +36,10 @@ alter table migtest_e_basic drop constraint ck_migtest_e_basic_status; alter table migtest_e_basic modify status default 'A'; alter table migtest_e_basic modify status not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); +alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2; +alter table migtest_e_basic modify status2 varchar2(127); +alter table migtest_e_basic modify status2 drop default; +alter table migtest_e_basic modify status2 null; -- rename all collisions; -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); diff --git a/src/test/resources/dbmigration/migrationtest/oracle/1.3.sql b/src/test/resources/dbmigration/migrationtest/oracle/1.3.sql index aa3ea6fc3..8bc419e76 100644 --- a/src/test/resources/dbmigration/migrationtest/oracle/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/oracle/1.3.sql @@ -19,6 +19,13 @@ alter table migtest_e_basic drop constraint ck_migtest_e_basic_status; alter table migtest_e_basic modify status drop default; alter table migtest_e_basic modify status null; 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; +alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2; +alter table migtest_e_basic modify status2 varchar2(1); +alter table migtest_e_basic modify status2 default 'N'; +alter table migtest_e_basic modify status2 not null; +alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); 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; diff --git a/src/test/resources/dbmigration/migrationtest/postgres/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/postgres/1.0__initial.sql index ea3b65d03..2f06401e3 100644 --- a/src/test/resources/dbmigration/migrationtest/postgres/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/postgres/1.0__initial.sql @@ -57,6 +57,7 @@ create table migtest_fk_set_null ( create table migtest_e_basic ( id serial not null, status varchar(1), + status2 varchar(1) default 'N' not null, name varchar(127), description varchar(127), some_date timestamptz, @@ -71,6 +72,7 @@ create table migtest_e_basic ( indextest6 varchar(127), user_id integer not null, constraint ck_migtest_e_basic_status check ( status in ('N','A','I')), + constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')), constraint uq_migtest_e_basic_indextest2 unique (indextest2), constraint uq_migtest_e_basic_indextest6 unique (indextest6), constraint pk_migtest_e_basic primary key (id) diff --git a/src/test/resources/dbmigration/migrationtest/postgres/1.1.sql b/src/test/resources/dbmigration/migrationtest/postgres/1.1.sql index 15a950efd..6b3f14652 100644 --- a/src/test/resources/dbmigration/migrationtest/postgres/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/postgres/1.1.sql @@ -41,6 +41,10 @@ alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; alter table migtest_e_basic alter column status set default 'A'; alter table migtest_e_basic alter column status set not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 type varchar(127); +alter table migtest_e_basic alter column status2 drop default; +alter table migtest_e_basic alter column status2 drop not null; -- rename all collisions; alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); diff --git a/src/test/resources/dbmigration/migrationtest/postgres/1.3.sql b/src/test/resources/dbmigration/migrationtest/postgres/1.3.sql index 4fd4074c8..95904bfd3 100644 --- a/src/test/resources/dbmigration/migrationtest/postgres/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/postgres/1.3.sql @@ -23,6 +23,13 @@ alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status drop not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); + +update migtest_e_basic set status2 = 'N' where status2 is null; +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 type varchar(1); +alter table migtest_e_basic alter column status2 set default 'N'; +alter table migtest_e_basic alter column status2 set not null; +alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); 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; diff --git a/src/test/resources/dbmigration/migrationtest/sqlite/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/sqlite/1.0__initial.sql index 4f25fb26b..565b49c14 100644 --- a/src/test/resources/dbmigration/migrationtest/sqlite/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/sqlite/1.0__initial.sql @@ -59,6 +59,7 @@ create table migtest_fk_set_null ( create table migtest_e_basic ( id integer not null, status varchar(1), + status2 varchar(1) default 'N' not null, name varchar(127), description varchar(127), some_date timestamp, @@ -73,6 +74,7 @@ create table migtest_e_basic ( indextest6 varchar(127), user_id integer not null, constraint ck_migtest_e_basic_status check ( status in ('N','A','I')), + constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')), constraint uq_migtest_e_basic_indextest2 unique (indextest2), constraint uq_migtest_e_basic_indextest6 unique (indextest6), constraint pk_migtest_e_basic primary key (id), diff --git a/src/test/resources/dbmigration/migrationtest/sqlite/1.1.sql b/src/test/resources/dbmigration/migrationtest/sqlite/1.1.sql index f158133bf..a762b673e 100644 --- a/src/test/resources/dbmigration/migrationtest/sqlite/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/sqlite/1.1.sql @@ -34,6 +34,10 @@ alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; alter table migtest_e_basic alter column status set default 'A'; alter table migtest_e_basic alter column status set not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 varchar(127); +alter table migtest_e_basic alter column status2 drop default; +alter table migtest_e_basic alter column status2 set null; -- rename all collisions; alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); diff --git a/src/test/resources/dbmigration/migrationtest/sqlite/1.3.sql b/src/test/resources/dbmigration/migrationtest/sqlite/1.3.sql index b4e83b150..3812d6e38 100644 --- a/src/test/resources/dbmigration/migrationtest/sqlite/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/sqlite/1.3.sql @@ -16,6 +16,13 @@ alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; alter table migtest_e_basic alter column status drop default; alter table migtest_e_basic alter column status set null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); + +update migtest_e_basic set status2 = 'N' where status2 is null; +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 varchar(1); +alter table migtest_e_basic alter column status2 set default 'N'; +alter table migtest_e_basic alter column status2 set not null; +alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); 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; diff --git a/src/test/resources/dbmigration/migrationtest/sqlserver17/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/sqlserver17/1.0__initial.sql index 99a41e4a5..545c2161d 100644 --- a/src/test/resources/dbmigration/migrationtest/sqlserver17/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/sqlserver17/1.0__initial.sql @@ -65,6 +65,7 @@ create sequence migtest_fk_set_null_seq as bigint start with 1 ; create table migtest_e_basic ( id integer not null, status nvarchar(1), + status2 nvarchar(1) default 'N' not null, name nvarchar(127), description nvarchar(127), some_date datetime2, @@ -79,6 +80,7 @@ create table migtest_e_basic ( indextest6 nvarchar(127), user_id integer not null, constraint ck_migtest_e_basic_status check ( status in ('N','A','I')), + constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')), constraint pk_migtest_e_basic primary key (id) ); create unique nonclustered index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) where indextest2 is not null; diff --git a/src/test/resources/dbmigration/migrationtest/sqlserver17/1.1.sql b/src/test/resources/dbmigration/migrationtest/sqlserver17/1.1.sql index 804342b64..90dbc13af 100644 --- a/src/test/resources/dbmigration/migrationtest/sqlserver17/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/sqlserver17/1.1.sql @@ -36,6 +36,9 @@ IF (OBJECT_ID('ck_migtest_e_basic_status', 'C') IS NOT NULL) alter table migtest alter table migtest_e_basic add default 'A' for status; alter table migtest_e_basic alter column status nvarchar(1) not null; 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; +EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2; +alter table migtest_e_basic alter column status2 nvarchar(127); -- rename all collisions; create unique nonclustered index uq_migtest_e_basic_description on migtest_e_basic(description) where description is not null; diff --git a/src/test/resources/dbmigration/migrationtest/sqlserver17/1.3.sql b/src/test/resources/dbmigration/migrationtest/sqlserver17/1.3.sql index 57aa39278..5eefaa4e0 100644 --- a/src/test/resources/dbmigration/migrationtest/sqlserver17/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/sqlserver17/1.3.sql @@ -17,7 +17,14 @@ 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) on delete set null on update 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; 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; +alter table migtest_e_basic alter column status2 nvarchar(1) not null; +alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); 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 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; @@ -42,11 +49,13 @@ create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basi 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); alter table migtest_e_history2 add obsolete_string1 nvarchar(255); alter table migtest_e_history2 add obsolete_string2 nvarchar(255); alter table migtest_e_history4 alter column test_number integer; EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1; +alter table migtest_e_history6 alter column test_number1 integer; -- NOTE: table has @History - special migration may be necessary update migtest_e_history6 set test_number2 = 7 where test_number2 is null;