diff --git a/ebean-test/src/main/resources/migrationtest/dbinit/db2luw/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbinit/db2luw/1.0__initial.sql
new file mode 100644
index 000000000..f0fa20f0e
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/db2luw/1.0__initial.sql
@@ -0,0 +1,312 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer generated by default as identity not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamp,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+) in TESTTS index in TESTTS long in TESTTS;
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+) in TESTTS index in TESTTS long in TESTTS;
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+) in TSMASTER index in TSMASTER long in TSMASTER;
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+) in TSMASTER index in TSMASTER long in TSMASTER;
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+) in TSMASTER index in TSMASTER long in TSMASTER;
+
+create table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ master_id bigint,
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history2 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history2 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history2 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history2 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history3 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history3 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history3 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history3 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history4 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history4 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history4 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history4 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history5 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history5 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history5 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history5 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history6 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history6 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history6 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history6 add period system_time (sys_period_start,sys_period_end);
+-- apply post alter
+create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys;
+create unique index uq_migtest_e_basic_status_indextest1 on migtest_e_basic(status,indextest1) exclude null keys;
+create unique index uq_migtest_e_basic_name on migtest_e_basic(name) exclude null keys;
+create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) exclude null keys;
+create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys;
+create table migtest_e_history_history (
+ id integer not null,
+ test_string bigint,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history add versioning use history table migtest_e_history_history;
+create table migtest_e_history2_history (
+ id integer not null,
+ test_string varchar(255) not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) not null,
+ new_column varchar(20),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+create table migtest_e_history3_history (
+ id integer not null,
+ test_string varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+create table migtest_e_history4_history (
+ id integer not null,
+ test_number bigint,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+create table migtest_e_history5_history (
+ id integer not null,
+ test_number integer,
+ test_boolean boolean not null,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+create table migtest_e_history6_history (
+ id integer not null,
+ test_number1 integer not null,
+ test_number2 integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+create unique index uq_migtest_oto_child_master_id on migtest_oto_child(master_id) exclude null keys;
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbinit/h2/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbinit/h2/1.0__initial.sql
new file mode 100644
index 000000000..d792c3fa2
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/h2/1.0__initial.sql
@@ -0,0 +1,306 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer generated by default as identity not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamp,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period_start timestamp default now();
+alter table migtest_e_history add column sys_period_end timestamp;
+alter table migtest_e_history2 add column sys_period_start timestamp default now();
+alter table migtest_e_history2 add column sys_period_end timestamp;
+alter table migtest_e_history3 add column sys_period_start timestamp default now();
+alter table migtest_e_history3 add column sys_period_end timestamp;
+alter table migtest_e_history4 add column sys_period_start timestamp default now();
+alter table migtest_e_history4 add column sys_period_end timestamp;
+alter table migtest_e_history5 add column sys_period_start timestamp default now();
+alter table migtest_e_history5 add column sys_period_end timestamp;
+alter table migtest_e_history6 add column sys_period_start timestamp default now();
+alter table migtest_e_history6 add column sys_period_end timestamp;
+-- apply post alter
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+create trigger migtest_e_history_history_upd before update,delete on migtest_e_history for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history2_history(
+ id integer,
+ test_string varchar(255),
+ test_string2 varchar(255),
+ test_string3 varchar(255),
+ new_column varchar(20),
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number bigint,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ test_boolean boolean,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create trigger migtest_e_history5_history_upd before update,delete on migtest_e_history5 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create trigger migtest_e_history6_history_upd before update,delete on migtest_e_history6 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/hana/1.4.sql b/ebean-test/src/main/resources/migrationtest/dbinit/hana/1.0__initial.sql
similarity index 53%
rename from ebean-test/src/test/resources/migrationtest/dbinit/hana/1.4.sql
rename to ebean-test/src/main/resources/migrationtest/dbinit/hana/1.0__initial.sql
index 3cfdb2663..e61249fe0 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/hana/1.4.sql
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/hana/1.0__initial.sql
@@ -9,6 +9,8 @@ create column table migtest_ckey_assoc (
create column table migtest_ckey_detail (
id integer generated by default as identity not null,
something nvarchar(255),
+ one_key integer,
+ two_key nvarchar(127),
constraint pk_migtest_ckey_detail primary key (id)
);
@@ -16,6 +18,7 @@ create column table migtest_ckey_parent (
one_key integer not null,
two_key nvarchar(127) not null,
name nvarchar(255),
+ assoc_id integer,
version integer not null,
constraint pk_migtest_ckey_parent primary key (one_key,two_key)
);
@@ -56,33 +59,36 @@ 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,
+ status nvarchar(1) default 'A' not null,
+ status2 nvarchar(127),
name nvarchar(127),
description nvarchar(127),
- description_file blob,
some_date timestamp,
- old_boolean boolean default false not null,
- old_boolean2 boolean,
- eref_id integer,
+ new_string_field nvarchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
indextest1 nvarchar(127),
indextest2 nvarchar(127),
indextest3 nvarchar(127),
indextest4 nvarchar(127),
indextest5 nvarchar(127),
indextest6 nvarchar(127),
- user_id integer default 23 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),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
constraint pk_migtest_e_basic primary key (id)
);
create column table migtest_e_enum (
id integer generated by default as identity not null,
test_status nvarchar(1),
- constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
constraint pk_migtest_e_enum primary key (id)
);
@@ -91,12 +97,15 @@ create column table migtest_e_history (
test_string bigint,
constraint pk_migtest_e_history primary key (id)
);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
create column table migtest_e_history2 (
id integer generated by default as identity not null,
- test_string nvarchar(255),
- obsolete_string1 nvarchar(255),
- obsolete_string2 nvarchar(255),
+ test_string nvarchar(255) default 'unknown' not null,
+ test_string2 nvarchar(255),
+ test_string3 nvarchar(255) default 'unknown' not null,
+ new_column nvarchar(20),
constraint pk_migtest_e_history2 primary key (id)
);
@@ -108,51 +117,70 @@ create column table migtest_e_history3 (
create column table migtest_e_history4 (
id integer generated by default as identity not null,
- test_number integer,
+ test_number bigint,
constraint pk_migtest_e_history4 primary key (id)
);
create column table migtest_e_history5 (
id integer generated by default as identity not null,
test_number integer,
+ test_boolean boolean default false not null,
constraint pk_migtest_e_history5 primary key (id)
);
create column table migtest_e_history6 (
id integer generated by default as identity not null,
- test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
constraint pk_migtest_e_history6 primary key (id)
);
-create column table migtest_e_ref (
- id integer generated by default as identity not null,
- name nvarchar(127) not null,
- constraint uq_migtest_e_ref_name unique (name),
- constraint pk_migtest_e_ref primary key (id)
-);
-
create column table migtest_e_softdelete (
id integer generated by default as identity not null,
test_string nvarchar(255),
+ deleted boolean default false not null,
constraint pk_migtest_e_softdelete primary key (id)
);
+create column table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
create column table migtest_mtm_c (
id integer generated by default as identity not null,
name nvarchar(255),
constraint pk_migtest_mtm_c primary key (id)
);
+create column table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
create column table migtest_mtm_m (
id bigint generated by default as identity not null,
name nvarchar(255),
constraint pk_migtest_mtm_m primary key (id)
);
+create column table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create column table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value nvarchar(255) not null
+);
+
create column table migtest_oto_child (
id integer generated by default as identity not null,
name nvarchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
constraint pk_migtest_oto_child primary key (id)
);
@@ -162,22 +190,26 @@ create column table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
--- explicit index "ix_migtest_e_basic_indextest1" for single column "indextest1" of table "migtest_e_basic" is not necessary;
--- explicit index "ix_migtest_e_basic_indextest5" for single column "indextest5" of table "migtest_e_basic" is not necessary;
--- explicit index "ix_migtest_fk_cascade_one_id" for single column "one_id" of table "migtest_fk_cascade" is not necessary;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
--- explicit index "ix_migtest_fk_set_null_one_id" for single column "one_id" of table "migtest_fk_set_null" is not necessary;
-alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
-
--- explicit index "ix_migtest_e_basic_eref_id" for single column "eref_id" of table "migtest_e_basic" is not necessary;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
+-- apply post alter
+create column table migtest_e_history_history (
+ id integer,
+ test_string bigint,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+alter table migtest_e_history add (
+ sys_period_start TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW START,
+ sys_period_end TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW END
+);
+alter table migtest_e_history add period for system_time(sys_period_start,sys_period_end);
+alter table migtest_e_history add system versioning history table migtest_e_history_history;
create column table migtest_e_history2_history (
id integer,
- test_string nvarchar(255),
- obsolete_string1 nvarchar(255),
- obsolete_string2 nvarchar(255),
+ test_string nvarchar(255) default 'unknown' not null,
+ test_string2 nvarchar(255),
+ test_string3 nvarchar(255) default 'unknown' not null,
+ new_column nvarchar(20),
sys_period_start timestamp,
sys_period_end timestamp
);
@@ -201,7 +233,7 @@ alter table migtest_e_history3 add period for system_time(sys_period_start,sys_p
alter table migtest_e_history3 add system versioning history table migtest_e_history3_history;
create column table migtest_e_history4_history (
id integer,
- test_number integer,
+ test_number bigint,
sys_period_start timestamp,
sys_period_end timestamp
);
@@ -214,6 +246,7 @@ alter table migtest_e_history4 add system versioning history table migtest_e_his
create column table migtest_e_history5_history (
id integer,
test_number integer,
+ test_boolean boolean default false not null,
sys_period_start timestamp,
sys_period_end timestamp
);
@@ -225,8 +258,8 @@ alter table migtest_e_history5 add period for system_time(sys_period_start,sys_p
alter table migtest_e_history5 add system versioning history table migtest_e_history5_history;
create column table migtest_e_history6_history (
id integer,
- test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
sys_period_start timestamp,
sys_period_end timestamp
);
@@ -236,3 +269,44 @@ alter table migtest_e_history6 add (
);
alter table migtest_e_history6 add period for system_time(sys_period_start,sys_period_end);
alter table migtest_e_history6 add system versioning history table migtest_e_history6_history;
+-- foreign keys and indices
+create inverted hash index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_ckey_parent_assoc_id" for single column "assoc_id" of table "migtest_ckey_parent" is not necessary;
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_fk_cascade_one_id" for single column "one_id" of table "migtest_fk_cascade" is not necessary;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_fk_none_one_id" for single column "one_id" of table "migtest_fk_none" is not necessary;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_fk_none_via_join_one_id" for single column "one_id" of table "migtest_fk_none_via_join" is not necessary;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_fk_set_null_one_id" for single column "one_id" of table "migtest_fk_set_null" is not necessary;
+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;
+
+-- explicit index "ix_migtest_e_basic_user_id" for single column "user_id" of table "migtest_e_basic" is not necessary;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c" for single column "migtest_mtm_c_id" of table "migtest_mtm_c_migtest_mtm_m" is not necessary;
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m" for single column "migtest_mtm_m_id" of table "migtest_mtm_c_migtest_mtm_m" is not necessary;
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m" for single column "migtest_mtm_m_id" of table "migtest_mtm_m_migtest_mtm_c" is not necessary;
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c" for single column "migtest_mtm_c_id" of table "migtest_mtm_m_migtest_mtm_c" is not necessary;
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id" for single column "migtest_mtm_m_id" of table "migtest_mtm_m_phone_numbers" is not necessary;
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_e_basic_indextest3" for single column "indextest3" of table "migtest_e_basic" is not necessary;
+-- explicit index "ix_migtest_e_basic_indextest6" for single column "indextest6" of table "migtest_e_basic" is not necessary;
diff --git a/ebean-test/src/main/resources/migrationtest/dbinit/hsqldb/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbinit/hsqldb/1.0__initial.sql
new file mode 100644
index 000000000..aabebada9
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/hsqldb/1.0__initial.sql
@@ -0,0 +1,233 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity (start with 1) not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity (start with 1) not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity (start with 1) not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity (start with 1) not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity (start with 1) not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity (start with 1) not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity (start with 1) not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity (start with 1) not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer generated by default as identity (start with 1) not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamp,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity (start with 1) not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity (start with 1) not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id integer generated by default as identity (start with 1) not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity (start with 1) not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity (start with 1) not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity (start with 1) not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity (start with 1) not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity (start with 1) not null,
+ test_string varchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer generated by default as identity (start with 1) not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity (start with 1) not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity (start with 1) not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer generated by default as identity (start with 1) not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity (start with 1) not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbinit/mariadb/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbinit/mariadb/1.0__initial.sql
new file mode 100644
index 000000000..dd7cae250
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/mariadb/1.0__initial.sql
@@ -0,0 +1,236 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer auto_increment not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer auto_increment not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer auto_increment not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date datetime(6),
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field tinyint(1) default 1 not null,
+ new_boolean_field2 tinyint(1) default 1 not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer auto_increment not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer auto_increment not null,
+ test_string bigint comment 'Column altered to long now',
+ constraint pk_migtest_e_history primary key (id)
+) comment='We have history now';
+
+create table migtest_e_history2 (
+ id integer auto_increment not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer auto_increment not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer auto_increment not null,
+ test_number integer,
+ test_boolean tinyint(1) default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer auto_increment not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ deleted tinyint(1) default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer auto_increment not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer auto_increment not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add system versioning;
+alter table migtest_e_history2 add system versioning;
+alter table migtest_e_history3 add system versioning;
+alter table migtest_e_history4 add system versioning;
+alter table migtest_e_history5 add system versioning;
+alter table migtest_e_history6 add system versioning;
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbinit/mysql/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbinit/mysql/1.0__initial.sql
new file mode 100644
index 000000000..4a3ad7249
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/mysql/1.0__initial.sql
@@ -0,0 +1,362 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer auto_increment not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer auto_increment not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer auto_increment not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date datetime(6),
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field tinyint(1) default 1 not null,
+ new_boolean_field2 tinyint(1) default 1 not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer auto_increment not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer auto_increment not null,
+ test_string bigint comment 'Column altered to long now',
+ constraint pk_migtest_e_history primary key (id)
+) comment='We have history now';
+
+create table migtest_e_history2 (
+ id integer auto_increment not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer auto_increment not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer auto_increment not null,
+ test_number integer,
+ test_boolean tinyint(1) default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer auto_increment not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ deleted tinyint(1) default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer auto_increment not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer auto_increment not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history add column sys_period_end datetime(6);
+alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history2 add column sys_period_end datetime(6);
+alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history3 add column sys_period_end datetime(6);
+alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history4 add column sys_period_end datetime(6);
+alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history5 add column sys_period_end datetime(6);
+alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history6 add column sys_period_end datetime(6);
+-- apply post alter
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+lock tables migtest_e_history write;
+delimiter $$
+create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history_history_del before delete on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+end$$
+unlock tables;
+
+create table migtest_e_history2_history(
+ id integer,
+ test_string varchar(255),
+ test_string2 varchar(255),
+ test_string3 varchar(255),
+ new_column varchar(20),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
+delimiter $$
+create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+end$$
+unlock tables;
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+lock tables migtest_e_history3 write;
+delimiter $$
+create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+end$$
+unlock tables;
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
+delimiter $$
+create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+end$$
+unlock tables;
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ test_boolean tinyint(1),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
+delimiter $$
+create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+end$$
+unlock tables;
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
+delimiter $$
+create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+end$$
+unlock tables;
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/mysql55/1.4.sql b/ebean-test/src/main/resources/migrationtest/dbinit/mysql55/1.0__initial.sql
similarity index 56%
rename from ebean-test/src/test/resources/migrationtest/dbinit/mysql55/1.4.sql
rename to ebean-test/src/main/resources/migrationtest/dbinit/mysql55/1.0__initial.sql
index 4bdfb3810..3a1f8d7ae 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/mysql55/1.4.sql
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/mysql55/1.0__initial.sql
@@ -9,6 +9,8 @@ create table migtest_ckey_assoc (
create table migtest_ckey_detail (
id integer auto_increment not null,
something varchar(255),
+ one_key integer,
+ two_key varchar(127),
constraint pk_migtest_ckey_detail primary key (id)
);
@@ -16,6 +18,7 @@ create table migtest_ckey_parent (
one_key integer not null,
two_key varchar(127) not null,
name varchar(255),
+ assoc_id integer,
version integer not null,
constraint pk_migtest_ckey_parent primary key (one_key,two_key)
);
@@ -56,24 +59,28 @@ 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,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
name varchar(127),
description varchar(127),
- description_file longblob,
some_date datetime,
- old_boolean tinyint(1) default 0 not null,
- old_boolean2 tinyint(1),
- eref_id integer,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field tinyint(1) default 1 not null,
+ new_boolean_field2 tinyint(1) default 1 not null,
indextest1 varchar(127),
indextest2 varchar(127),
indextest3 varchar(127),
indextest4 varchar(127),
indextest5 varchar(127),
indextest6 varchar(127),
- user_id integer default 23 not null,
- constraint uq_migtest_e_basic_indextest2 unique (indextest2),
- constraint uq_migtest_e_basic_indextest6 unique (indextest6),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
constraint pk_migtest_e_basic primary key (id)
);
@@ -85,15 +92,16 @@ create table migtest_e_enum (
create table migtest_e_history (
id integer auto_increment not null,
- test_string bigint,
+ test_string bigint comment 'Column altered to long now',
constraint pk_migtest_e_history primary key (id)
-);
+) comment='We have history now';
create table migtest_e_history2 (
id integer auto_increment not null,
- test_string varchar(255),
- obsolete_string1 varchar(255),
- obsolete_string2 varchar(255),
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
constraint pk_migtest_e_history2 primary key (id)
);
@@ -105,89 +113,134 @@ create table migtest_e_history3 (
create table migtest_e_history4 (
id integer auto_increment not null,
- test_number integer,
+ test_number bigint,
constraint pk_migtest_e_history4 primary key (id)
);
create table migtest_e_history5 (
id integer auto_increment not null,
test_number integer,
+ test_boolean tinyint(1) default 0 not null,
constraint pk_migtest_e_history5 primary key (id)
);
create table migtest_e_history6 (
id integer auto_increment not null,
- test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
constraint pk_migtest_e_history6 primary key (id)
);
-create table migtest_e_ref (
- id integer auto_increment not null,
- name varchar(127) not null,
- constraint uq_migtest_e_ref_name unique (name),
- constraint pk_migtest_e_ref primary key (id)
-);
-
create table migtest_e_softdelete (
id integer auto_increment not null,
test_string varchar(255),
+ deleted tinyint(1) default 0 not null,
constraint pk_migtest_e_softdelete primary key (id)
);
+create table migtest_e_user (
+ id integer auto_increment not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
create table migtest_mtm_c (
id integer auto_increment not null,
name varchar(255),
constraint pk_migtest_mtm_c primary key (id)
);
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
create table migtest_mtm_m (
id bigint auto_increment not null,
name varchar(255),
constraint pk_migtest_mtm_m primary key (id)
);
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
create table migtest_oto_child (
id integer auto_increment not null,
name varchar(255),
- constraint uq_m12_otoc72 unique (name),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
constraint pk_migtest_oto_child primary key (id)
);
create table migtest_oto_master (
id bigint auto_increment not null,
name varchar(255),
- constraint uq_migtest_oto_master_name unique (name),
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_m12_otoc72 on migtest_oto_child (name);
-create index ix_migtest_oto_master_name on migtest_oto_master (name);
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
+alter table migtest_e_history add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history add column sys_period_end datetime(6);
alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6);
alter table migtest_e_history2 add column sys_period_end datetime(6);
+alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history3 add column sys_period_end datetime(6);
+alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history4 add column sys_period_end datetime(6);
+alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history5 add column sys_period_end datetime(6);
+alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history6 add column sys_period_end datetime(6);
+-- apply post alter
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+lock tables migtest_e_history write;
+delimiter $$
+create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history_history_del before delete on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+end$$
+unlock tables;
+
create table migtest_e_history2_history(
id integer,
test_string varchar(255),
- obsolete_string1 varchar(255),
- obsolete_string2 varchar(255),
+ test_string2 varchar(255),
+ test_string3 varchar(255),
+ new_column varchar(20),
sys_period_start datetime(6),
sys_period_end datetime(6)
);
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
+delimiter $$
+create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+end$$
+unlock tables;
-alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history3 add column sys_period_end datetime(6);
create table migtest_e_history3_history(
id integer,
test_string varchar(255),
@@ -195,56 +248,26 @@ create table migtest_e_history3_history(
sys_period_end datetime(6)
);
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history4 add column sys_period_end datetime(6);
-create table migtest_e_history4_history(
- id integer,
- test_number integer,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history5 add column sys_period_end datetime(6);
-create table migtest_e_history5_history(
- id integer,
- test_number integer,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history6 add column sys_period_end datetime(6);
-create table migtest_e_history6_history(
- id integer,
- test_number1 integer,
- test_number2 integer,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
-
-delimiter $$
-create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
- insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
- insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
-end$$
+lock tables migtest_e_history3 write;
delimiter $$
create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
- insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
set NEW.sys_period_start = now(6);
end$$
delimiter $$
create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
- insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
end$$
+unlock tables;
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
delimiter $$
create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
@@ -254,15 +277,37 @@ delimiter $$
create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
end$$
+unlock tables;
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ test_boolean tinyint(1),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
delimiter $$
create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
- insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
set NEW.sys_period_start = now(6);
end$$
delimiter $$
create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
- insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
end$$
+unlock tables;
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
delimiter $$
create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
@@ -272,3 +317,46 @@ delimiter $$
create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
end$$
+unlock tables;
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbinit/oracle/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbinit/oracle/1.0__initial.sql
new file mode 100644
index 000000000..5d8d0b76e
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/oracle/1.0__initial.sql
@@ -0,0 +1,233 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id number(10) generated by default as identity not null,
+ assoc_one varchar2(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id number(10) generated by default as identity not null,
+ something varchar2(255),
+ one_key number(10),
+ two_key varchar2(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key number(10) not null,
+ two_key varchar2(127) not null,
+ name varchar2(255),
+ assoc_id number(10),
+ version number(10) not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id number(19) generated by default as identity not null,
+ one_id number(19),
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id number(19) generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id number(19) generated by default as identity not null,
+ one_id number(19),
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id number(19) generated by default as identity not null,
+ one_id number(19),
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id number(19) generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id number(19) generated by default as identity not null,
+ one_id number(19),
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id number(10) generated by default as identity not null,
+ status varchar2(1) default 'A' not null,
+ status2 varchar2(127),
+ name varchar2(127),
+ description varchar2(127),
+ some_date timestamp,
+ new_string_field varchar2(255) default 'foo''bar' not null,
+ new_boolean_field number(1) default 1 not null,
+ new_boolean_field2 number(1) default 1 not null,
+ indextest1 varchar2(127),
+ indextest2 varchar2(127),
+ indextest3 varchar2(127),
+ indextest4 varchar2(127),
+ indextest5 varchar2(127),
+ indextest6 varchar2(127),
+ progress number(10) default 0 not null,
+ new_integer number(10) default 42 not null,
+ user_id number(10),
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id number(10) generated by default as identity not null,
+ test_status varchar2(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id number(10) generated by default as identity not null,
+ test_string number(19),
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id number(10) generated by default as identity not null,
+ test_string varchar2(255) default 'unknown' not null,
+ test_string2 varchar2(255),
+ test_string3 varchar2(255) default 'unknown' not null,
+ new_column varchar2(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id number(10) generated by default as identity not null,
+ test_string varchar2(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id number(10) generated by default as identity not null,
+ test_number number(19),
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id number(10) generated by default as identity not null,
+ test_number number(10),
+ test_boolean number(1) default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id number(10) generated by default as identity not null,
+ test_number1 number(10) default 42 not null,
+ test_number2 number(10),
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id number(10) generated by default as identity not null,
+ test_string varchar2(255),
+ deleted number(1) default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id number(10) generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id number(10) generated by default as identity not null,
+ name varchar2(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id number(10) not null,
+ migtest_mtm_m_id number(19) not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id number(19) generated by default as identity not null,
+ name varchar2(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id number(19) not null,
+ migtest_mtm_c_id number(10) not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id number(19) not null,
+ value varchar2(255) not null
+);
+
+create table migtest_oto_child (
+ id number(10) generated by default as identity not null,
+ name varchar2(255),
+ master_id number(19),
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id number(19) generated by default as identity not null,
+ name varchar2(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
+
+create index ix_mgtst_cky_prnt_ssc_d on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_mgtst_cky_prnt_ssc_d foreign key (assoc_id) references migtest_ckey_assoc (id);
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
+
+create index ix_mgtst_fk_nn_v_jn_n_d on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_mgtst_fk_nn_v_jn_n_d foreign key (one_id) references migtest_fk_one (id);
+
+create index ix_migtest_fk_set_null_one_id on 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);
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
+
+create index ix_mgtst_mtm_c_mgtst_mt_3ug4ok on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mtm_c_mgtst_mt_93awga foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_mgtst_mtm_c_mgtst_mt_3ug4ou on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mtm_c_mgtst_mt_93awgk foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_mgtst_mtm_m_mgtst_mt_b7nbcu on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_mgtst_mtm_m_mgtst_mt_ggi34k foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_mgtst_mtm_m_mgtst_mt_b7nbck on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_mgtst_mtm_m_mgtst_mt_ggi34a foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_mgtst_mtm_m_phn_nmbr_do9ma3 on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_mgtst_mtm_m_phn_nmbr_s8neid foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id);
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbinit/postgres/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbinit/postgres/1.0__initial.sql
new file mode 100644
index 000000000..b22dc2127
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/postgres/1.0__initial.sql
@@ -0,0 +1,392 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer generated by default as identity not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamptz,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+-- apply post alter
+create table migtest_e_history_history(like migtest_e_history);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+create or replace function migtest_e_history_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history_history_upd
+ before update or delete on migtest_e_history
+ for each row execute procedure migtest_e_history_history_version();
+
+
+create table migtest_e_history2_history(like migtest_e_history2);
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create or replace function migtest_e_history2_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+
+create table migtest_e_history3_history(like migtest_e_history3);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create or replace function migtest_e_history3_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history3_history_upd
+ before update or delete on migtest_e_history3
+ for each row execute procedure migtest_e_history3_history_version();
+
+
+create table migtest_e_history4_history(like migtest_e_history4);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create or replace function migtest_e_history4_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history4_history_upd
+ before update or delete on migtest_e_history4
+ for each row execute procedure migtest_e_history4_history_version();
+
+
+create table migtest_e_history5_history(like migtest_e_history5);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create or replace function migtest_e_history5_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history5_history_upd
+ before update or delete on migtest_e_history5
+ for each row execute procedure migtest_e_history5_history_version();
+
+
+create table migtest_e_history6_history(like migtest_e_history6);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create or replace function migtest_e_history6_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history6_history_upd
+ before update or delete on migtest_e_history6
+ for each row execute procedure migtest_e_history6_history_version();
+
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
+create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name);
diff --git a/ebean-test/src/main/resources/migrationtest/dbinit/sqlite/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbinit/sqlite/1.0__initial.sql
new file mode 100644
index 000000000..6ff6d8ceb
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/sqlite/1.0__initial.sql
@@ -0,0 +1,206 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id),
+ foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key),
+ foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict
+);
+
+create table migtest_fk_cascade (
+ id integer not null,
+ one_id integer,
+ constraint pk_migtest_fk_cascade primary key (id),
+ foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict
+);
+
+create table migtest_fk_cascade_one (
+ id integer not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id integer not null,
+ one_id integer,
+ constraint pk_migtest_fk_none primary key (id),
+ foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict
+);
+
+create table migtest_fk_none_via_join (
+ id integer not null,
+ one_id integer,
+ constraint pk_migtest_fk_none_via_join primary key (id),
+ foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict
+);
+
+create table migtest_fk_one (
+ id integer not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id integer not null,
+ one_id integer,
+ constraint pk_migtest_fk_set_null primary key (id),
+ foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict
+);
+
+create table migtest_e_basic (
+ id integer not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamp,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field int default 1 not null,
+ new_boolean_field2 int default 1 not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id),
+ foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict
+);
+
+create table migtest_e_enum (
+ id integer not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer not null,
+ test_string integer,
+ constraint pk_migtest_e_history primary key (id)
+);
+
+create table migtest_e_history2 (
+ id integer not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer not null,
+ test_number integer,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer not null,
+ test_number integer,
+ test_boolean int default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer not null,
+ test_string varchar(255),
+ deleted int default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id integer not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id),
+ foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict,
+ foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict
+);
+
+create table migtest_mtm_m (
+ id integer not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id integer not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id),
+ foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict,
+ foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id integer not null,
+ value varchar(255) not null,
+ foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict
+);
+
+create table migtest_oto_child (
+ id integer not null,
+ name varchar(255),
+ master_id integer,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id),
+ foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict
+);
+
+create table migtest_oto_master (
+ id integer not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- foreign keys and indices
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbinit/sqlserver17/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbinit/sqlserver17/1.0__initial.sql
new file mode 100644
index 000000000..d4934452b
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/sqlserver17/1.0__initial.sql
@@ -0,0 +1,284 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer not null,
+ assoc_one nvarchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+create sequence migtest_ckey_assoc_seq as bigint start with 1;
+
+create table migtest_ckey_detail (
+ id integer not null,
+ something nvarchar(255),
+ one_key integer,
+ two_key nvarchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+create sequence migtest_ckey_detail_seq as bigint start with 1;
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key nvarchar(127) not null,
+ name nvarchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id numeric(19) not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+create sequence migtest_fk_cascade_seq as bigint start with 1;
+
+create table migtest_fk_cascade_one (
+ id numeric(19) not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+create sequence migtest_fk_cascade_one_seq as bigint start with 1;
+
+create table migtest_fk_none (
+ id numeric(19) not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_none primary key (id)
+);
+create sequence migtest_fk_none_seq as bigint start with 1;
+
+create table migtest_fk_none_via_join (
+ id numeric(19) not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+create sequence migtest_fk_none_via_join_seq as bigint start with 1;
+
+create table migtest_fk_one (
+ id numeric(19) not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+create sequence migtest_fk_one_seq as bigint start with 1;
+
+create table migtest_fk_set_null (
+ id numeric(19) not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+create sequence migtest_fk_set_null_seq as bigint start with 1;
+
+create table migtest_e_basic (
+ id integer not null,
+ status nvarchar(1) default 'A' not null,
+ status2 nvarchar(127),
+ name nvarchar(127),
+ description nvarchar(127),
+ some_date datetime2,
+ new_string_field nvarchar(255) default 'foo''bar' not null,
+ new_boolean_field bit default 1 not null,
+ new_boolean_field2 bit default 1 not null,
+ indextest1 nvarchar(127),
+ indextest2 nvarchar(127),
+ indextest3 nvarchar(127),
+ indextest4 nvarchar(127),
+ indextest5 nvarchar(127),
+ indextest6 nvarchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint pk_migtest_e_basic primary key (id)
+);
+create sequence migtest_e_basic_seq as bigint start with 1;
+
+create table migtest_e_enum (
+ id integer not null,
+ test_status nvarchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+create sequence migtest_e_enum_seq as bigint start with 1;
+
+create table migtest_e_history (
+ id integer not null,
+ test_string numeric(19),
+ constraint pk_migtest_e_history primary key (id)
+);
+create sequence migtest_e_history_seq as bigint start with 1;
+
+create table migtest_e_history2 (
+ id integer not null,
+ test_string nvarchar(255) default 'unknown' not null,
+ test_string2 nvarchar(255),
+ test_string3 nvarchar(255) default 'unknown' not null,
+ new_column nvarchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+create sequence migtest_e_history2_seq as bigint start with 1;
+
+create table migtest_e_history3 (
+ id integer not null,
+ test_string nvarchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+create sequence migtest_e_history3_seq as bigint start with 1;
+
+create table migtest_e_history4 (
+ id integer not null,
+ test_number numeric(19),
+ constraint pk_migtest_e_history4 primary key (id)
+);
+create sequence migtest_e_history4_seq as bigint start with 1;
+
+create table migtest_e_history5 (
+ id integer not null,
+ test_number integer,
+ test_boolean bit default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+create sequence migtest_e_history5_seq as bigint start with 1;
+
+create table migtest_e_history6 (
+ id integer not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+create sequence migtest_e_history6_seq as bigint start with 1;
+
+create table migtest_e_softdelete (
+ id integer not null,
+ test_string nvarchar(255),
+ deleted bit default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+create sequence migtest_e_softdelete_seq as bigint start with 1;
+
+create table migtest_e_user (
+ id integer not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+create sequence migtest_e_user_seq as bigint start with 1;
+
+create table migtest_mtm_c (
+ id integer not null,
+ name nvarchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+create sequence migtest_mtm_c_seq as bigint start with 1;
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id numeric(19) not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id numeric(19) not null,
+ name nvarchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+create sequence migtest_mtm_m_seq as bigint start with 1;
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id numeric(19) not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id numeric(19) not null,
+ value nvarchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer not null,
+ name nvarchar(255),
+ master_id numeric(19),
+ constraint pk_migtest_oto_child primary key (id)
+);
+create sequence migtest_oto_child_seq as bigint start with 1;
+
+create table migtest_oto_master (
+ id numeric(19) not null,
+ name nvarchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+create sequence migtest_oto_master_seq as bigint start with 1;
+
+-- apply post alter
+create unique nonclustered index uq_migtest_e_basic_description on migtest_e_basic(description) where description is not null;
+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;
+alter table migtest_e_history
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history set (system_versioning = on (history_table=dbo.migtest_e_history_history));
+alter table migtest_e_history2
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+alter table migtest_e_history3
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history));
+alter table migtest_e_history4
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history4 set (system_versioning = on (history_table=dbo.migtest_e_history4_history));
+alter table migtest_e_history5
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history5 set (system_versioning = on (history_table=dbo.migtest_e_history5_history));
+alter table migtest_e_history6
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history6 set (system_versioning = on (history_table=dbo.migtest_e_history6_history));
+create unique nonclustered index uq_migtest_oto_child_master_id on migtest_oto_child(master_id) where master_id is not null;
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id);
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id);
+
+create index ix_migtest_fk_set_null_one_id on 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);
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id);
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/yugabyte/1.4.sql b/ebean-test/src/main/resources/migrationtest/dbinit/yugabyte/1.0__initial.sql
similarity index 59%
rename from ebean-test/src/test/resources/migrationtest/dbinit/yugabyte/1.4.sql
rename to ebean-test/src/main/resources/migrationtest/dbinit/yugabyte/1.0__initial.sql
index dd419cee4..bef57d682 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/yugabyte/1.4.sql
+++ b/ebean-test/src/main/resources/migrationtest/dbinit/yugabyte/1.0__initial.sql
@@ -9,6 +9,8 @@ create table migtest_ckey_assoc (
create table migtest_ckey_detail (
id integer generated by default as identity not null,
something varchar(255),
+ one_key integer,
+ two_key varchar(127),
constraint pk_migtest_ckey_detail primary key (id)
);
@@ -16,6 +18,7 @@ create table migtest_ckey_parent (
one_key integer not null,
two_key varchar(127) not null,
name varchar(255),
+ assoc_id integer,
version integer not null,
constraint pk_migtest_ckey_parent primary key (one_key,two_key)
);
@@ -56,33 +59,36 @@ 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,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
name varchar(127),
description varchar(127),
- description_file bytea,
some_date timestamptz,
- old_boolean boolean default false not null,
- old_boolean2 boolean,
- eref_id integer,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
indextest1 varchar(127),
indextest2 varchar(127),
indextest3 varchar(127),
indextest4 varchar(127),
indextest5 varchar(127),
indextest6 varchar(127),
- user_id integer default 23 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),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
constraint pk_migtest_e_basic primary key (id)
);
create table migtest_e_enum (
id integer generated by default as identity not null,
test_status varchar(1),
- constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
constraint pk_migtest_e_enum primary key (id)
);
@@ -91,12 +97,15 @@ create table migtest_e_history (
test_string bigint,
constraint pk_migtest_e_history primary key (id)
);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
create table migtest_e_history2 (
id integer generated by default as identity not null,
- test_string varchar(255),
- obsolete_string1 varchar(255),
- obsolete_string2 varchar(255),
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
constraint pk_migtest_e_history2 primary key (id)
);
@@ -108,51 +117,70 @@ create table migtest_e_history3 (
create table migtest_e_history4 (
id integer generated by default as identity not null,
- test_number integer,
+ test_number bigint,
constraint pk_migtest_e_history4 primary key (id)
);
create table migtest_e_history5 (
id integer generated by default as identity not null,
test_number integer,
+ test_boolean boolean default false not null,
constraint pk_migtest_e_history5 primary key (id)
);
create table migtest_e_history6 (
id integer generated by default as identity not null,
- test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
constraint pk_migtest_e_history6 primary key (id)
);
-create table migtest_e_ref (
- id integer generated by default as identity not null,
- name varchar(127) not null,
- constraint uq_migtest_e_ref_name unique (name),
- constraint pk_migtest_e_ref primary key (id)
-);
-
create table migtest_e_softdelete (
id integer generated by default as identity not null,
test_string varchar(255),
+ deleted boolean default false not null,
constraint pk_migtest_e_softdelete primary key (id)
);
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
create table migtest_mtm_c (
id integer generated by default as identity not null,
name varchar(255),
constraint pk_migtest_mtm_c primary key (id)
);
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
create table migtest_mtm_m (
id bigint generated by default as identity not null,
name varchar(255),
constraint pk_migtest_mtm_m primary key (id)
);
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
create table migtest_oto_child (
id integer generated by default as identity not null,
name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
constraint pk_migtest_oto_child primary key (id)
);
@@ -162,60 +190,52 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
+alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+-- apply post alter
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period tstzrange
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+create or replace function migtest_e_history_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history_history_upd
+ before update or delete on migtest_e_history
+ for each row execute procedure migtest_e_history_history_version();
+
+
create table migtest_e_history2_history(
id integer,
test_string varchar(255),
- obsolete_string1 varchar(255),
- obsolete_string2 varchar(255),
+ test_string2 varchar(255),
+ test_string3 varchar(255),
+ new_column varchar(20),
sys_period tstzrange
);
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history3_history(
- id integer,
- test_string varchar(255),
- sys_period tstzrange
-);
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history4_history(
- id integer,
- test_number integer,
- sys_period tstzrange
-);
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history5_history(
- id integer,
- test_number integer,
- sys_period tstzrange
-);
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history6_history(
- id integer,
- test_number1 integer,
- test_number2 integer,
- sys_period tstzrange
-);
-create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
-
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -224,11 +244,11 @@ begin
lowerTs = lower(OLD.sys_period);
upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
if (TG_OP = 'UPDATE') then
- insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2);
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
NEW.sys_period = tstzrange(upperTs,null);
return new;
elsif (TG_OP = 'DELETE') then
- insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2);
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
return old;
end if;
end;
@@ -238,6 +258,13 @@ create trigger migtest_e_history2_history_upd
before update or delete on migtest_e_history2
for each row execute procedure migtest_e_history2_history_version();
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period tstzrange
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
create or replace function migtest_e_history3_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -246,11 +273,11 @@ begin
lowerTs = lower(OLD.sys_period);
upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
if (TG_OP = 'UPDATE') then
- insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
NEW.sys_period = tstzrange(upperTs,null);
return new;
elsif (TG_OP = 'DELETE') then
- insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
return old;
end if;
end;
@@ -260,6 +287,13 @@ create trigger migtest_e_history3_history_upd
before update or delete on migtest_e_history3
for each row execute procedure migtest_e_history3_history_version();
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number bigint,
+ sys_period tstzrange
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
create or replace function migtest_e_history4_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -282,6 +316,14 @@ create trigger migtest_e_history4_history_upd
before update or delete on migtest_e_history4
for each row execute procedure migtest_e_history4_history_version();
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ test_boolean boolean,
+ sys_period tstzrange
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
create or replace function migtest_e_history5_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -290,11 +332,11 @@ begin
lowerTs = lower(OLD.sys_period);
upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
if (TG_OP = 'UPDATE') then
- insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
NEW.sys_period = tstzrange(upperTs,null);
return new;
elsif (TG_OP = 'DELETE') then
- insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
return old;
end if;
end;
@@ -304,6 +346,14 @@ create trigger migtest_e_history5_history_upd
before update or delete on migtest_e_history5
for each row execute procedure migtest_e_history5_history_version();
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period tstzrange
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
create or replace function migtest_e_history6_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -326,3 +376,45 @@ create trigger migtest_e_history6_history_upd
before update or delete on migtest_e_history6
for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql
new file mode 100644
index 000000000..f0fa20f0e
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql
@@ -0,0 +1,312 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer generated by default as identity not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamp,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+) in TESTTS index in TESTTS long in TESTTS;
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+) in TESTTS index in TESTTS long in TESTTS;
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+) in TSMASTER index in TSMASTER long in TSMASTER;
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+) in TSMASTER index in TSMASTER long in TSMASTER;
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+) in TSMASTER index in TSMASTER long in TSMASTER;
+
+create table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ master_id bigint,
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history2 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history2 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history2 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history2 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history3 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history3 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history3 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history3 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history4 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history4 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history4 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history4 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history5 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history5 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history5 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history5 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history6 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history6 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history6 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history6 add period system_time (sys_period_start,sys_period_end);
+-- apply post alter
+create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys;
+create unique index uq_migtest_e_basic_status_indextest1 on migtest_e_basic(status,indextest1) exclude null keys;
+create unique index uq_migtest_e_basic_name on migtest_e_basic(name) exclude null keys;
+create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) exclude null keys;
+create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys;
+create table migtest_e_history_history (
+ id integer not null,
+ test_string bigint,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history add versioning use history table migtest_e_history_history;
+create table migtest_e_history2_history (
+ id integer not null,
+ test_string varchar(255) not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) not null,
+ new_column varchar(20),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+create table migtest_e_history3_history (
+ id integer not null,
+ test_string varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+create table migtest_e_history4_history (
+ id integer not null,
+ test_number bigint,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+create table migtest_e_history5_history (
+ id integer not null,
+ test_number integer,
+ test_boolean boolean not null,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+create table migtest_e_history6_history (
+ id integer not null,
+ test_number1 integer not null,
+ test_number2 integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+create unique index uq_migtest_oto_child_master_id on migtest_oto_child(master_id) exclude null keys;
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/I__create_tablespaces.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/I__create_tablespaces.sql
similarity index 100%
rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/I__create_tablespaces.sql
rename to ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/I__create_tablespaces.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/R__db2_explain_tables.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/R__db2_explain_tables.sql
similarity index 100%
rename from ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/R__db2_explain_tables.sql
rename to ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/R__db2_explain_tables.sql
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/R__order_views.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations
new file mode 100644
index 000000000..c4799d684
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations
@@ -0,0 +1,5 @@
+-1602289007, I__create_tablespaces.sql
+-1178292807, 1.0__initial.sql
+-133543359, R__db2_explain_tables.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/h2/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/h2/1.0__initial.sql
new file mode 100644
index 000000000..d792c3fa2
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/h2/1.0__initial.sql
@@ -0,0 +1,306 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer generated by default as identity not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamp,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period_start timestamp default now();
+alter table migtest_e_history add column sys_period_end timestamp;
+alter table migtest_e_history2 add column sys_period_start timestamp default now();
+alter table migtest_e_history2 add column sys_period_end timestamp;
+alter table migtest_e_history3 add column sys_period_start timestamp default now();
+alter table migtest_e_history3 add column sys_period_end timestamp;
+alter table migtest_e_history4 add column sys_period_start timestamp default now();
+alter table migtest_e_history4 add column sys_period_end timestamp;
+alter table migtest_e_history5 add column sys_period_start timestamp default now();
+alter table migtest_e_history5 add column sys_period_end timestamp;
+alter table migtest_e_history6 add column sys_period_start timestamp default now();
+alter table migtest_e_history6 add column sys_period_end timestamp;
+-- apply post alter
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+create trigger migtest_e_history_history_upd before update,delete on migtest_e_history for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history2_history(
+ id integer,
+ test_string varchar(255),
+ test_string2 varchar(255),
+ test_string3 varchar(255),
+ new_column varchar(20),
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number bigint,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ test_boolean boolean,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create trigger migtest_e_history5_history_upd before update,delete on migtest_e_history5 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create trigger migtest_e_history6_history_upd before update,delete on migtest_e_history6 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/h2/R__multi_comments.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/h2/R__multi_comments.sql
new file mode 100644
index 000000000..0ede0c9eb
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/h2/R__multi_comments.sql
@@ -0,0 +1,3 @@
+
+ -- h2 and postgres script
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/h2/R__order_views.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/h2/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/h2/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/h2/idx_h2.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/h2/idx_h2.migrations
new file mode 100644
index 000000000..270c90ba5
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/h2/idx_h2.migrations
@@ -0,0 +1,4 @@
+-489443802, 1.0__initial.sql
+783227075, R__multi_comments.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/hana/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/hana/1.0__initial.sql
new file mode 100644
index 000000000..e61249fe0
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/hana/1.0__initial.sql
@@ -0,0 +1,312 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create column table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one nvarchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create column table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something nvarchar(255),
+ one_key integer,
+ two_key nvarchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create column table migtest_ckey_parent (
+ one_key integer not null,
+ two_key nvarchar(127) not null,
+ name nvarchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create column table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create column table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create column table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create column table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create column table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create column table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create column table migtest_e_basic (
+ id integer generated by default as identity not null,
+ status nvarchar(1) default 'A' not null,
+ status2 nvarchar(127),
+ name nvarchar(127),
+ description nvarchar(127),
+ some_date timestamp,
+ new_string_field nvarchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 nvarchar(127),
+ indextest2 nvarchar(127),
+ indextest3 nvarchar(127),
+ indextest4 nvarchar(127),
+ indextest5 nvarchar(127),
+ indextest6 nvarchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create column table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status nvarchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create column table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create column table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string nvarchar(255) default 'unknown' not null,
+ test_string2 nvarchar(255),
+ test_string3 nvarchar(255) default 'unknown' not null,
+ new_column nvarchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create column table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string nvarchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create column table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create column table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create column table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create column table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string nvarchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create column table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create column table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name nvarchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create column table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create column table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name nvarchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create column table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create column table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value nvarchar(255) not null
+);
+
+create column table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name nvarchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create column table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name nvarchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+-- apply post alter
+create column table migtest_e_history_history (
+ id integer,
+ test_string bigint,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+alter table migtest_e_history add (
+ sys_period_start TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW START,
+ sys_period_end TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW END
+);
+alter table migtest_e_history add period for system_time(sys_period_start,sys_period_end);
+alter table migtest_e_history add system versioning history table migtest_e_history_history;
+create column table migtest_e_history2_history (
+ id integer,
+ test_string nvarchar(255) default 'unknown' not null,
+ test_string2 nvarchar(255),
+ test_string3 nvarchar(255) default 'unknown' not null,
+ new_column nvarchar(20),
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+alter table migtest_e_history2 add (
+ sys_period_start TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW START,
+ sys_period_end TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW END
+);
+alter table migtest_e_history2 add period for system_time(sys_period_start,sys_period_end);
+alter table migtest_e_history2 add system versioning history table migtest_e_history2_history;
+create column table migtest_e_history3_history (
+ id integer,
+ test_string nvarchar(255),
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+alter table migtest_e_history3 add (
+ sys_period_start TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW START,
+ sys_period_end TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW END
+);
+alter table migtest_e_history3 add period for system_time(sys_period_start,sys_period_end);
+alter table migtest_e_history3 add system versioning history table migtest_e_history3_history;
+create column table migtest_e_history4_history (
+ id integer,
+ test_number bigint,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+alter table migtest_e_history4 add (
+ sys_period_start TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW START,
+ sys_period_end TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW END
+);
+alter table migtest_e_history4 add period for system_time(sys_period_start,sys_period_end);
+alter table migtest_e_history4 add system versioning history table migtest_e_history4_history;
+create column table migtest_e_history5_history (
+ id integer,
+ test_number integer,
+ test_boolean boolean default false not null,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+alter table migtest_e_history5 add (
+ sys_period_start TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW START,
+ sys_period_end TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW END
+);
+alter table migtest_e_history5 add period for system_time(sys_period_start,sys_period_end);
+alter table migtest_e_history5 add system versioning history table migtest_e_history5_history;
+create column table migtest_e_history6_history (
+ id integer,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+alter table migtest_e_history6 add (
+ sys_period_start TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW START,
+ sys_period_end TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW END
+);
+alter table migtest_e_history6 add period for system_time(sys_period_start,sys_period_end);
+alter table migtest_e_history6 add system versioning history table migtest_e_history6_history;
+-- foreign keys and indices
+create inverted hash index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_ckey_parent_assoc_id" for single column "assoc_id" of table "migtest_ckey_parent" is not necessary;
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_fk_cascade_one_id" for single column "one_id" of table "migtest_fk_cascade" is not necessary;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_fk_none_one_id" for single column "one_id" of table "migtest_fk_none" is not necessary;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_fk_none_via_join_one_id" for single column "one_id" of table "migtest_fk_none_via_join" is not necessary;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_fk_set_null_one_id" for single column "one_id" of table "migtest_fk_set_null" is not necessary;
+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;
+
+-- explicit index "ix_migtest_e_basic_user_id" for single column "user_id" of table "migtest_e_basic" is not necessary;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c" for single column "migtest_mtm_c_id" of table "migtest_mtm_c_migtest_mtm_m" is not necessary;
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m" for single column "migtest_mtm_m_id" of table "migtest_mtm_c_migtest_mtm_m" is not necessary;
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m" for single column "migtest_mtm_m_id" of table "migtest_mtm_m_migtest_mtm_c" is not necessary;
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c" for single column "migtest_mtm_c_id" of table "migtest_mtm_m_migtest_mtm_c" is not necessary;
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id" for single column "migtest_mtm_m_id" of table "migtest_mtm_m_phone_numbers" is not necessary;
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_e_basic_indextest3" for single column "indextest3" of table "migtest_e_basic" is not necessary;
+-- explicit index "ix_migtest_e_basic_indextest6" for single column "indextest6" of table "migtest_e_basic" is not necessary;
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/hana/I__create_procs.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/hana/I__create_procs.sql
new file mode 100644
index 000000000..cec7863ac
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/hana/I__create_procs.sql
@@ -0,0 +1,33 @@
+-- Inital script to create stored procedures etc for the hana platform
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_foreign_keys TABLE, COLUMN
+-- deletes all constraints and foreign keys referring to TABLE.COLUMN
+--
+CREATE OR REPLACE PROCEDURE usp_ebean_drop_foreign_keys(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256))
+AS
+BEGIN
+DECLARE foreign_key_names TABLE(CONSTRAINT_NAME NVARCHAR(256), TABLE_NAME NVARCHAR(256));
+DECLARE i INT;
+
+foreign_key_names = SELECT CONSTRAINT_NAME, TABLE_NAME FROM SYS.REFERENTIAL_CONSTRAINTS WHERE SCHEMA_NAME=CURRENT_SCHEMA AND TABLE_NAME=UPPER(:table_name) AND COLUMN_NAME=UPPER(:column_name);
+
+FOR I IN 1 .. RECORD_COUNT(:foreign_key_names) DO
+EXEC 'ALTER TABLE "' || ESCAPE_DOUBLE_QUOTES(:foreign_key_names.TABLE_NAME[i]) || '" DROP CONSTRAINT "' || ESCAPE_DOUBLE_QUOTES(:foreign_key_names.CONSTRAINT_NAME[i]) || '"';
+END FOR;
+
+END;
+$$
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN
+-- deletes the column and ensures that all indices and constraints are dropped first
+--
+CREATE OR REPLACE PROCEDURE usp_ebean_drop_column(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256))
+AS
+BEGIN
+CALL usp_ebean_drop_foreign_keys(table_name, column_name);
+EXEC 'ALTER TABLE "' || UPPER(ESCAPE_DOUBLE_QUOTES(table_name)) || '" DROP ("' || UPPER(ESCAPE_DOUBLE_QUOTES(column_name)) || '")';
+END;
+$$
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/hana/R__order_views_hana.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/hana/R__order_views_hana.sql
new file mode 100644
index 000000000..85b1dce9f
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/hana/R__order_views_hana.sql
@@ -0,0 +1,7 @@
+
+ create view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id;
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/hana/idx_hana.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/hana/idx_hana.migrations
new file mode 100644
index 000000000..69da0b279
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/hana/idx_hana.migrations
@@ -0,0 +1,4 @@
+-745347271, I__create_procs.sql
+1457017245, 1.0__initial.sql
+1906063401, R__order_views_hana.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql
new file mode 100644
index 000000000..aabebada9
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql
@@ -0,0 +1,233 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity (start with 1) not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity (start with 1) not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity (start with 1) not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity (start with 1) not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity (start with 1) not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity (start with 1) not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity (start with 1) not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity (start with 1) not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer generated by default as identity (start with 1) not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamp,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity (start with 1) not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity (start with 1) not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id integer generated by default as identity (start with 1) not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity (start with 1) not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity (start with 1) not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity (start with 1) not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity (start with 1) not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity (start with 1) not null,
+ test_string varchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer generated by default as identity (start with 1) not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity (start with 1) not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity (start with 1) not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer generated by default as identity (start with 1) not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity (start with 1) not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/hsqldb/R__order_views_hsqldb.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/hsqldb/R__order_views_hsqldb.sql
new file mode 100644
index 000000000..5f7ba1784
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/hsqldb/R__order_views_hsqldb.sql
@@ -0,0 +1,8 @@
+
+ drop view order_agg_vw if exists ;
+ create view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id;
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations
new file mode 100644
index 000000000..a7d039572
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations
@@ -0,0 +1,3 @@
+-1869771532, 1.0__initial.sql
+861001272, R__order_views_hsqldb.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql
new file mode 100644
index 000000000..dd7cae250
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql
@@ -0,0 +1,236 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer auto_increment not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer auto_increment not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer auto_increment not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date datetime(6),
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field tinyint(1) default 1 not null,
+ new_boolean_field2 tinyint(1) default 1 not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer auto_increment not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer auto_increment not null,
+ test_string bigint comment 'Column altered to long now',
+ constraint pk_migtest_e_history primary key (id)
+) comment='We have history now';
+
+create table migtest_e_history2 (
+ id integer auto_increment not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer auto_increment not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer auto_increment not null,
+ test_number integer,
+ test_boolean tinyint(1) default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer auto_increment not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ deleted tinyint(1) default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer auto_increment not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer auto_increment not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add system versioning;
+alter table migtest_e_history2 add system versioning;
+alter table migtest_e_history3 add system versioning;
+alter table migtest_e_history4 add system versioning;
+alter table migtest_e_history5 add system versioning;
+alter table migtest_e_history6 add system versioning;
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/I__create_procs.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/I__create_procs.sql
new file mode 100644
index 000000000..d13ec2708
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/I__create_procs.sql
@@ -0,0 +1,48 @@
+-- Inital script to create stored procedures etc for mysql platform
+DROP PROCEDURE IF EXISTS usp_ebean_drop_foreign_keys;
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_foreign_keys TABLE, COLUMN
+-- deletes all constraints and foreign keys referring to TABLE.COLUMN
+--
+CREATE PROCEDURE usp_ebean_drop_foreign_keys(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
+BEGIN
+DECLARE done INT DEFAULT FALSE;
+DECLARE c_fk_name CHAR(255);
+DECLARE curs CURSOR FOR SELECT CONSTRAINT_NAME from information_schema.KEY_COLUMN_USAGE
+WHERE TABLE_SCHEMA = DATABASE() and TABLE_NAME = p_table_name and COLUMN_NAME = p_column_name
+AND REFERENCED_TABLE_NAME IS NOT NULL;
+DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
+
+OPEN curs;
+
+read_loop: LOOP
+FETCH curs INTO c_fk_name;
+IF done THEN
+LEAVE read_loop;
+END IF;
+SET @sql = CONCAT('ALTER TABLE ', p_table_name, ' DROP FOREIGN KEY ', c_fk_name);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+END LOOP;
+
+CLOSE curs;
+END
+$$
+
+DROP PROCEDURE IF EXISTS usp_ebean_drop_column;
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN
+-- deletes the column and ensures that all indices and constraints are dropped first
+--
+CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
+BEGIN
+CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
+SET @sql = CONCAT('ALTER TABLE ', p_table_name, ' DROP COLUMN ', p_column_name);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+END
+$$
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/R__order_views.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations
new file mode 100644
index 000000000..0c0f251de
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations
@@ -0,0 +1,4 @@
+1835064798, I__create_procs.sql
+399669760, 1.0__initial.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/model/1.0__initial.model.xml b/ebean-test/src/main/resources/migrationtest/dbmigration/model/1.0__initial.model.xml
new file mode 100644
index 000000000..dccbd490a
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/model/1.0__initial.model.xml
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ update ${table} set ${column} = old_boolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/1.0__initial.sql
new file mode 100644
index 000000000..4a3ad7249
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/1.0__initial.sql
@@ -0,0 +1,362 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer auto_increment not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer auto_increment not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer auto_increment not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date datetime(6),
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field tinyint(1) default 1 not null,
+ new_boolean_field2 tinyint(1) default 1 not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer auto_increment not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer auto_increment not null,
+ test_string bigint comment 'Column altered to long now',
+ constraint pk_migtest_e_history primary key (id)
+) comment='We have history now';
+
+create table migtest_e_history2 (
+ id integer auto_increment not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer auto_increment not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer auto_increment not null,
+ test_number integer,
+ test_boolean tinyint(1) default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer auto_increment not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ deleted tinyint(1) default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer auto_increment not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer auto_increment not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history add column sys_period_end datetime(6);
+alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history2 add column sys_period_end datetime(6);
+alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history3 add column sys_period_end datetime(6);
+alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history4 add column sys_period_end datetime(6);
+alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history5 add column sys_period_end datetime(6);
+alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history6 add column sys_period_end datetime(6);
+-- apply post alter
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+lock tables migtest_e_history write;
+delimiter $$
+create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history_history_del before delete on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+end$$
+unlock tables;
+
+create table migtest_e_history2_history(
+ id integer,
+ test_string varchar(255),
+ test_string2 varchar(255),
+ test_string3 varchar(255),
+ new_column varchar(20),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
+delimiter $$
+create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+end$$
+unlock tables;
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+lock tables migtest_e_history3 write;
+delimiter $$
+create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+end$$
+unlock tables;
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
+delimiter $$
+create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+end$$
+unlock tables;
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ test_boolean tinyint(1),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
+delimiter $$
+create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+end$$
+unlock tables;
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
+delimiter $$
+create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+end$$
+unlock tables;
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/I__create_procs.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/I__create_procs.sql
new file mode 100644
index 000000000..d13ec2708
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/I__create_procs.sql
@@ -0,0 +1,48 @@
+-- Inital script to create stored procedures etc for mysql platform
+DROP PROCEDURE IF EXISTS usp_ebean_drop_foreign_keys;
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_foreign_keys TABLE, COLUMN
+-- deletes all constraints and foreign keys referring to TABLE.COLUMN
+--
+CREATE PROCEDURE usp_ebean_drop_foreign_keys(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
+BEGIN
+DECLARE done INT DEFAULT FALSE;
+DECLARE c_fk_name CHAR(255);
+DECLARE curs CURSOR FOR SELECT CONSTRAINT_NAME from information_schema.KEY_COLUMN_USAGE
+WHERE TABLE_SCHEMA = DATABASE() and TABLE_NAME = p_table_name and COLUMN_NAME = p_column_name
+AND REFERENCED_TABLE_NAME IS NOT NULL;
+DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
+
+OPEN curs;
+
+read_loop: LOOP
+FETCH curs INTO c_fk_name;
+IF done THEN
+LEAVE read_loop;
+END IF;
+SET @sql = CONCAT('ALTER TABLE ', p_table_name, ' DROP FOREIGN KEY ', c_fk_name);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+END LOOP;
+
+CLOSE curs;
+END
+$$
+
+DROP PROCEDURE IF EXISTS usp_ebean_drop_column;
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN
+-- deletes the column and ensures that all indices and constraints are dropped first
+--
+CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
+BEGIN
+CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
+SET @sql = CONCAT('ALTER TABLE ', p_table_name, ' DROP COLUMN ', p_column_name);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+END
+$$
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/R__order_views.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations
new file mode 100644
index 000000000..c896445e0
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations
@@ -0,0 +1,4 @@
+1835064798, I__create_procs.sql
+251257412, 1.0__initial.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql
new file mode 100644
index 000000000..3a1f8d7ae
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql
@@ -0,0 +1,362 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer auto_increment not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer auto_increment not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint auto_increment not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint auto_increment not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer auto_increment not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date datetime,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field tinyint(1) default 1 not null,
+ new_boolean_field2 tinyint(1) default 1 not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer auto_increment not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer auto_increment not null,
+ test_string bigint comment 'Column altered to long now',
+ constraint pk_migtest_e_history primary key (id)
+) comment='We have history now';
+
+create table migtest_e_history2 (
+ id integer auto_increment not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer auto_increment not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer auto_increment not null,
+ test_number integer,
+ test_boolean tinyint(1) default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer auto_increment not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer auto_increment not null,
+ test_string varchar(255),
+ deleted tinyint(1) default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer auto_increment not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer auto_increment not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint auto_increment not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history add column sys_period_end datetime(6);
+alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history2 add column sys_period_end datetime(6);
+alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history3 add column sys_period_end datetime(6);
+alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history4 add column sys_period_end datetime(6);
+alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history5 add column sys_period_end datetime(6);
+alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history6 add column sys_period_end datetime(6);
+-- apply post alter
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+lock tables migtest_e_history write;
+delimiter $$
+create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history_history_del before delete on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+end$$
+unlock tables;
+
+create table migtest_e_history2_history(
+ id integer,
+ test_string varchar(255),
+ test_string2 varchar(255),
+ test_string3 varchar(255),
+ new_column varchar(20),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
+delimiter $$
+create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+end$$
+unlock tables;
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+lock tables migtest_e_history3 write;
+delimiter $$
+create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+end$$
+unlock tables;
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
+delimiter $$
+create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+end$$
+unlock tables;
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ test_boolean tinyint(1),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
+delimiter $$
+create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+end$$
+unlock tables;
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
+delimiter $$
+create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+end$$
+unlock tables;
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/I__create_procs.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/I__create_procs.sql
new file mode 100644
index 000000000..d13ec2708
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/I__create_procs.sql
@@ -0,0 +1,48 @@
+-- Inital script to create stored procedures etc for mysql platform
+DROP PROCEDURE IF EXISTS usp_ebean_drop_foreign_keys;
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_foreign_keys TABLE, COLUMN
+-- deletes all constraints and foreign keys referring to TABLE.COLUMN
+--
+CREATE PROCEDURE usp_ebean_drop_foreign_keys(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
+BEGIN
+DECLARE done INT DEFAULT FALSE;
+DECLARE c_fk_name CHAR(255);
+DECLARE curs CURSOR FOR SELECT CONSTRAINT_NAME from information_schema.KEY_COLUMN_USAGE
+WHERE TABLE_SCHEMA = DATABASE() and TABLE_NAME = p_table_name and COLUMN_NAME = p_column_name
+AND REFERENCED_TABLE_NAME IS NOT NULL;
+DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
+
+OPEN curs;
+
+read_loop: LOOP
+FETCH curs INTO c_fk_name;
+IF done THEN
+LEAVE read_loop;
+END IF;
+SET @sql = CONCAT('ALTER TABLE ', p_table_name, ' DROP FOREIGN KEY ', c_fk_name);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+END LOOP;
+
+CLOSE curs;
+END
+$$
+
+DROP PROCEDURE IF EXISTS usp_ebean_drop_column;
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN
+-- deletes the column and ensures that all indices and constraints are dropped first
+--
+CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
+BEGIN
+CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
+SET @sql = CONCAT('ALTER TABLE ', p_table_name, ' DROP COLUMN ', p_column_name);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+END
+$$
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/R__order_views.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations
new file mode 100644
index 000000000..7dc5345d5
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations
@@ -0,0 +1,4 @@
+1835064798, I__create_procs.sql
+1129732015, 1.0__initial.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/1.0__initial.sql
new file mode 100644
index 000000000..5d8d0b76e
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/1.0__initial.sql
@@ -0,0 +1,233 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id number(10) generated by default as identity not null,
+ assoc_one varchar2(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id number(10) generated by default as identity not null,
+ something varchar2(255),
+ one_key number(10),
+ two_key varchar2(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key number(10) not null,
+ two_key varchar2(127) not null,
+ name varchar2(255),
+ assoc_id number(10),
+ version number(10) not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id number(19) generated by default as identity not null,
+ one_id number(19),
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id number(19) generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id number(19) generated by default as identity not null,
+ one_id number(19),
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id number(19) generated by default as identity not null,
+ one_id number(19),
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id number(19) generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id number(19) generated by default as identity not null,
+ one_id number(19),
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id number(10) generated by default as identity not null,
+ status varchar2(1) default 'A' not null,
+ status2 varchar2(127),
+ name varchar2(127),
+ description varchar2(127),
+ some_date timestamp,
+ new_string_field varchar2(255) default 'foo''bar' not null,
+ new_boolean_field number(1) default 1 not null,
+ new_boolean_field2 number(1) default 1 not null,
+ indextest1 varchar2(127),
+ indextest2 varchar2(127),
+ indextest3 varchar2(127),
+ indextest4 varchar2(127),
+ indextest5 varchar2(127),
+ indextest6 varchar2(127),
+ progress number(10) default 0 not null,
+ new_integer number(10) default 42 not null,
+ user_id number(10),
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id number(10) generated by default as identity not null,
+ test_status varchar2(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id number(10) generated by default as identity not null,
+ test_string number(19),
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id number(10) generated by default as identity not null,
+ test_string varchar2(255) default 'unknown' not null,
+ test_string2 varchar2(255),
+ test_string3 varchar2(255) default 'unknown' not null,
+ new_column varchar2(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id number(10) generated by default as identity not null,
+ test_string varchar2(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id number(10) generated by default as identity not null,
+ test_number number(19),
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id number(10) generated by default as identity not null,
+ test_number number(10),
+ test_boolean number(1) default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id number(10) generated by default as identity not null,
+ test_number1 number(10) default 42 not null,
+ test_number2 number(10),
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id number(10) generated by default as identity not null,
+ test_string varchar2(255),
+ deleted number(1) default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id number(10) generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id number(10) generated by default as identity not null,
+ name varchar2(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id number(10) not null,
+ migtest_mtm_m_id number(19) not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id number(19) generated by default as identity not null,
+ name varchar2(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id number(19) not null,
+ migtest_mtm_c_id number(10) not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id number(19) not null,
+ value varchar2(255) not null
+);
+
+create table migtest_oto_child (
+ id number(10) generated by default as identity not null,
+ name varchar2(255),
+ master_id number(19),
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id number(19) generated by default as identity not null,
+ name varchar2(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
+
+create index ix_mgtst_cky_prnt_ssc_d on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_mgtst_cky_prnt_ssc_d foreign key (assoc_id) references migtest_ckey_assoc (id);
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
+
+create index ix_mgtst_fk_nn_v_jn_n_d on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_mgtst_fk_nn_v_jn_n_d foreign key (one_id) references migtest_fk_one (id);
+
+create index ix_migtest_fk_set_null_one_id on 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);
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
+
+create index ix_mgtst_mtm_c_mgtst_mt_3ug4ok on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mtm_c_mgtst_mt_93awga foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_mgtst_mtm_c_mgtst_mt_3ug4ou on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mtm_c_mgtst_mt_93awgk foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_mgtst_mtm_m_mgtst_mt_b7nbcu on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_mgtst_mtm_m_mgtst_mt_ggi34k foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_mgtst_mtm_m_mgtst_mt_b7nbck on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_mgtst_mtm_m_mgtst_mt_ggi34a foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_mgtst_mtm_m_phn_nmbr_do9ma3 on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_mgtst_mtm_m_phn_nmbr_s8neid foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id);
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/R__oracle_only_views.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/R__oracle_only_views.sql
new file mode 100644
index 000000000..1140e5361
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/R__oracle_only_views.sql
@@ -0,0 +1,4 @@
+
+ -- oracle only script
+ select * from dual;
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/R__order_views.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations
new file mode 100644
index 000000000..75b3861a6
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations
@@ -0,0 +1,4 @@
+1634222133, 1.0__initial.sql
+1357801733, R__oracle_only_views.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/1.0__initial.sql
new file mode 100644
index 000000000..b22dc2127
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/1.0__initial.sql
@@ -0,0 +1,392 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer generated by default as identity not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamptz,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+-- apply post alter
+create table migtest_e_history_history(like migtest_e_history);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+create or replace function migtest_e_history_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history_history_upd
+ before update or delete on migtest_e_history
+ for each row execute procedure migtest_e_history_history_version();
+
+
+create table migtest_e_history2_history(like migtest_e_history2);
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create or replace function migtest_e_history2_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+
+create table migtest_e_history3_history(like migtest_e_history3);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create or replace function migtest_e_history3_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history3_history_upd
+ before update or delete on migtest_e_history3
+ for each row execute procedure migtest_e_history3_history_version();
+
+
+create table migtest_e_history4_history(like migtest_e_history4);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create or replace function migtest_e_history4_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history4_history_upd
+ before update or delete on migtest_e_history4
+ for each row execute procedure migtest_e_history4_history_version();
+
+
+create table migtest_e_history5_history(like migtest_e_history5);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create or replace function migtest_e_history5_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history5_history_upd
+ before update or delete on migtest_e_history5
+ for each row execute procedure migtest_e_history5_history_version();
+
+
+create table migtest_e_history6_history(like migtest_e_history6);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create or replace function migtest_e_history6_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history6_history_upd
+ before update or delete on migtest_e_history6
+ for each row execute procedure migtest_e_history6_history_version();
+
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
+create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/R__multi_comments.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/R__multi_comments.sql
new file mode 100644
index 000000000..0ede0c9eb
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/R__multi_comments.sql
@@ -0,0 +1,3 @@
+
+ -- h2 and postgres script
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/R__order_views.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/R__pg_indexes.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/R__pg_indexes.sql
new file mode 100644
index 000000000..fa0bab998
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/R__pg_indexes.sql
@@ -0,0 +1,4 @@
+
+ -- postgres specific indexes
+ create index ix_ebasic_jmjb_gin2 on ebasic_json_map_json_b using gin(content jsonb_path_ops);
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations
new file mode 100644
index 000000000..5e798e30f
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations
@@ -0,0 +1,5 @@
+2107694286, 1.0__initial.sql
+783227075, R__multi_comments.sql
+561281075, R__order_views.sql
+283077354, R__pg_indexes.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql
new file mode 100644
index 000000000..6ff6d8ceb
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql
@@ -0,0 +1,206 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id),
+ foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key),
+ foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict
+);
+
+create table migtest_fk_cascade (
+ id integer not null,
+ one_id integer,
+ constraint pk_migtest_fk_cascade primary key (id),
+ foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict
+);
+
+create table migtest_fk_cascade_one (
+ id integer not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id integer not null,
+ one_id integer,
+ constraint pk_migtest_fk_none primary key (id),
+ foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict
+);
+
+create table migtest_fk_none_via_join (
+ id integer not null,
+ one_id integer,
+ constraint pk_migtest_fk_none_via_join primary key (id),
+ foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict
+);
+
+create table migtest_fk_one (
+ id integer not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id integer not null,
+ one_id integer,
+ constraint pk_migtest_fk_set_null primary key (id),
+ foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict
+);
+
+create table migtest_e_basic (
+ id integer not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamp,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field int default 1 not null,
+ new_boolean_field2 int default 1 not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id),
+ foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict
+);
+
+create table migtest_e_enum (
+ id integer not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer not null,
+ test_string integer,
+ constraint pk_migtest_e_history primary key (id)
+);
+
+create table migtest_e_history2 (
+ id integer not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer not null,
+ test_number integer,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer not null,
+ test_number integer,
+ test_boolean int default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer not null,
+ test_string varchar(255),
+ deleted int default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id integer not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id),
+ foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict,
+ foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict
+);
+
+create table migtest_mtm_m (
+ id integer not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id integer not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id),
+ foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict,
+ foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id integer not null,
+ value varchar(255) not null,
+ foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict
+);
+
+create table migtest_oto_child (
+ id integer not null,
+ name varchar(255),
+ master_id integer,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id),
+ foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict
+);
+
+create table migtest_oto_master (
+ id integer not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- foreign keys and indices
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/sqlite/R__order_views_sqlite.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlite/R__order_views_sqlite.sql
new file mode 100644
index 000000000..9572b5c26
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlite/R__order_views_sqlite.sql
@@ -0,0 +1,8 @@
+
+ drop view if exists order_agg_vw;
+ create view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id;
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations
new file mode 100644
index 000000000..6daa8885c
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations
@@ -0,0 +1,3 @@
+6725356, 1.0__initial.sql
+2034589659, R__order_views_sqlite.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql
new file mode 100644
index 000000000..d4934452b
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql
@@ -0,0 +1,284 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer not null,
+ assoc_one nvarchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+create sequence migtest_ckey_assoc_seq as bigint start with 1;
+
+create table migtest_ckey_detail (
+ id integer not null,
+ something nvarchar(255),
+ one_key integer,
+ two_key nvarchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+create sequence migtest_ckey_detail_seq as bigint start with 1;
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key nvarchar(127) not null,
+ name nvarchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id numeric(19) not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+create sequence migtest_fk_cascade_seq as bigint start with 1;
+
+create table migtest_fk_cascade_one (
+ id numeric(19) not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+create sequence migtest_fk_cascade_one_seq as bigint start with 1;
+
+create table migtest_fk_none (
+ id numeric(19) not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_none primary key (id)
+);
+create sequence migtest_fk_none_seq as bigint start with 1;
+
+create table migtest_fk_none_via_join (
+ id numeric(19) not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+create sequence migtest_fk_none_via_join_seq as bigint start with 1;
+
+create table migtest_fk_one (
+ id numeric(19) not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+create sequence migtest_fk_one_seq as bigint start with 1;
+
+create table migtest_fk_set_null (
+ id numeric(19) not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+create sequence migtest_fk_set_null_seq as bigint start with 1;
+
+create table migtest_e_basic (
+ id integer not null,
+ status nvarchar(1) default 'A' not null,
+ status2 nvarchar(127),
+ name nvarchar(127),
+ description nvarchar(127),
+ some_date datetime2,
+ new_string_field nvarchar(255) default 'foo''bar' not null,
+ new_boolean_field bit default 1 not null,
+ new_boolean_field2 bit default 1 not null,
+ indextest1 nvarchar(127),
+ indextest2 nvarchar(127),
+ indextest3 nvarchar(127),
+ indextest4 nvarchar(127),
+ indextest5 nvarchar(127),
+ indextest6 nvarchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint pk_migtest_e_basic primary key (id)
+);
+create sequence migtest_e_basic_seq as bigint start with 1;
+
+create table migtest_e_enum (
+ id integer not null,
+ test_status nvarchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+create sequence migtest_e_enum_seq as bigint start with 1;
+
+create table migtest_e_history (
+ id integer not null,
+ test_string numeric(19),
+ constraint pk_migtest_e_history primary key (id)
+);
+create sequence migtest_e_history_seq as bigint start with 1;
+
+create table migtest_e_history2 (
+ id integer not null,
+ test_string nvarchar(255) default 'unknown' not null,
+ test_string2 nvarchar(255),
+ test_string3 nvarchar(255) default 'unknown' not null,
+ new_column nvarchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+create sequence migtest_e_history2_seq as bigint start with 1;
+
+create table migtest_e_history3 (
+ id integer not null,
+ test_string nvarchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+create sequence migtest_e_history3_seq as bigint start with 1;
+
+create table migtest_e_history4 (
+ id integer not null,
+ test_number numeric(19),
+ constraint pk_migtest_e_history4 primary key (id)
+);
+create sequence migtest_e_history4_seq as bigint start with 1;
+
+create table migtest_e_history5 (
+ id integer not null,
+ test_number integer,
+ test_boolean bit default 0 not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+create sequence migtest_e_history5_seq as bigint start with 1;
+
+create table migtest_e_history6 (
+ id integer not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+create sequence migtest_e_history6_seq as bigint start with 1;
+
+create table migtest_e_softdelete (
+ id integer not null,
+ test_string nvarchar(255),
+ deleted bit default 0 not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+create sequence migtest_e_softdelete_seq as bigint start with 1;
+
+create table migtest_e_user (
+ id integer not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+create sequence migtest_e_user_seq as bigint start with 1;
+
+create table migtest_mtm_c (
+ id integer not null,
+ name nvarchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+create sequence migtest_mtm_c_seq as bigint start with 1;
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id numeric(19) not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id numeric(19) not null,
+ name nvarchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+create sequence migtest_mtm_m_seq as bigint start with 1;
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id numeric(19) not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id numeric(19) not null,
+ value nvarchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer not null,
+ name nvarchar(255),
+ master_id numeric(19),
+ constraint pk_migtest_oto_child primary key (id)
+);
+create sequence migtest_oto_child_seq as bigint start with 1;
+
+create table migtest_oto_master (
+ id numeric(19) not null,
+ name nvarchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+create sequence migtest_oto_master_seq as bigint start with 1;
+
+-- apply post alter
+create unique nonclustered index uq_migtest_e_basic_description on migtest_e_basic(description) where description is not null;
+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;
+alter table migtest_e_history
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history set (system_versioning = on (history_table=dbo.migtest_e_history_history));
+alter table migtest_e_history2
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+alter table migtest_e_history3
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history));
+alter table migtest_e_history4
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history4 set (system_versioning = on (history_table=dbo.migtest_e_history4_history));
+alter table migtest_e_history5
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history5 set (system_versioning = on (history_table=dbo.migtest_e_history5_history));
+alter table migtest_e_history6
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history6 set (system_versioning = on (history_table=dbo.migtest_e_history6_history));
+create unique nonclustered index uq_migtest_oto_child_master_id on migtest_oto_child(master_id) where master_id is not null;
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id);
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id);
+
+create index ix_migtest_fk_set_null_one_id on 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);
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id);
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/I__create_procs.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/I__create_procs.sql
new file mode 100644
index 000000000..6f916bcc9
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/I__create_procs.sql
@@ -0,0 +1,110 @@
+-- Initial script to create stored procedures etc for sqlserver platform
+
+-- create table-value-parameters
+if not exists (select name from sys.types where name = 'ebean_bigint_tvp') create type ebean_bigint_tvp as table (c1 bigint)
+GO
+if not exists (select name from sys.types where name = 'ebean_float_tvp') create type ebean_float_tvp as table (c1 float)
+GO
+if not exists (select name from sys.types where name = 'ebean_bit_tvp') create type ebean_bit_tvp as table (c1 bit)
+GO
+if not exists (select name from sys.types where name = 'ebean_date_tvp') create type ebean_date_tvp as table (c1 date)
+GO
+if not exists (select name from sys.types where name = 'ebean_time_tvp') create type ebean_time_tvp as table (c1 time)
+GO
+if not exists (select name from sys.types where name = 'ebean_uniqueidentifier_tvp') create type ebean_uniqueidentifier_tvp as table (c1 uniqueidentifier)
+GO
+if not exists (select name from sys.types where name = 'ebean_nvarchar_tvp') create type ebean_nvarchar_tvp as table (c1 nvarchar(max))
+GO
+
+--
+-- PROCEDURE: usp_ebean_drop_indices TABLE, COLUMN
+-- deletes all indices referring to TABLE.COLUMN
+--
+CREATE OR ALTER PROCEDURE usp_ebean_drop_indices @tableName nvarchar(255), @columnName nvarchar(255)
+AS SET NOCOUNT ON
+declare @sql nvarchar(1000)
+declare @indexName nvarchar(255)
+BEGIN
+ DECLARE index_cursor CURSOR FOR SELECT i.name from sys.indexes i
+ join sys.index_columns ic on ic.object_id = i.object_id and ic.index_id = i.index_id
+ join sys.columns c on c.object_id = ic.object_id and c.column_id = ic.column_id
+ where i.object_id = OBJECT_ID(@tableName) AND c.name = @columnName;
+ OPEN index_cursor
+ FETCH NEXT FROM index_cursor INTO @indexName
+ WHILE @@FETCH_STATUS = 0
+ BEGIN
+ set @sql = 'drop index ' + @indexName + ' on ' + @tableName;
+ EXECUTE(@sql);
+
+ FETCH NEXT FROM index_cursor INTO @indexName
+ END;
+ CLOSE index_cursor;
+ DEALLOCATE index_cursor;
+END
+GO
+
+--
+-- PROCEDURE: usp_ebean_drop_default_constraint TABLE, COLUMN
+-- deletes the default constraint, which has a random name
+--
+CREATE OR ALTER PROCEDURE usp_ebean_drop_default_constraint @tableName nvarchar(255), @columnName nvarchar(255)
+AS SET NOCOUNT ON
+declare @tmp nvarchar(1000)
+BEGIN
+ select @tmp = t1.name from sys.default_constraints t1
+ join sys.columns t2 on t1.object_id = t2.default_object_id
+ where t1.parent_object_id = OBJECT_ID(@tableName) and t2.name = @columnName;
+
+ if @tmp is not null EXEC('alter table ' + @tableName +' drop constraint ' + @tmp);
+END
+GO
+
+--
+-- PROCEDURE: usp_ebean_drop_constraints TABLE, COLUMN
+-- deletes constraints and foreign keys refering to TABLE.COLUMN
+--
+CREATE OR ALTER PROCEDURE usp_ebean_drop_constraints @tableName nvarchar(255), @columnName nvarchar(255)
+AS SET NOCOUNT ON
+declare @sql nvarchar(1000)
+declare @constraintName nvarchar(255)
+BEGIN
+ DECLARE name_cursor CURSOR FOR
+ SELECT cc.name from sys.check_constraints cc
+ join sys.columns c on c.object_id = cc.parent_object_id and c.column_id = cc.parent_column_id
+ where parent_object_id = OBJECT_ID(@tableName) AND c.name = @columnName
+ UNION SELECT fk.name from sys.foreign_keys fk
+ join sys.foreign_key_columns fkc on fkc.constraint_object_id = fk.object_id
+ and fkc.parent_object_id = fk.parent_object_id
+ join sys.columns c on c.object_id = fkc.parent_object_id and c.column_id = fkc.parent_column_id
+ where fkc.parent_object_id = OBJECT_ID(@tableName) AND c.name = @columnName;
+
+ OPEN name_cursor
+ FETCH NEXT FROM name_cursor INTO @constraintName
+ WHILE @@FETCH_STATUS = 0
+ BEGIN
+ set @sql = 'alter table ' + @tableName + ' drop constraint ' + @constraintName;
+ EXECUTE(@sql);
+
+ FETCH NEXT FROM name_cursor INTO @constraintName
+ END;
+ CLOSE name_cursor;
+ DEALLOCATE name_cursor;
+END
+GO
+
+--
+-- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN
+-- deletes the column annd ensures that all indices and constraints are dropped first
+--
+CREATE OR ALTER PROCEDURE usp_ebean_drop_column @tableName nvarchar(255), @columnName nvarchar(255)
+AS SET NOCOUNT ON
+declare @sql nvarchar(1000)
+BEGIN
+ EXEC usp_ebean_drop_indices @tableName, @columnName;
+ EXEC usp_ebean_drop_default_constraint @tableName, @columnName;
+ EXEC usp_ebean_drop_constraints @tableName, @columnName;
+
+ set @sql = 'alter table ' + @tableName + ' drop column ' + @columnName;
+ EXECUTE(@sql);
+END
+GO
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/R__order_views_mssql.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/R__order_views_mssql.sql
new file mode 100644
index 000000000..3b90ebb2d
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/R__order_views_mssql.sql
@@ -0,0 +1,10 @@
+
+ IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'order_agg_vw')
+ DROP VIEW order_agg_vw;
+
+ create view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id;
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations
new file mode 100644
index 000000000..49c37e5d2
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations
@@ -0,0 +1,4 @@
+-2122378240, I__create_procs.sql
+1625315960, 1.0__initial.sql
+1607822082, R__order_views_mssql.sql
+
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql
new file mode 100644
index 000000000..bef57d682
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql
@@ -0,0 +1,420 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something varchar(255),
+ one_key integer,
+ two_key varchar(127),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ assoc_id integer,
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+create table migtest_e_basic (
+ id integer generated by default as identity not null,
+ status varchar(1) default 'A' not null,
+ status2 varchar(127),
+ name varchar(127),
+ description varchar(127),
+ some_date timestamptz,
+ new_string_field varchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ indextest6 varchar(127),
+ progress integer default 0 not null,
+ new_integer integer default 42 not null,
+ user_id integer,
+ constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')),
+ constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)),
+ constraint uq_migtest_e_basic_description unique (description),
+ constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1),
+ constraint uq_migtest_e_basic_name unique (name),
+ constraint uq_migtest_e_basic_indextest4 unique (indextest4),
+ constraint uq_migtest_e_basic_indextest5 unique (indextest5),
+ constraint pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status varchar(1),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string bigint,
+ constraint pk_migtest_e_history primary key (id)
+);
+comment on table migtest_e_history is 'We have history now';
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+
+create table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string varchar(255) default 'unknown' not null,
+ test_string2 varchar(255),
+ test_string3 varchar(255) default 'unknown' not null,
+ new_column varchar(20),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number bigint,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ test_boolean boolean default false not null,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer default 42 not null,
+ test_number2 integer,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ deleted boolean default false not null,
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+create table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ master_id bigint,
+ constraint uq_migtest_oto_child_master_id unique (master_id),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+-- apply post alter
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period tstzrange
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+create or replace function migtest_e_history_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history_history_upd
+ before update or delete on migtest_e_history
+ for each row execute procedure migtest_e_history_history_version();
+
+
+create table migtest_e_history2_history(
+ id integer,
+ test_string varchar(255),
+ test_string2 varchar(255),
+ test_string3 varchar(255),
+ new_column varchar(20),
+ sys_period tstzrange
+);
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create or replace function migtest_e_history2_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period tstzrange
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create or replace function migtest_e_history3_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history3_history_upd
+ before update or delete on migtest_e_history3
+ for each row execute procedure migtest_e_history3_history_version();
+
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number bigint,
+ sys_period tstzrange
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create or replace function migtest_e_history4_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history4_history_upd
+ before update or delete on migtest_e_history4
+ for each row execute procedure migtest_e_history4_history_version();
+
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ test_boolean boolean,
+ sys_period tstzrange
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create or replace function migtest_e_history5_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history5_history_upd
+ before update or delete on migtest_e_history5
+ for each row execute procedure migtest_e_history5_history_version();
+
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period tstzrange
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create or replace function migtest_e_history6_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history6_history_upd
+ before update or delete on migtest_e_history6
+ for each row execute procedure migtest_e_history6_history_version();
+
+
+-- foreign keys and indices
+create index ix_migtest_ckey_detail_parent on migtest_ckey_detail (one_key,two_key);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_one_id on migtest_fk_none (one_id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_none_via_join_one_id on migtest_fk_none_via_join (one_id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_user_id on migtest_e_basic (user_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/yugabyte/R__order_views.sql b/ebean-test/src/main/resources/migrationtest/dbmigration/yugabyte/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/yugabyte/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/main/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations b/ebean-test/src/main/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations
new file mode 100644
index 000000000..da29b8ea8
--- /dev/null
+++ b/ebean-test/src/main/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations
@@ -0,0 +1,3 @@
+964249682, 1.0__initial.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/test/java/io/ebeaninternal/dbmigration/MysqlGenerateMigrationTest.java b/ebean-test/src/test/java/io/ebeaninternal/dbmigration/MysqlGenerateMigrationTest.java
deleted file mode 100644
index 7b728422e..000000000
--- a/ebean-test/src/test/java/io/ebeaninternal/dbmigration/MysqlGenerateMigrationTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package io.ebeaninternal.dbmigration;
-
-import io.ebean.DatabaseFactory;
-import io.ebean.config.DatabaseConfig;
-
-import org.junit.jupiter.api.Test;
-
-import java.io.File;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Arrays;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * Class to test the alternative drop behaviour using stored procedures for MySql databases .
- *
- * @author Jonas Pöhler, FOCONIS AG
- */
-public class MysqlGenerateMigrationTest {
-
- @Test
- public void testMysqlStoredProcedures() throws Exception {
-
-
- String pathToResources = "src/test/resources";
-
- DatabaseConfig config = new DatabaseConfig();
- config.setName("migrationtest");
- config.loadFromProperties();
- config.setRegister(false);
- config.setDefaultServer(false);
- config.getPlatformConfig().setUseMigrationStoredProcedures(true);
- config.setRunMigration(false);
- config.getProperties().put("ebean.migrationtest.migration.pathToResources", pathToResources);
- config.getProperties().put("ebean.migrationtest.migration.platforms", "mysql");
- config.getProperties().put("ebean.migrationtest.migration.migrationPath", "migrationtest-procedures/dbmigration");
- config.getProperties().put("ebean.migrationtest.migration.migrationInitPath", "migrationtest-procedures/dbinit");
- config.setPackages(Arrays.asList("misc.migration.mysql_v1_0"));
-
- // First, we clean up the output-directory
- Path path = Paths.get(pathToResources , "migrationtest-procedures");
- Files.walk(path)
- .filter(Files::isRegularFile).map(Path::toFile).forEach(File::delete);
-
- DatabaseFactory.create(config).shutdown();
-
- // then we generate migration scripts for v1_0
- assertThat(DbMigrationPlugin.getLastMigration()).isEqualTo("1.0__initial");
- assertThat(DbMigrationPlugin.getLastInit()).isEqualTo("1.0__initial");
-
-
- // and now for v1_1
- config.setPackages(Arrays.asList("misc.migration.mysql_v1_1"));
- DatabaseFactory.create(config).shutdown();
- assertThat(DbMigrationPlugin.getLastMigration()).isEqualTo("1.1,1.2__dropsFor_1.1");
- assertThat(DbMigrationPlugin.getLastInit()).isEqualTo("1.2");
-
- final Path sqlFile = path.resolve("dbmigration/mysql/1.2__dropsFor_1.1.sql");
-
- assertThat(sqlFile).isNotEmptyFile();
- assertThat(Files.readAllLines(sqlFile, StandardCharsets.UTF_8))
- .contains("CALL usp_ebean_drop_column('migtest_e_basic', 'status2');")
- .contains("CALL usp_ebean_drop_column('migtest_e_basic', 'description');");
- }
-}
diff --git a/ebean-test/src/test/java/misc/migration/mysql_v1_0/EBasic.java b/ebean-test/src/test/java/misc/migration/mysql_v1_0/EBasic.java
deleted file mode 100644
index b11fb4a8c..000000000
--- a/ebean-test/src/test/java/misc/migration/mysql_v1_0/EBasic.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package misc.migration.mysql_v1_0;
-
-import io.ebean.annotation.DbDefault;
-import io.ebean.annotation.EnumValue;
-import io.ebean.annotation.NotNull;
-
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.validation.constraints.Size;
-
-@Entity
-@Table(name = "migtest_e_basic")
-public class EBasic {
-
- public enum Status {
- @EnumValue("N")
- NEW,
-
- @EnumValue("A")
- ACTIVE,
-
- @EnumValue("I")
- INACTIVE,
- }
-
- @Id
- Integer id;
-
- Status status;
-
- @DbDefault("N")
- @NotNull
- Status status2;
-
- @Size(max=127)
- String name;
-
- @Size(max=127)
- String description;
-
- public EBasic() {
-
- }
-
- public EBasic(String name) {
- this.name = name;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public Status getStatus() {
- return status;
- }
-
- public void setStatus(Status status) {
- this.status = status;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Status getStatus2() {
- return status2;
- }
-
- public void setStatus2(final Status status2) {
- this.status2 = status2;
- }
-}
diff --git a/ebean-test/src/test/java/misc/migration/mysql_v1_1/EBasic.java b/ebean-test/src/test/java/misc/migration/mysql_v1_1/EBasic.java
deleted file mode 100644
index 739332226..000000000
--- a/ebean-test/src/test/java/misc/migration/mysql_v1_1/EBasic.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package misc.migration.mysql_v1_1;
-
-import io.ebean.annotation.EnumValue;
-
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.validation.constraints.Size;
-
-@Entity
-@Table(name = "migtest_e_basic")
-public class EBasic {
-
- public enum Status {
- @EnumValue("N")
- NEW,
-
- @EnumValue("A")
- ACTIVE,
-
- @EnumValue("I")
- INACTIVE,
- }
-
- @Id
- Integer id;
-
- Status status;
-
- @Size(max=127)
- String name;
-
- public EBasic() {
-
- }
-
- public EBasic(String name) {
- this.name = name;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public Status getStatus() {
- return status;
- }
-
- public void setStatus(Status status) {
- this.status = status;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-}
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.0__initial.sql
new file mode 100644
index 000000000..b4b1ecfff
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.0__initial.sql
@@ -0,0 +1,135 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id UInt32,
+ assoc_one String
+) ENGINE = Log();
+
+create table migtest_ckey_detail (
+ id UInt32,
+ something String
+) ENGINE = Log();
+
+create table migtest_ckey_parent (
+ one_key UInt32,
+ two_key String,
+ name String,
+ version UInt32
+) ENGINE = Log();
+
+create table migtest_fk_cascade (
+ id UInt64,
+ one_id UInt64
+) ENGINE = Log();
+
+create table migtest_fk_cascade_one (
+ id UInt64
+) ENGINE = Log();
+
+create table migtest_fk_none (
+ id UInt64,
+ one_id UInt64
+) ENGINE = Log();
+
+create table migtest_fk_none_via_join (
+ id UInt64,
+ one_id UInt64
+) ENGINE = Log();
+
+create table migtest_fk_one (
+ id UInt64
+) ENGINE = Log();
+
+create table migtest_fk_set_null (
+ id UInt64,
+ one_id UInt64
+) ENGINE = Log();
+
+create table migtest_e_basic (
+ id UInt32,
+ status String,
+ status2 String default 'N',
+ name String,
+ description String,
+ description_file blob,
+ some_date DateTime,
+ old_boolean UInt8 default 0,
+ old_boolean2 UInt8,
+ eref_id UInt32,
+ indextest1 String,
+ indextest2 String,
+ indextest3 String,
+ indextest4 String,
+ indextest5 String,
+ indextest6 String,
+ user_id UInt32
+) ENGINE = Log();
+
+create table migtest_e_enum (
+ id UInt32,
+ test_status String
+) ENGINE = Log();
+
+create table migtest_e_history (
+ id UInt32,
+ test_string String
+) ENGINE = Log();
+
+create table migtest_e_history2 (
+ id UInt32,
+ test_string String,
+ obsolete_string1 String,
+ obsolete_string2 String
+) ENGINE = Log();
+
+create table migtest_e_history3 (
+ id UInt32,
+ test_string String
+) ENGINE = Log();
+
+create table migtest_e_history4 (
+ id UInt32,
+ test_number UInt32
+) ENGINE = Log();
+
+create table migtest_e_history5 (
+ id UInt32,
+ test_number UInt32
+) ENGINE = Log();
+
+create table migtest_e_history6 (
+ id UInt32,
+ test_number1 UInt32,
+ test_number2 UInt32
+) ENGINE = Log();
+
+create table migtest_e_ref (
+ id UInt32,
+ name String
+) ENGINE = Log();
+
+create table migtest_e_softdelete (
+ id UInt32,
+ test_string String
+) ENGINE = Log();
+
+create table migtest_mtm_c (
+ id UInt32,
+ name String
+) ENGINE = Log();
+
+create table migtest_mtm_m (
+ id UInt64,
+ name String
+) ENGINE = Log();
+
+create table migtest_oto_child (
+ id UInt32,
+ name String
+) ENGINE = Log();
+
+create table migtest_oto_master (
+ id UInt64,
+ name String
+) ENGINE = Log();
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.1.sql
new file mode 100644
index 000000000..eef3c8083
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.1.sql
@@ -0,0 +1,78 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+-- apply changes
+create table migtest_e_user (
+ id UInt32
+) ENGINE = Log();
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id UInt32,
+ migtest_mtm_m_id UInt64
+) ENGINE = Log();
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id UInt64,
+ migtest_mtm_c_id UInt32
+) ENGINE = Log();
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id UInt64,
+ value String
+) ENGINE = Log();
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- rename all collisions;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key UInt32;
+alter table migtest_ckey_detail add column two_key String;
+alter table migtest_ckey_parent add column assoc_id UInt32;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 String;
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 set null;
+alter table migtest_e_basic alter column user_id set null;
+alter table migtest_e_basic add column new_string_field String default 'foo''bar';
+alter table migtest_e_basic add column new_boolean_field UInt8 default 1;
+alter table migtest_e_basic add column new_boolean_field2 UInt8 default 1;
+alter table migtest_e_basic add column progress UInt32 default 0;
+alter table migtest_e_basic add column new_integer UInt32 default 42;
+alter table migtest_e_history alter column test_string UInt64;
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 String;
+alter table migtest_e_history2 add column test_string3 String default 'unknown';
+alter table migtest_e_history2 add column new_column String;
+alter table migtest_e_history4 alter column test_number UInt64;
+alter table migtest_e_history5 add column test_boolean UInt8 default 0;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 set null;
+alter table migtest_e_softdelete add column deleted UInt8 default 0;
+alter table migtest_oto_child add column master_id UInt64;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..4ec79a34c
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.2__dropsFor_1.1.sql
@@ -0,0 +1,10 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+-- apply post alter
+drop table if exists migtest_e_ref;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.3.sql
new file mode 100644
index 000000000..523858c49
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.3.sql
@@ -0,0 +1,50 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+-- apply changes
+create table migtest_e_ref (
+ id UInt32,
+ name String
+) ENGINE = Log();
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status set null;
+alter table migtest_e_basic alter column status2 String;
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file blob;
+alter table migtest_e_basic add column old_boolean UInt8 default 0;
+alter table migtest_e_basic add column old_boolean2 UInt8;
+alter table migtest_e_basic add column eref_id UInt32;
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string set null;
+alter table migtest_e_history2 add column obsolete_string1 String;
+alter table migtest_e_history2 add column obsolete_string2 String;
+alter table migtest_e_history4 alter column test_number UInt32;
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 set null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..b4087d6d6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/1.4__dropsFor_1.3.sql
@@ -0,0 +1,21 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+alter table migtest_ckey_parent drop column assoc_id;
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history5 drop column test_boolean;
+alter table migtest_e_softdelete drop column deleted;
+alter table migtest_oto_child drop column master_id;
+-- apply post alter
+drop table if exists migtest_e_user;
+drop table if exists migtest_mtm_c_migtest_mtm_m;
+drop table if exists migtest_mtm_m_migtest_mtm_c;
+drop table if exists migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/idx_clickhouse.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/idx_clickhouse.migrations
new file mode 100644
index 000000000..836030b83
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/clickhouse/idx_clickhouse.migrations
@@ -0,0 +1,6 @@
+1588846231, 1.0__initial.sql
+-1102375855, 1.1.sql
+1279151426, 1.2__dropsFor_1.1.sql
+581928632, 1.3.sql
+80209848, 1.4__dropsFor_1.3.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/db2luw/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.0__initial.sql
similarity index 91%
rename from ebean-test/src/test/resources/migrationtest/dbinit/db2luw/1.4.sql
rename to ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.0__initial.sql
index 79302cc31..b9b139994 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/db2luw/1.4.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.0__initial.sql
@@ -60,8 +60,8 @@ create table migtest_e_basic (
status2 varchar(1) default 'N' not null,
name varchar(127),
description varchar(127),
- description_file blob(64M),
- some_date timestamp,
+ description_file bytea,
+ some_date timestamptz,
old_boolean boolean default false not null,
old_boolean2 boolean,
eref_id integer,
@@ -71,13 +71,13 @@ create table migtest_e_basic (
indextest4 varchar(127),
indextest5 varchar(127),
indextest6 varchar(127),
- user_id integer default 23 not null,
+ 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)
);
-create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys;
-create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys;
create table migtest_e_enum (
id integer generated by default as identity not null,
@@ -88,7 +88,7 @@ create table migtest_e_enum (
create table migtest_e_history (
id integer generated by default as identity not null,
- test_string bigint,
+ test_string varchar(255),
constraint pk_migtest_e_history primary key (id)
);
@@ -121,16 +121,16 @@ create table migtest_e_history5 (
create table migtest_e_history6 (
id integer generated by default as identity not null,
test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number2 integer not null,
constraint pk_migtest_e_history6 primary key (id)
);
create table migtest_e_ref (
id integer generated by default as identity not null,
name varchar(127) not null,
+ constraint uq_migtest_e_ref_name unique (name),
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
create table migtest_e_softdelete (
id integer generated by default as identity not null,
@@ -162,14 +162,15 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+-- foreign keys and indices
create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
create index ix_migtest_fk_set_null_one_id on 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;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.1.sql
new file mode 100644
index 000000000..11933d07c
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.1.sql
@@ -0,0 +1,114 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table if exists migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+drop index uq_migtest_e_basic_indextest2 cascade;
+drop index uq_migtest_e_basic_indextest6 cascade;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
+-- apply changes
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- rename all collisions;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 type varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 drop not null;
+alter table migtest_e_basic alter column user_id drop not null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history alter column test_string type bigint;
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 varchar(255);
+alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2 add column new_column varchar(20);
+alter table migtest_e_history4 alter column test_number type bigint;
+alter table migtest_e_history5 add column test_boolean boolean default false not null;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 drop not null;
+alter table migtest_e_softdelete add column deleted boolean default false not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..e3450aa6a
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.2__dropsFor_1.1.sql
@@ -0,0 +1,11 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+-- apply post alter
+drop table if exists migtest_e_ref cascade;
+drop sequence if exists migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.3.sql
new file mode 100644
index 000000000..fa5bd5461
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.3.sql
@@ -0,0 +1,68 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table if exists migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
+alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table if exists migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
+alter table if exists migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
+alter table if exists migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+drop index uq_migtest_e_basic_description cascade;
+alter table if exists migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
+drop index uq_migtest_e_basic_status_indextest1 cascade;
+drop index uq_migtest_e_basic_name cascade;
+drop index uq_migtest_e_basic_indextest4 cascade;
+drop index uq_migtest_e_basic_indextest5 cascade;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
+-- apply changes
+create table migtest_e_ref (
+ id integer generated by default as identity not null,
+ name varchar(127) not null,
+ constraint uq_migtest_e_ref_name unique (name),
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status drop not null;
+alter table migtest_e_basic alter column status2 type varchar(1);
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file bytea;
+alter table migtest_e_basic add column old_boolean boolean default false not null;
+alter table migtest_e_basic add column old_boolean2 boolean;
+alter table migtest_e_basic add column eref_id integer;
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string drop not null;
+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 alter column test_number type integer;
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 drop not null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..6db145c5c
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/1.4__dropsFor_1.3.sql
@@ -0,0 +1,22 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+alter table migtest_ckey_parent drop column assoc_id;
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history5 drop column test_boolean;
+alter table migtest_e_softdelete drop column deleted;
+alter table migtest_oto_child drop column master_id;
+-- apply post alter
+drop table if exists migtest_e_user cascade;
+drop sequence if exists migtest_e_user_seq;
+drop table if exists migtest_mtm_c_migtest_mtm_m cascade;
+drop table if exists migtest_mtm_m_migtest_mtm_c cascade;
+drop table if exists migtest_mtm_m_phone_numbers cascade;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/R__order_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/idx_cockroach.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/idx_cockroach.migrations
new file mode 100644
index 000000000..680ddc8cb
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/cockroach/idx_cockroach.migrations
@@ -0,0 +1,7 @@
+246318791, 1.0__initial.sql
+1109849447, 1.1.sql
+240919209, 1.2__dropsFor_1.1.sql
+612721597, 1.3.sql
+-820814009, 1.4__dropsFor_1.3.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.0__initial.sql
new file mode 100644
index 000000000..cc23e8881
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.0__initial.sql
@@ -0,0 +1,241 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something varchar(255),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+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),
+ description_file blob(64M),
+ some_date timestamp,
+ old_boolean smallint default 0 default false not null,
+ old_boolean2 smallint default 0,
+ eref_id integer,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ 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 pk_migtest_e_basic primary key (id)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status varchar(1),
+ constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history primary key (id)
+);
+
+create table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ obsolete_string1 varchar(255),
+ obsolete_string2 varchar(255),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer,
+ test_number2 integer not null,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_ref (
+ id integer generated by default as identity not null,
+ name varchar(127) not null,
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history2 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history2 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history2 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history2 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history3 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history3 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history3 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history3 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history4 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history4 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history4 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history4 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history5 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history5 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history5 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history5 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history6 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history6 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history6 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history6 add period system_time (sys_period_start,sys_period_end);
+-- apply post alter
+create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys;
+create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys;
+create table migtest_e_history2_history (
+ id integer not null,
+ test_string varchar(255),
+ obsolete_string1 varchar(255),
+ obsolete_string2 varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+create table migtest_e_history3_history (
+ id integer not null,
+ test_string varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+create table migtest_e_history4_history (
+ id integer not null,
+ test_number integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+create table migtest_e_history5_history (
+ id integer not null,
+ test_number integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+create table migtest_e_history6_history (
+ id integer not null,
+ test_number1 integer,
+ test_number2 integer not null,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.1.sql
new file mode 100644
index 000000000..298982766
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.1.sql
@@ -0,0 +1,223 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_CASCADE_ONE_ID' and tabname = 'MIGTEST_FK_CASCADE') then
+ prepare stmt from 'alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_SET_NULL_ONE_ID' and tabname = 'MIGTEST_FK_SET_NULL') then
+ prepare stmt from 'alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS2' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_INDEXTEST2' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_INDEXTEST2') then
+ prepare stmt from 'drop index uq_migtest_e_basic_indextest2';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_INDEXTEST6' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_INDEXTEST6') then
+ prepare stmt from 'drop index uq_migtest_e_basic_indextest6';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_ENUM_TEST_STATUS' and tabname = 'MIGTEST_E_ENUM') then
+ prepare stmt from 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST1') then
+ prepare stmt from 'drop index ix_migtest_e_basic_indextest1';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST5') then
+ prepare stmt from 'drop index ix_migtest_e_basic_indextest5';
+ execute stmt;
+end if;
+end$$;
+-- apply changes
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- db2 does not support parial null indices :( - so we have to clean;
+update migtest_e_basic set status = 'N' where id = 1;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history3 drop versioning;
+alter table migtest_e_history4 drop versioning;
+alter table migtest_e_history5 drop versioning;
+
+-- 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 drop versioning;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 set data type varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 drop not null;
+alter table migtest_e_basic alter column user_id drop not null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field smallint default 0 default true not null;
+alter table migtest_e_basic add column new_boolean_field2 smallint default 0 default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history alter column test_string set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history');
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 varchar(255);
+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);
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history alter column test_string set not null;
+alter table migtest_e_history2_history add column test_string2 varchar(255);
+alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2_history add column new_column varchar(20);
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+alter table migtest_e_history4 alter column test_number set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history4');
+alter table migtest_e_history4_history alter column test_number set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history4_history');
+alter table migtest_e_history5 add column test_boolean smallint default 0 default false not null;
+alter table migtest_e_history5_history add column test_boolean smallint default 0 default false not null;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 drop not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6');
+alter table migtest_e_history6_history alter column test_number1 set not null;
+alter table migtest_e_history6_history alter column test_number2 drop not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6_history');
+alter table migtest_e_softdelete add column deleted smallint default 0 default false not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys;
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+create unique index uq_migtest_e_basic_status_indextest1 on migtest_e_basic(status,indextest1) exclude null keys;
+create unique index uq_migtest_e_basic_name on migtest_e_basic(name) exclude null keys;
+create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) exclude null keys;
+create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys;
+create table migtest_e_history_history (
+ id integer not null,
+ test_string bigint,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history add versioning use history table migtest_e_history_history;
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..7f78aa9b3
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.2__dropsFor_1.1.sql
@@ -0,0 +1,25 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+alter table migtest_e_history2 drop versioning;
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history drop column obsolete_string1;
+alter table migtest_e_history2_history drop column obsolete_string2;
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+-- apply post alter
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+drop table migtest_e_ref;
+delimiter $$
+begin
+if exists (select seqschema from syscat.sequences where seqschema = current_schema and seqname = 'MIGTEST_E_REF_SEQ') then
+ prepare stmt from 'drop sequence migtest_e_ref_seq';
+ execute stmt;
+end if;
+end$$;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.3.sql
new file mode 100644
index 000000000..557ab8d29
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.3.sql
@@ -0,0 +1,220 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_CKEY_DETAIL_PARENT' and tabname = 'MIGTEST_CKEY_DETAIL') then
+ prepare stmt from 'alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_CASCADE_ONE_ID' and tabname = 'MIGTEST_FK_CASCADE') then
+ prepare stmt from 'alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_NONE_ONE_ID' and tabname = 'MIGTEST_FK_NONE') then
+ prepare stmt from 'alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_NONE_VIA_JOIN_ONE_ID' and tabname = 'MIGTEST_FK_NONE_VIA_JOIN') then
+ prepare stmt from 'alter table migtest_fk_none_via_join drop constraint fk_migtest_fk_none_via_join_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_SET_NULL_ONE_ID' and tabname = 'MIGTEST_FK_SET_NULL') then
+ prepare stmt from 'alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS2' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_DESCRIPTION' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_description';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_DESCRIPTION') then
+ prepare stmt from 'drop index uq_migtest_e_basic_description';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_E_BASIC_USER_ID' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_STATUS_INDEXTEST1' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_STATUS_INDEXTEST1') then
+ prepare stmt from 'drop index uq_migtest_e_basic_status_indextest1';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_NAME' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_name';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_NAME') then
+ prepare stmt from 'drop index uq_migtest_e_basic_name';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_INDEXTEST4' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_INDEXTEST4') then
+ prepare stmt from 'drop index uq_migtest_e_basic_indextest4';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_INDEXTEST5' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_INDEXTEST5') then
+ prepare stmt from 'drop index uq_migtest_e_basic_indextest5';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_ENUM_TEST_STATUS' and tabname = 'MIGTEST_E_ENUM') then
+ prepare stmt from 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST3') then
+ prepare stmt from 'drop index ix_migtest_e_basic_indextest3';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST6') then
+ prepare stmt from 'drop index ix_migtest_e_basic_indextest6';
+ execute stmt;
+end if;
+end$$;
+-- apply changes
+create table migtest_e_ref (
+ id integer generated by default as identity not null,
+ name varchar(127) not null,
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history3 drop versioning;
+alter table migtest_e_history4 drop versioning;
+alter table migtest_e_history6 drop versioning;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status drop not null;
+alter table migtest_e_basic alter column status2 set data type varchar(1);
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file blob(64M);
+alter table migtest_e_basic add column old_boolean smallint default 0 default false not null;
+alter table migtest_e_basic add column old_boolean2 smallint default 0;
+alter table migtest_e_basic add column eref_id integer;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string drop not null;
+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 alter column test_string drop not null;
+alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
+alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
+alter table migtest_e_history4 alter column test_number set data type integer;
+call sysproc.admin_cmd('reorg table migtest_e_history4');
+alter table migtest_e_history4_history alter column test_number set data type integer;
+call sysproc.admin_cmd('reorg table migtest_e_history4_history');
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 drop not null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6');
+alter table migtest_e_history6_history alter column test_number1 drop not null;
+alter table migtest_e_history6_history alter column test_number2 set not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6_history');
+-- apply post alter
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys;
+create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys;
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..5542a954f
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/1.4__dropsFor_1.3.sql
@@ -0,0 +1,53 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+alter table migtest_e_history drop versioning;
+alter table migtest_e_history drop period system_time;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history5 drop versioning;
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+call sysproc.admin_cmd('reorg table migtest_ckey_detail');
+alter table migtest_ckey_parent drop column assoc_id;
+call sysproc.admin_cmd('reorg table migtest_ckey_parent');
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history drop column sys_period_start;
+alter table migtest_e_history drop column sys_period_end;
+alter table migtest_e_history drop column sys_period_txn;
+call sysproc.admin_cmd('reorg table migtest_e_history');
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history drop column test_string2;
+alter table migtest_e_history2_history drop column test_string3;
+alter table migtest_e_history2_history drop column new_column;
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+alter table migtest_e_history5 drop column test_boolean;
+call sysproc.admin_cmd('reorg table migtest_e_history5');
+alter table migtest_e_history5_history drop column test_boolean;
+call sysproc.admin_cmd('reorg table migtest_e_history5_history');
+alter table migtest_e_softdelete drop column deleted;
+call sysproc.admin_cmd('reorg table migtest_e_softdelete');
+alter table migtest_oto_child drop column master_id;
+call sysproc.admin_cmd('reorg table migtest_oto_child');
+-- apply post alter
+drop table migtest_e_history_history;
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+drop table migtest_e_user;
+delimiter $$
+begin
+if exists (select seqschema from syscat.sequences where seqschema = current_schema and seqname = 'MIGTEST_E_USER_SEQ') then
+ prepare stmt from 'drop sequence migtest_e_user_seq';
+ execute stmt;
+end if;
+end$$;
+drop table migtest_mtm_c_migtest_mtm_m;
+drop table migtest_mtm_m_migtest_mtm_c;
+drop table migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/R__order_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/idx_db2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/idx_db2.migrations
new file mode 100644
index 000000000..7b05091cd
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2fori/idx_db2.migrations
@@ -0,0 +1,7 @@
+-1173442860, 1.0__initial.sql
+-504970252, 1.1.sql
+364066694, 1.2__dropsFor_1.1.sql
+-2046803765, 1.3.sql
+-1199420632, 1.4__dropsFor_1.3.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.0__initial.sql
new file mode 100644
index 000000000..cacec3063
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.0__initial.sql
@@ -0,0 +1,241 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+create table migtest_ckey_assoc (
+ id integer generated by default as identity not null,
+ assoc_one varchar(255),
+ constraint pk_migtest_ckey_assoc primary key (id)
+);
+
+create table migtest_ckey_detail (
+ id integer generated by default as identity not null,
+ something varchar(255),
+ constraint pk_migtest_ckey_detail primary key (id)
+);
+
+create table migtest_ckey_parent (
+ one_key integer not null,
+ two_key varchar(127) not null,
+ name varchar(255),
+ version integer not null,
+ constraint pk_migtest_ckey_parent primary key (one_key,two_key)
+);
+
+create table migtest_fk_cascade (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_cascade primary key (id)
+);
+
+create table migtest_fk_cascade_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_cascade_one primary key (id)
+);
+
+create table migtest_fk_none (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none primary key (id)
+);
+
+create table migtest_fk_none_via_join (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_none_via_join primary key (id)
+);
+
+create table migtest_fk_one (
+ id bigint generated by default as identity not null,
+ constraint pk_migtest_fk_one primary key (id)
+);
+
+create table migtest_fk_set_null (
+ id bigint generated by default as identity not null,
+ one_id bigint,
+ constraint pk_migtest_fk_set_null primary key (id)
+);
+
+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),
+ description_file blob(64M),
+ some_date timestamp,
+ old_boolean boolean default false not null,
+ old_boolean2 boolean,
+ eref_id integer,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ 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)
+);
+
+create table migtest_e_enum (
+ id integer generated by default as identity not null,
+ test_status varchar(1),
+ constraint ck_mgtst__n_773sok check ( test_status in ('N','A','I')),
+ constraint pk_migtest_e_enum primary key (id)
+);
+
+create table migtest_e_history (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history primary key (id)
+);
+
+create table migtest_e_history2 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ obsolete_string1 varchar(255),
+ obsolete_string2 varchar(255),
+ constraint pk_migtest_e_history2 primary key (id)
+);
+
+create table migtest_e_history3 (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_history3 primary key (id)
+);
+
+create table migtest_e_history4 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ constraint pk_migtest_e_history4 primary key (id)
+);
+
+create table migtest_e_history5 (
+ id integer generated by default as identity not null,
+ test_number integer,
+ constraint pk_migtest_e_history5 primary key (id)
+);
+
+create table migtest_e_history6 (
+ id integer generated by default as identity not null,
+ test_number1 integer,
+ test_number2 integer not null,
+ constraint pk_migtest_e_history6 primary key (id)
+);
+
+create table migtest_e_ref (
+ id integer generated by default as identity not null,
+ name varchar(127) not null,
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+create table migtest_e_softdelete (
+ id integer generated by default as identity not null,
+ test_string varchar(255),
+ constraint pk_migtest_e_softdelete primary key (id)
+);
+
+create table migtest_mtm_c (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_c primary key (id)
+);
+
+create table migtest_mtm_m (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_mtm_m primary key (id)
+);
+
+create table migtest_oto_child (
+ id integer generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_child primary key (id)
+);
+
+create table migtest_oto_master (
+ id bigint generated by default as identity not null,
+ name varchar(255),
+ constraint pk_migtest_oto_master primary key (id)
+);
+
+-- apply alter tables
+alter table migtest_e_history2 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history2 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history2 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history2 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history3 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history3 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history3 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history3 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history4 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history4 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history4 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history4 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history5 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history5 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history5 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history5 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history6 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history6 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history6 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history6 add period system_time (sys_period_start,sys_period_end);
+-- apply post alter
+create unique index uq_mgtst__b_4aybzy on migtest_e_basic(indextest2) exclude null keys;
+create unique index uq_mgtst__b_4ayc02 on migtest_e_basic(indextest6) exclude null keys;
+create table migtest_e_history2_history (
+ id integer not null,
+ test_string varchar(255),
+ obsolete_string1 varchar(255),
+ obsolete_string2 varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+create table migtest_e_history3_history (
+ id integer not null,
+ test_string varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+create table migtest_e_history4_history (
+ id integer not null,
+ test_number integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+create table migtest_e_history5_history (
+ id integer not null,
+ test_number integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+create table migtest_e_history6_history (
+ id integer not null,
+ test_number1 integer,
+ test_number2 integer not null,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+alter table migtest_e_ref add constraint uq_mgtst__rf_nm unique (name);
+-- foreign keys and indices
+create index ix_mgtst_fk_mok1xj on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_mgtst_fk_65kf6l foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+create index ix_mgtst_fk_c4p3mv on migtest_fk_set_null (one_id);
+alter table migtest_fk_set_null add constraint fk_mgtst_fk_wicx8x foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+
+create index ix_mgtst__bsc_rf_d on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_mgtst__bsc_rf_d foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_mgtst__b_eu8csq on migtest_e_basic (indextest1);
+create index ix_mgtst__b_eu8csu on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.1.sql
new file mode 100644
index 000000000..4f0ea1cf5
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.1.sql
@@ -0,0 +1,223 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MGTST_FK_65KF6L' and tabname = 'MIGTEST_FK_CASCADE') then
+ prepare stmt from 'alter table migtest_fk_cascade drop constraint fk_mgtst_fk_65kf6l';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MGTST_FK_WICX8X' and tabname = 'MIGTEST_FK_SET_NULL') then
+ prepare stmt from 'alter table migtest_fk_set_null drop constraint fk_mgtst_fk_wicx8x';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MGTST__BSC_STTS' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_mgtst__bsc_stts';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MGTST__B_Z543FG' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_mgtst__b_z543fg';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MGTST__B_4AYBZY' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_mgtst__b_4aybzy';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MGTST__B_4AYBZY') then
+ prepare stmt from 'drop index uq_mgtst__b_4aybzy';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MGTST__B_4AYC02' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_mgtst__b_4ayc02';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MGTST__B_4AYC02') then
+ prepare stmt from 'drop index uq_mgtst__b_4ayc02';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MGTST__N_773SOK' and tabname = 'MIGTEST_E_ENUM') then
+ prepare stmt from 'alter table migtest_e_enum drop constraint ck_mgtst__n_773sok';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MGTST__B_EU8CSQ') then
+ prepare stmt from 'drop index ix_mgtst__b_eu8csq';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MGTST__B_EU8CSU') then
+ prepare stmt from 'drop index ix_mgtst__b_eu8csu';
+ execute stmt;
+end if;
+end$$;
+-- apply changes
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- db2 does not support parial null indices :( - so we have to clean;
+update migtest_e_basic set status = 'N' where id = 1;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history3 drop versioning;
+alter table migtest_e_history4 drop versioning;
+alter table migtest_e_history5 drop versioning;
+
+-- 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 drop versioning;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 set data type varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 drop not null;
+alter table migtest_e_basic alter column user_id drop not null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history alter column test_string set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history');
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 varchar(255);
+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);
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history alter column test_string set not null;
+alter table migtest_e_history2_history add column test_string2 varchar(255);
+alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2_history add column new_column varchar(20);
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+alter table migtest_e_history4 alter column test_number set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history4');
+alter table migtest_e_history4_history alter column test_number set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history4_history');
+alter table migtest_e_history5 add column test_boolean boolean default false not null;
+alter table migtest_e_history5_history add column test_boolean boolean default false not null;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 drop not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6');
+alter table migtest_e_history6_history alter column test_number1 set not null;
+alter table migtest_e_history6_history alter column test_number2 drop not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6_history');
+alter table migtest_e_softdelete add column deleted boolean default false not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_mgtst__bsc_stts check ( status in ('N','A','I','?'));
+create unique index uq_mgtst__b_vs45xo on migtest_e_basic(description) exclude null keys;
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_mgtst__b_l39g41 check ( progress in (0,1,2));
+create unique index uq_mgtst__b_ucfcne on migtest_e_basic(status,indextest1) exclude null keys;
+create unique index uq_mgtst__bsc_nm on migtest_e_basic(name) exclude null keys;
+create unique index uq_mgtst__b_4ayc00 on migtest_e_basic(indextest4) exclude null keys;
+create unique index uq_mgtst__b_4ayc01 on migtest_e_basic(indextest5) exclude null keys;
+create table migtest_e_history_history (
+ id integer not null,
+ test_string bigint,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history add versioning use history table migtest_e_history_history;
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+-- foreign keys and indices
+create index ix_mgtst_mt_3ug4ok on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mt_93awga foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_mgtst_mt_3ug4ou on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mt_93awgk foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_mgtst_mt_b7nbcu on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_mgtst_mt_ggi34k foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_mgtst_mt_b7nbck on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_mgtst_mt_ggi34a foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_mgtst_mt_do9ma3 on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_mgtst_mt_s8neid foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_mgtst_ck_e1qkb5 foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_mgtst_ck_x45o21 on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_mgtst_ck_da00mr foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_mgtst_fk_65kf6l foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_mgtst_fk_nn_n_d foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_mgtst_fk_9tknzj foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_mgtst_fk_wicx8x foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_mgtst__bsc_sr_d foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_mgtst_t__csyl38 foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_mgtst__b_eu8css on migtest_e_basic (indextest3);
+create index ix_mgtst__b_eu8csv on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..7f78aa9b3
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.2__dropsFor_1.1.sql
@@ -0,0 +1,25 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+alter table migtest_e_history2 drop versioning;
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history drop column obsolete_string1;
+alter table migtest_e_history2_history drop column obsolete_string2;
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+-- apply post alter
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+drop table migtest_e_ref;
+delimiter $$
+begin
+if exists (select seqschema from syscat.sequences where seqschema = current_schema and seqname = 'MIGTEST_E_REF_SEQ') then
+ prepare stmt from 'drop sequence migtest_e_ref_seq';
+ execute stmt;
+end if;
+end$$;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.3.sql
new file mode 100644
index 000000000..4dc9a692d
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.3.sql
@@ -0,0 +1,220 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MGTST_CK_E1QKB5' and tabname = 'MIGTEST_CKEY_DETAIL') then
+ prepare stmt from 'alter table migtest_ckey_detail drop constraint fk_mgtst_ck_e1qkb5';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MGTST_FK_65KF6L' and tabname = 'MIGTEST_FK_CASCADE') then
+ prepare stmt from 'alter table migtest_fk_cascade drop constraint fk_mgtst_fk_65kf6l';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MGTST_FK_NN_N_D' and tabname = 'MIGTEST_FK_NONE') then
+ prepare stmt from 'alter table migtest_fk_none drop constraint fk_mgtst_fk_nn_n_d';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MGTST_FK_9TKNZJ' and tabname = 'MIGTEST_FK_NONE_VIA_JOIN') then
+ prepare stmt from 'alter table migtest_fk_none_via_join drop constraint fk_mgtst_fk_9tknzj';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MGTST_FK_WICX8X' and tabname = 'MIGTEST_FK_SET_NULL') then
+ prepare stmt from 'alter table migtest_fk_set_null drop constraint fk_mgtst_fk_wicx8x';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MGTST__BSC_STTS' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_mgtst__bsc_stts';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MGTST__B_Z543FG' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_mgtst__b_z543fg';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MGTST__B_VS45XO' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_mgtst__b_vs45xo';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MGTST__B_VS45XO') then
+ prepare stmt from 'drop index uq_mgtst__b_vs45xo';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MGTST__BSC_SR_D' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint fk_mgtst__bsc_sr_d';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MGTST__B_UCFCNE' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_mgtst__b_ucfcne';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MGTST__B_UCFCNE') then
+ prepare stmt from 'drop index uq_mgtst__b_ucfcne';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MGTST__BSC_NM' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_mgtst__bsc_nm';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MGTST__BSC_NM') then
+ prepare stmt from 'drop index uq_mgtst__bsc_nm';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MGTST__B_4AYC00' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_mgtst__b_4ayc00';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MGTST__B_4AYC00') then
+ prepare stmt from 'drop index uq_mgtst__b_4ayc00';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MGTST__B_4AYC01' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_mgtst__b_4ayc01';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MGTST__B_4AYC01') then
+ prepare stmt from 'drop index uq_mgtst__b_4ayc01';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MGTST__N_773SOK' and tabname = 'MIGTEST_E_ENUM') then
+ prepare stmt from 'alter table migtest_e_enum drop constraint ck_mgtst__n_773sok';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MGTST__B_EU8CSS') then
+ prepare stmt from 'drop index ix_mgtst__b_eu8css';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MGTST__B_EU8CSV') then
+ prepare stmt from 'drop index ix_mgtst__b_eu8csv';
+ execute stmt;
+end if;
+end$$;
+-- apply changes
+create table migtest_e_ref (
+ id integer generated by default as identity not null,
+ name varchar(127) not null,
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history3 drop versioning;
+alter table migtest_e_history4 drop versioning;
+alter table migtest_e_history6 drop versioning;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status drop not null;
+alter table migtest_e_basic alter column status2 set data type varchar(1);
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file blob(64M);
+alter table migtest_e_basic add column old_boolean boolean default false not null;
+alter table migtest_e_basic add column old_boolean2 boolean;
+alter table migtest_e_basic add column eref_id integer;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string drop not null;
+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 alter column test_string drop not null;
+alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
+alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
+alter table migtest_e_history4 alter column test_number set data type integer;
+call sysproc.admin_cmd('reorg table migtest_e_history4');
+alter table migtest_e_history4_history alter column test_number set data type integer;
+call sysproc.admin_cmd('reorg table migtest_e_history4_history');
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 drop not null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6');
+alter table migtest_e_history6_history alter column test_number1 drop not null;
+alter table migtest_e_history6_history alter column test_number2 set not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6_history');
+-- apply post alter
+alter table migtest_e_ref add constraint uq_mgtst__rf_nm unique (name);
+alter table migtest_e_basic add constraint ck_mgtst__bsc_stts check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_mgtst__b_z543fg check ( status2 in ('N','A','I'));
+create unique index uq_mgtst__b_4aybzy on migtest_e_basic(indextest2) exclude null keys;
+create unique index uq_mgtst__b_4ayc02 on migtest_e_basic(indextest6) exclude null keys;
+alter table migtest_e_enum add constraint ck_mgtst__n_773sok check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_mgtst_fk_65kf6l foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_mgtst_fk_wicx8x foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_mgtst__bsc_rf_d on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_mgtst__bsc_rf_d foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_mgtst__b_eu8csq on migtest_e_basic (indextest1);
+create index ix_mgtst__b_eu8csu on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..5542a954f
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/1.4__dropsFor_1.3.sql
@@ -0,0 +1,53 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+alter table migtest_e_history drop versioning;
+alter table migtest_e_history drop period system_time;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history5 drop versioning;
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+call sysproc.admin_cmd('reorg table migtest_ckey_detail');
+alter table migtest_ckey_parent drop column assoc_id;
+call sysproc.admin_cmd('reorg table migtest_ckey_parent');
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history drop column sys_period_start;
+alter table migtest_e_history drop column sys_period_end;
+alter table migtest_e_history drop column sys_period_txn;
+call sysproc.admin_cmd('reorg table migtest_e_history');
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history drop column test_string2;
+alter table migtest_e_history2_history drop column test_string3;
+alter table migtest_e_history2_history drop column new_column;
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+alter table migtest_e_history5 drop column test_boolean;
+call sysproc.admin_cmd('reorg table migtest_e_history5');
+alter table migtest_e_history5_history drop column test_boolean;
+call sysproc.admin_cmd('reorg table migtest_e_history5_history');
+alter table migtest_e_softdelete drop column deleted;
+call sysproc.admin_cmd('reorg table migtest_e_softdelete');
+alter table migtest_oto_child drop column master_id;
+call sysproc.admin_cmd('reorg table migtest_oto_child');
+-- apply post alter
+drop table migtest_e_history_history;
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+drop table migtest_e_user;
+delimiter $$
+begin
+if exists (select seqschema from syscat.sequences where seqschema = current_schema and seqname = 'MIGTEST_E_USER_SEQ') then
+ prepare stmt from 'drop sequence migtest_e_user_seq';
+ execute stmt;
+end if;
+end$$;
+drop table migtest_mtm_c_migtest_mtm_m;
+drop table migtest_mtm_m_migtest_mtm_c;
+drop table migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/R__order_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/idx_db2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/idx_db2.migrations
new file mode 100644
index 000000000..b3d6b8896
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2legacy/idx_db2.migrations
@@ -0,0 +1,7 @@
+1034179507, 1.0__initial.sql
+-1206845521, 1.1.sql
+364066694, 1.2__dropsFor_1.1.sql
+161683967, 1.3.sql
+-1199420632, 1.4__dropsFor_1.3.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql
index 6d8863446..d9e893947 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.0__initial.sql
@@ -75,9 +75,7 @@ create table migtest_e_basic (
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)
-) in TSTABLES index in INDEXTS long in TSTABLES;
-create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys;
-create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys;
+);
create table migtest_e_enum (
id integer generated by default as identity not null,
@@ -130,7 +128,6 @@ create table migtest_e_ref (
name varchar(127) not null,
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
create table migtest_e_softdelete (
id integer generated by default as identity not null,
@@ -162,14 +159,83 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+-- apply alter tables
+alter table migtest_e_history2 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history2 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history2 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history2 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history3 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history3 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history3 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history3 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history4 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history4 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history4 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history4 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history5 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history5 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history5 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history5 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history6 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history6 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history6 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history6 add period system_time (sys_period_start,sys_period_end);
+-- apply post alter
+create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys;
+create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys;
+create table migtest_e_history2_history (
+ id integer not null,
+ test_string varchar(255),
+ obsolete_string1 varchar(255),
+ obsolete_string2 varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+create table migtest_e_history3_history (
+ id integer not null,
+ test_string varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+create table migtest_e_history4_history (
+ id integer not null,
+ test_number integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+create table migtest_e_history5_history (
+ id integer not null,
+ test_number integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+create table migtest_e_history6_history (
+ id integer not null,
+ test_number1 integer,
+ test_number2 integer not null,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+-- foreign keys and indices
create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
create index ix_migtest_fk_set_null_one_id on 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;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql
index 720360470..77c49370e 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.1.sql
@@ -1,33 +1,5 @@
-- Migrationscripts for ebean unittest
--- apply changes
-create table migtest_e_user (
- id integer generated by default as identity not null,
- constraint pk_migtest_e_user primary key (id)
-);
-
-create table migtest_mtm_c_migtest_mtm_m (
- migtest_mtm_c_id integer not null,
- migtest_mtm_m_id bigint not null,
- constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
-) in TESTTS index in TESTTS long in TESTTS;
-
-create table migtest_mtm_m_migtest_mtm_c (
- migtest_mtm_m_id bigint not null,
- migtest_mtm_c_id integer not null,
- constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
-) in TSMASTER index in TSMASTER long in TSMASTER;
-
-create table migtest_mtm_m_phone_numbers (
- migtest_mtm_m_id bigint not null,
- value varchar(255) not null
-) in TSMASTER index in TSMASTER long in TSMASTER;
-
-alter table migtest_ckey_detail add column one_key integer;
-alter table migtest_ckey_detail add column two_key varchar(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict;
-alter table migtest_ckey_parent add column assoc_id integer;
-
+-- drop dependencies
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_CASCADE_ONE_ID' and tabname = 'MIGTEST_FK_CASCADE') then
@@ -35,9 +7,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict;
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict;
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict;
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_SET_NULL_ONE_ID' and tabname = 'MIGTEST_FK_SET_NULL') then
@@ -45,9 +14,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-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;
-
-update migtest_e_basic set status = 'A' where status is null;
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS' and tabname = 'MIGTEST_E_BASIC') then
@@ -55,9 +21,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-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','?'));
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS2' and tabname = 'MIGTEST_E_BASIC') then
@@ -65,28 +28,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-alter table migtest_e_basic alter column status2 set data type varchar(127);
-alter table migtest_e_basic alter column status2 drop default;
-alter table migtest_e_basic alter column status2 drop not null;
-
-call sysproc.admin_cmd('reorg table migtest_e_basic') /* reorg #1 */;
--- db2 does not support parial null indices :( - so we have to clean;
-update migtest_e_basic set status = 'N' where id = 1;
-create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys;
-
-insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict;
-alter table migtest_e_basic alter column user_id drop not null;
-alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
-alter table migtest_e_basic add column new_boolean_field boolean default true not null;
-call sysproc.admin_cmd('reorg table migtest_e_basic') /* reorg #2 */;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
-alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
-alter table migtest_e_basic add column progress integer default 0 not null;
-alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
-alter table migtest_e_basic add column new_integer integer default 42 not null;
-
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_INDEXTEST2' and tabname = 'MIGTEST_E_BASIC') then
@@ -115,11 +56,6 @@ if exists (select indname from syscat.indexes where indschema = current_schema a
execute stmt;
end if;
end$$;
-create unique index uq_migtest_e_basic_status_indextest1 on migtest_e_basic(status,indextest1) exclude null keys;
-create unique index uq_migtest_e_basic_name on migtest_e_basic(name) exclude null keys;
-create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) exclude null keys;
-create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys;
-CALL SYSPROC.ADMIN_MOVE_TABLE(CURRENT_SCHEMA,'MIGTEST_E_BASIC','USERSPACE1','USERSPACE1','USERSPACE1','','','','','','MOVE');
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_ENUM_TEST_STATUS' and tabname = 'MIGTEST_E_ENUM') then
@@ -127,39 +63,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-comment on column migtest_e_history.test_string is 'Column altered to long now';
-alter table migtest_e_history alter column test_string set data type bigint;
-comment on table migtest_e_history is 'We have history now';
-
-call sysproc.admin_cmd('reorg table migtest_e_history') /* reorg #3 */;
--- 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 column test_string set default 'unknown';
-alter table migtest_e_history2 alter column test_string set not null;
-alter table migtest_e_history2 add column test_string2 varchar(255);
-alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
-alter table migtest_e_history2 add column new_column varchar(20);
-
-alter table migtest_e_history4 alter column test_number set data type bigint;
-alter table migtest_e_history5 add column test_boolean boolean default false not null;
-
-
-call sysproc.admin_cmd('reorg table migtest_e_history2') /* reorg #4 */;
-call sysproc.admin_cmd('reorg table migtest_e_history4') /* reorg #5 */;
--- 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 column test_number1 set default 42;
-alter table migtest_e_history6 alter column test_number1 set not null;
-alter table migtest_e_history6 alter column test_number2 drop not null;
-alter table migtest_e_softdelete add column deleted boolean default false not null;
-
-CALL SYSPROC.ADMIN_MOVE_TABLE(CURRENT_SCHEMA,'MIGTEST_MTM_C','TESTTS','TESTTS','TESTTS','','','','','','MOVE');
-CALL SYSPROC.ADMIN_MOVE_TABLE(CURRENT_SCHEMA,'MIGTEST_MTM_M','TSMASTER','TSMASTER','TSMASTER','','','','','','MOVE');
-alter table migtest_oto_child add column master_id bigint;
-
-call sysproc.admin_cmd('reorg table migtest_e_history6') /* reorg #6 */;
-create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
delimiter $$
begin
if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST1') then
@@ -174,23 +77,147 @@ if exists (select indname from syscat.indexes where indschema = current_schema a
execute stmt;
end if;
end$$;
+-- apply changes
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- db2 does not support parial null indices :( - so we have to clean;
+update migtest_e_basic set status = 'N' where id = 1;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history3 drop versioning;
+alter table migtest_e_history4 drop versioning;
+alter table migtest_e_history5 drop versioning;
+
+-- 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 drop versioning;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 set data type varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 drop not null;
+alter table migtest_e_basic alter column user_id drop not null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history alter column test_string set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history');
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 varchar(255);
+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);
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history alter column test_string set not null;
+alter table migtest_e_history2_history add column test_string2 varchar(255);
+alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2_history add column new_column varchar(20);
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+alter table migtest_e_history4 alter column test_number set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history4');
+alter table migtest_e_history4_history alter column test_number set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history4_history');
+alter table migtest_e_history5 add column test_boolean boolean default false not null;
+alter table migtest_e_history5_history add column test_boolean boolean default false not null;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 drop not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6');
+alter table migtest_e_history6_history alter column test_number1 set not null;
+alter table migtest_e_history6_history alter column test_number2 drop not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6_history');
+alter table migtest_e_softdelete add column deleted boolean default false not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys;
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+create unique index uq_migtest_e_basic_status_indextest1 on migtest_e_basic(status,indextest1) exclude null keys;
+create unique index uq_migtest_e_basic_name on migtest_e_basic(name) exclude null keys;
+create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) exclude null keys;
+create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys;
+create table migtest_e_history_history (
+ id integer not null,
+ test_string bigint,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history add versioning use history table migtest_e_history_history;
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+-- foreign keys and indices
create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
-alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict;
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
-alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict;
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
-alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict;
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
-alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict;
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
-alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict;
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
-alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict;
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
-alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql
index 0a298bb91..7f78aa9b3 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.2__dropsFor_1.1.sql
@@ -1,17 +1,20 @@
-- Migrationscripts for ebean unittest
-- apply changes
+alter table migtest_e_history2 drop versioning;
+-- apply alter tables
alter table migtest_e_basic drop column description_file;
-
alter table migtest_e_basic drop column old_boolean;
-
alter table migtest_e_basic drop column old_boolean2;
-
alter table migtest_e_basic drop column eref_id;
-
+call sysproc.admin_cmd('reorg table migtest_e_basic');
alter table migtest_e_history2 drop column obsolete_string1;
-
alter table migtest_e_history2 drop column obsolete_string2;
-
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history drop column obsolete_string1;
+alter table migtest_e_history2_history drop column obsolete_string2;
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+-- apply post alter
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
drop table migtest_e_ref;
delimiter $$
begin
@@ -20,5 +23,3 @@ if exists (select seqschema from syscat.sequences where seqschema = current_sche
execute stmt;
end if;
end$$;
-call sysproc.admin_cmd('reorg table migtest_e_history2') /* reorg #1 */;
-call sysproc.admin_cmd('reorg table migtest_e_basic') /* reorg #2 */;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql
index 318f45de8..c0280ba4f 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.3.sql
@@ -1,12 +1,5 @@
-- Migrationscripts for ebean unittest
--- apply changes
-create table migtest_e_ref (
- id integer generated by default as identity not null,
- name varchar(127) not null,
- constraint pk_migtest_e_ref primary key (id)
-);
-alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
-
+-- drop dependencies
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_CKEY_DETAIL_PARENT' and tabname = 'MIGTEST_CKEY_DETAIL') then
@@ -21,7 +14,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_NONE_ONE_ID' and tabname = 'MIGTEST_FK_NONE') then
@@ -43,7 +35,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-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;
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS' and tabname = 'MIGTEST_E_BASIC') then
@@ -51,12 +42,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-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'));
-
-call sysproc.admin_cmd('reorg table migtest_e_basic') /* reorg #1 */;
-update migtest_e_basic set status2 = 'N' where status2 is null;
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS2' and tabname = 'MIGTEST_E_BASIC') then
@@ -64,10 +49,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-alter table migtest_e_basic alter column status2 set data 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'));
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_DESCRIPTION' and tabname = 'MIGTEST_E_BASIC') then
@@ -82,9 +63,6 @@ if exists (select indname from syscat.indexes where indschema = current_schema a
execute stmt;
end if;
end$$;
-
-call sysproc.admin_cmd('reorg table migtest_e_basic') /* reorg #2 */;
-update migtest_e_basic set user_id = 23 where user_id is null;
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_E_BASIC_USER_ID' and tabname = 'MIGTEST_E_BASIC') then
@@ -92,13 +70,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-alter table migtest_e_basic alter column user_id set default 23;
-alter table migtest_e_basic alter column user_id set not null;
-alter table migtest_e_basic add column description_file blob(64M);
-alter table migtest_e_basic add column old_boolean boolean default false not null;
-alter table migtest_e_basic add column old_boolean2 boolean;
-alter table migtest_e_basic add column eref_id integer;
-
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_STATUS_INDEXTEST1' and tabname = 'MIGTEST_E_BASIC') then
@@ -155,9 +126,6 @@ if exists (select indname from syscat.indexes where indschema = current_schema a
execute stmt;
end if;
end$$;
-call sysproc.admin_cmd('reorg table migtest_e_basic') /* reorg #3 */;
-create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys;
-create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys;
delimiter $$
begin
if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_ENUM_TEST_STATUS' and tabname = 'MIGTEST_E_ENUM') then
@@ -165,30 +133,6 @@ if exists (select constname from syscat.tabconst where tabschema = current_schem
execute stmt;
end if;
end$$;
-alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
-comment on column migtest_e_history.test_string is '';
-comment on table migtest_e_history is '';
-alter table migtest_e_history2 alter column test_string drop default;
-alter table migtest_e_history2 alter column test_string drop not null;
-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 alter column test_number set data type integer;
-alter table migtest_e_history6 alter column test_number1 drop default;
-alter table migtest_e_history6 alter column test_number1 drop not null;
-
-call sysproc.admin_cmd('reorg table migtest_e_history2') /* reorg #4 */;
-call sysproc.admin_cmd('reorg table migtest_e_history6') /* reorg #5 */;
-call sysproc.admin_cmd('reorg table migtest_e_history4') /* reorg #6 */;
--- 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 column test_number2 set default 7;
-alter table migtest_e_history6 alter column test_number2 set not null;
-CALL SYSPROC.ADMIN_MOVE_TABLE(CURRENT_SCHEMA,'MIGTEST_MTM_C','USERSPACE1','USERSPACE1','USERSPACE1','','','','','','MOVE');
-CALL SYSPROC.ADMIN_MOVE_TABLE(CURRENT_SCHEMA,'MIGTEST_MTM_M','USERSPACE1','USERSPACE1','USERSPACE1','','','','','','MOVE');
-call sysproc.admin_cmd('reorg table migtest_e_history6') /* reorg #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);
delimiter $$
begin
if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST3') then
@@ -203,6 +147,74 @@ if exists (select indname from syscat.indexes where indschema = current_schema a
execute stmt;
end if;
end$$;
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict;
+-- apply changes
+create table migtest_e_ref (
+ id integer generated by default as identity not null,
+ name varchar(127) not null,
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history3 drop versioning;
+alter table migtest_e_history4 drop versioning;
+alter table migtest_e_history6 drop versioning;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status drop not null;
+alter table migtest_e_basic alter column status2 set data type varchar(1);
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file blob(64M);
+alter table migtest_e_basic add column old_boolean boolean default false not null;
+alter table migtest_e_basic add column old_boolean2 boolean;
+alter table migtest_e_basic add column eref_id integer;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string drop not null;
+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 alter column test_string drop not null;
+alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
+alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
+alter table migtest_e_history4 alter column test_number set data type integer;
+call sysproc.admin_cmd('reorg table migtest_e_history4');
+alter table migtest_e_history4_history alter column test_number set data type integer;
+call sysproc.admin_cmd('reorg table migtest_e_history4_history');
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 drop not null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6');
+alter table migtest_e_history6_history alter column test_number1 drop not null;
+alter table migtest_e_history6_history alter column test_number2 set not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6_history');
+-- apply post alter
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys;
+create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys;
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql
index 582d359cb..5542a954f 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/1.4__dropsFor_1.3.sql
@@ -1,33 +1,45 @@
-- Migrationscripts for ebean unittest
-- apply changes
+alter table migtest_e_history drop versioning;
+alter table migtest_e_history drop period system_time;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history5 drop versioning;
+-- apply alter tables
alter table migtest_ckey_detail drop column one_key;
-
alter table migtest_ckey_detail drop column two_key;
-
+call sysproc.admin_cmd('reorg table migtest_ckey_detail');
alter table migtest_ckey_parent drop column assoc_id;
-
+call sysproc.admin_cmd('reorg table migtest_ckey_parent');
alter table migtest_e_basic drop column new_string_field;
-
alter table migtest_e_basic drop column new_boolean_field;
-
alter table migtest_e_basic drop column new_boolean_field2;
-
alter table migtest_e_basic drop column progress;
-
alter table migtest_e_basic drop column new_integer;
-
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history drop column sys_period_start;
+alter table migtest_e_history drop column sys_period_end;
+alter table migtest_e_history drop column sys_period_txn;
+call sysproc.admin_cmd('reorg table migtest_e_history');
alter table migtest_e_history2 drop column test_string2;
-
alter table migtest_e_history2 drop column test_string3;
-
alter table migtest_e_history2 drop column new_column;
-
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history drop column test_string2;
+alter table migtest_e_history2_history drop column test_string3;
+alter table migtest_e_history2_history drop column new_column;
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
alter table migtest_e_history5 drop column test_boolean;
-
+call sysproc.admin_cmd('reorg table migtest_e_history5');
+alter table migtest_e_history5_history drop column test_boolean;
+call sysproc.admin_cmd('reorg table migtest_e_history5_history');
alter table migtest_e_softdelete drop column deleted;
-
+call sysproc.admin_cmd('reorg table migtest_e_softdelete');
alter table migtest_oto_child drop column master_id;
-
+call sysproc.admin_cmd('reorg table migtest_oto_child');
+-- apply post alter
+drop table migtest_e_history_history;
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
drop table migtest_e_user;
delimiter $$
begin
@@ -39,10 +51,3 @@ end$$;
drop table migtest_mtm_c_migtest_mtm_m;
drop table migtest_mtm_m_migtest_mtm_c;
drop table migtest_mtm_m_phone_numbers;
-call sysproc.admin_cmd('reorg table migtest_e_history2') /* reorg #1 */;
-call sysproc.admin_cmd('reorg table migtest_e_softdelete') /* reorg #2 */;
-call sysproc.admin_cmd('reorg table migtest_oto_child') /* reorg #3 */;
-call sysproc.admin_cmd('reorg table migtest_ckey_parent') /* reorg #4 */;
-call sysproc.admin_cmd('reorg table migtest_e_history5') /* reorg #5 */;
-call sysproc.admin_cmd('reorg table migtest_ckey_detail') /* reorg #6 */;
-call sysproc.admin_cmd('reorg table migtest_e_basic') /* reorg #7 */;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations
index a7f5f4887..17aaf2093 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2luw/idx_db2.migrations
@@ -1,9 +1,7 @@
--1602289007, I__create_tablespaces.sql
--366797192, 1.0__initial.sql
-2079409430, 1.1.sql
-2051718263, 1.2__dropsFor_1.1.sql
--746953026, 1.3.sql
-1293885677, 1.4__dropsFor_1.3.sql
--133543359, R__db2_explain_tables.sql
+-1345631840, 1.0__initial.sql
+2135835079, 1.1.sql
+364066694, 1.2__dropsFor_1.1.sql
+-1510901098, 1.3.sql
+-1199420632, 1.4__dropsFor_1.3.sql
561281075, R__order_views.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/h2/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.0__initial.sql
similarity index 67%
rename from ebean-test/src/test/resources/migrationtest/dbinit/h2/1.4.sql
rename to ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.0__initial.sql
index 04e2eec93..d9e893947 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/h2/1.4.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.0__initial.sql
@@ -60,7 +60,7 @@ create table migtest_e_basic (
status2 varchar(1) default 'N' not null,
name varchar(127),
description varchar(127),
- description_file blob,
+ description_file blob(64M),
some_date timestamp,
old_boolean boolean default false not null,
old_boolean2 boolean,
@@ -71,11 +71,9 @@ create table migtest_e_basic (
indextest4 varchar(127),
indextest5 varchar(127),
indextest6 varchar(127),
- user_id integer default 23 not null,
+ 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)
);
@@ -88,7 +86,7 @@ create table migtest_e_enum (
create table migtest_e_history (
id integer generated by default as identity not null,
- test_string bigint,
+ test_string varchar(255),
constraint pk_migtest_e_history primary key (id)
);
@@ -121,14 +119,13 @@ create table migtest_e_history5 (
create table migtest_e_history6 (
id integer generated by default as identity not null,
test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number2 integer not null,
constraint pk_migtest_e_history6 primary key (id)
);
create table migtest_e_ref (
id integer generated by default as identity not null,
name varchar(127) not null,
- constraint uq_migtest_e_ref_name unique (name),
constraint pk_migtest_e_ref primary key (id)
);
@@ -162,8 +159,75 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+-- apply alter tables
+alter table migtest_e_history2 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history2 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history2 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history2 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history3 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history3 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history3 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history3 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history4 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history4 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history4 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history4 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history5 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history5 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history5 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history5 add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history6 add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history6 add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history6 add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history6 add period system_time (sys_period_start,sys_period_end);
+-- apply post alter
+create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys;
+create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys;
+create table migtest_e_history2_history (
+ id integer not null,
+ test_string varchar(255),
+ obsolete_string1 varchar(255),
+ obsolete_string2 varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+create table migtest_e_history3_history (
+ id integer not null,
+ test_string varchar(255),
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+create table migtest_e_history4_history (
+ id integer not null,
+ test_number integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+create table migtest_e_history5_history (
+ id integer not null,
+ test_number integer,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+create table migtest_e_history6_history (
+ id integer not null,
+ test_number1 integer,
+ test_number2 integer not null,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+-- foreign keys and indices
create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
@@ -173,61 +237,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-alter table migtest_e_history2 add column sys_period_start timestamp default now();
-alter table migtest_e_history2 add column sys_period_end timestamp;
-create table migtest_e_history2_history(
- id integer,
- test_string varchar(255),
- obsolete_string1 varchar(255),
- obsolete_string2 varchar(255),
- sys_period_start timestamp,
- sys_period_end timestamp
-);
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-alter table migtest_e_history3 add column sys_period_start timestamp default now();
-alter table migtest_e_history3 add column sys_period_end timestamp;
-create table migtest_e_history3_history(
- id integer,
- test_string varchar(255),
- sys_period_start timestamp,
- sys_period_end timestamp
-);
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-alter table migtest_e_history4 add column sys_period_start timestamp default now();
-alter table migtest_e_history4 add column sys_period_end timestamp;
-create table migtest_e_history4_history(
- id integer,
- test_number integer,
- sys_period_start timestamp,
- sys_period_end timestamp
-);
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-alter table migtest_e_history5 add column sys_period_start timestamp default now();
-alter table migtest_e_history5 add column sys_period_end timestamp;
-create table migtest_e_history5_history(
- id integer,
- test_number integer,
- sys_period_start timestamp,
- sys_period_end timestamp
-);
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-alter table migtest_e_history6 add column sys_period_start timestamp default now();
-alter table migtest_e_history6 add column sys_period_end timestamp;
-create table migtest_e_history6_history(
- id integer,
- test_number1 integer,
- test_number2 integer,
- sys_period_start timestamp,
- sys_period_end timestamp
-);
-create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
-
-create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-create trigger migtest_e_history5_history_upd before update,delete on migtest_e_history5 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-create trigger migtest_e_history6_history_upd before update,delete on migtest_e_history6 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.1.sql
new file mode 100644
index 000000000..77c49370e
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.1.sql
@@ -0,0 +1,223 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_CASCADE_ONE_ID' and tabname = 'MIGTEST_FK_CASCADE') then
+ prepare stmt from 'alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_SET_NULL_ONE_ID' and tabname = 'MIGTEST_FK_SET_NULL') then
+ prepare stmt from 'alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS2' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_INDEXTEST2' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_INDEXTEST2') then
+ prepare stmt from 'drop index uq_migtest_e_basic_indextest2';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_INDEXTEST6' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_INDEXTEST6') then
+ prepare stmt from 'drop index uq_migtest_e_basic_indextest6';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_ENUM_TEST_STATUS' and tabname = 'MIGTEST_E_ENUM') then
+ prepare stmt from 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST1') then
+ prepare stmt from 'drop index ix_migtest_e_basic_indextest1';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST5') then
+ prepare stmt from 'drop index ix_migtest_e_basic_indextest5';
+ execute stmt;
+end if;
+end$$;
+-- apply changes
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- db2 does not support parial null indices :( - so we have to clean;
+update migtest_e_basic set status = 'N' where id = 1;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history3 drop versioning;
+alter table migtest_e_history4 drop versioning;
+alter table migtest_e_history5 drop versioning;
+
+-- 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 drop versioning;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 set data type varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 drop not null;
+alter table migtest_e_basic alter column user_id drop not null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history add column sys_period_start timestamp(12) not null generated always as row begin;
+alter table migtest_e_history add column sys_period_end timestamp(12) not null generated always as row end;
+alter table migtest_e_history add column sys_period_txn timestamp(12) generated always as transaction start id;
+alter table migtest_e_history add period system_time (sys_period_start,sys_period_end);
+alter table migtest_e_history alter column test_string set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history');
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 varchar(255);
+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);
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history alter column test_string set not null;
+alter table migtest_e_history2_history add column test_string2 varchar(255);
+alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2_history add column new_column varchar(20);
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+alter table migtest_e_history4 alter column test_number set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history4');
+alter table migtest_e_history4_history alter column test_number set data type bigint;
+call sysproc.admin_cmd('reorg table migtest_e_history4_history');
+alter table migtest_e_history5 add column test_boolean boolean default false not null;
+alter table migtest_e_history5_history add column test_boolean boolean default false not null;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 drop not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6');
+alter table migtest_e_history6_history alter column test_number1 set not null;
+alter table migtest_e_history6_history alter column test_number2 drop not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6_history');
+alter table migtest_e_softdelete add column deleted boolean default false not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+create unique index uq_migtest_e_basic_description on migtest_e_basic(description) exclude null keys;
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+create unique index uq_migtest_e_basic_status_indextest1 on migtest_e_basic(status,indextest1) exclude null keys;
+create unique index uq_migtest_e_basic_name on migtest_e_basic(name) exclude null keys;
+create unique index uq_migtest_e_basic_indextest4 on migtest_e_basic(indextest4) exclude null keys;
+create unique index uq_migtest_e_basic_indextest5 on migtest_e_basic(indextest5) exclude null keys;
+create table migtest_e_history_history (
+ id integer not null,
+ test_string bigint,
+ sys_period_start timestamp(12) not null,
+ sys_period_end timestamp(12) not null,
+ sys_period_txn timestamp(12)
+);
+alter table migtest_e_history add versioning use history table migtest_e_history_history;
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..7f78aa9b3
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.2__dropsFor_1.1.sql
@@ -0,0 +1,25 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+alter table migtest_e_history2 drop versioning;
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history drop column obsolete_string1;
+alter table migtest_e_history2_history drop column obsolete_string2;
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+-- apply post alter
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+drop table migtest_e_ref;
+delimiter $$
+begin
+if exists (select seqschema from syscat.sequences where seqschema = current_schema and seqname = 'MIGTEST_E_REF_SEQ') then
+ prepare stmt from 'drop sequence migtest_e_ref_seq';
+ execute stmt;
+end if;
+end$$;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.3.sql
new file mode 100644
index 000000000..c0280ba4f
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.3.sql
@@ -0,0 +1,220 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_CKEY_DETAIL_PARENT' and tabname = 'MIGTEST_CKEY_DETAIL') then
+ prepare stmt from 'alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_CASCADE_ONE_ID' and tabname = 'MIGTEST_FK_CASCADE') then
+ prepare stmt from 'alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_NONE_ONE_ID' and tabname = 'MIGTEST_FK_NONE') then
+ prepare stmt from 'alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_NONE_VIA_JOIN_ONE_ID' and tabname = 'MIGTEST_FK_NONE_VIA_JOIN') then
+ prepare stmt from 'alter table migtest_fk_none_via_join drop constraint fk_migtest_fk_none_via_join_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_FK_SET_NULL_ONE_ID' and tabname = 'MIGTEST_FK_SET_NULL') then
+ prepare stmt from 'alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_BASIC_STATUS2' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_DESCRIPTION' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_description';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_DESCRIPTION') then
+ prepare stmt from 'drop index uq_migtest_e_basic_description';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'FK_MIGTEST_E_BASIC_USER_ID' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_STATUS_INDEXTEST1' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_STATUS_INDEXTEST1') then
+ prepare stmt from 'drop index uq_migtest_e_basic_status_indextest1';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_NAME' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_name';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_NAME') then
+ prepare stmt from 'drop index uq_migtest_e_basic_name';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_INDEXTEST4' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_INDEXTEST4') then
+ prepare stmt from 'drop index uq_migtest_e_basic_indextest4';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'UQ_MIGTEST_E_BASIC_INDEXTEST5' and tabname = 'MIGTEST_E_BASIC') then
+ prepare stmt from 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5';
+ execute stmt;
+end if;
+end$$
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'UQ_MIGTEST_E_BASIC_INDEXTEST5') then
+ prepare stmt from 'drop index uq_migtest_e_basic_indextest5';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select constname from syscat.tabconst where tabschema = current_schema and constname = 'CK_MIGTEST_E_ENUM_TEST_STATUS' and tabname = 'MIGTEST_E_ENUM') then
+ prepare stmt from 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST3') then
+ prepare stmt from 'drop index ix_migtest_e_basic_indextest3';
+ execute stmt;
+end if;
+end$$;
+delimiter $$
+begin
+if exists (select indname from syscat.indexes where indschema = current_schema and indname = 'IX_MIGTEST_E_BASIC_INDEXTEST6') then
+ prepare stmt from 'drop index ix_migtest_e_basic_indextest6';
+ execute stmt;
+end if;
+end$$;
+-- apply changes
+create table migtest_e_ref (
+ id integer generated by default as identity not null,
+ name varchar(127) not null,
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history3 drop versioning;
+alter table migtest_e_history4 drop versioning;
+alter table migtest_e_history6 drop versioning;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status drop not null;
+alter table migtest_e_basic alter column status2 set data type varchar(1);
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file blob(64M);
+alter table migtest_e_basic add column old_boolean boolean default false not null;
+alter table migtest_e_basic add column old_boolean2 boolean;
+alter table migtest_e_basic add column eref_id integer;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string drop not null;
+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 alter column test_string drop not null;
+alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
+alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
+alter table migtest_e_history4 alter column test_number set data type integer;
+call sysproc.admin_cmd('reorg table migtest_e_history4');
+alter table migtest_e_history4_history alter column test_number set data type integer;
+call sysproc.admin_cmd('reorg table migtest_e_history4_history');
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 drop not null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6');
+alter table migtest_e_history6_history alter column test_number1 drop not null;
+alter table migtest_e_history6_history alter column test_number2 set not null;
+call sysproc.admin_cmd('reorg table migtest_e_history6_history');
+-- apply post alter
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+create unique index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) exclude null keys;
+create unique index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) exclude null keys;
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history3 add versioning use history table migtest_e_history3_history;
+alter table migtest_e_history4 add versioning use history table migtest_e_history4_history;
+alter table migtest_e_history6 add versioning use history table migtest_e_history6_history;
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..5542a954f
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/1.4__dropsFor_1.3.sql
@@ -0,0 +1,53 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+alter table migtest_e_history drop versioning;
+alter table migtest_e_history drop period system_time;
+alter table migtest_e_history2 drop versioning;
+alter table migtest_e_history5 drop versioning;
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+call sysproc.admin_cmd('reorg table migtest_ckey_detail');
+alter table migtest_ckey_parent drop column assoc_id;
+call sysproc.admin_cmd('reorg table migtest_ckey_parent');
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+call sysproc.admin_cmd('reorg table migtest_e_basic');
+alter table migtest_e_history drop column sys_period_start;
+alter table migtest_e_history drop column sys_period_end;
+alter table migtest_e_history drop column sys_period_txn;
+call sysproc.admin_cmd('reorg table migtest_e_history');
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+call sysproc.admin_cmd('reorg table migtest_e_history2');
+alter table migtest_e_history2_history drop column test_string2;
+alter table migtest_e_history2_history drop column test_string3;
+alter table migtest_e_history2_history drop column new_column;
+call sysproc.admin_cmd('reorg table migtest_e_history2_history');
+alter table migtest_e_history5 drop column test_boolean;
+call sysproc.admin_cmd('reorg table migtest_e_history5');
+alter table migtest_e_history5_history drop column test_boolean;
+call sysproc.admin_cmd('reorg table migtest_e_history5_history');
+alter table migtest_e_softdelete drop column deleted;
+call sysproc.admin_cmd('reorg table migtest_e_softdelete');
+alter table migtest_oto_child drop column master_id;
+call sysproc.admin_cmd('reorg table migtest_oto_child');
+-- apply post alter
+drop table migtest_e_history_history;
+alter table migtest_e_history2 add versioning use history table migtest_e_history2_history;
+alter table migtest_e_history5 add versioning use history table migtest_e_history5_history;
+drop table migtest_e_user;
+delimiter $$
+begin
+if exists (select seqschema from syscat.sequences where seqschema = current_schema and seqname = 'MIGTEST_E_USER_SEQ') then
+ prepare stmt from 'drop sequence migtest_e_user_seq';
+ execute stmt;
+end if;
+end$$;
+drop table migtest_mtm_c_migtest_mtm_m;
+drop table migtest_mtm_m_migtest_mtm_c;
+drop table migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/R__order_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/idx_db2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/idx_db2.migrations
new file mode 100644
index 000000000..17aaf2093
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/db2zos/idx_db2.migrations
@@ -0,0 +1,7 @@
+-1345631840, 1.0__initial.sql
+2135835079, 1.1.sql
+364066694, 1.2__dropsFor_1.1.sql
+-1510901098, 1.3.sql
+-1199420632, 1.4__dropsFor_1.3.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/hsqldb/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.0__initial.sql
similarity index 68%
rename from ebean-test/src/test/resources/migrationtest/dbinit/hsqldb/1.4.sql
rename to ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.0__initial.sql
index a9f62e162..d816db2f9 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/hsqldb/1.4.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.0__initial.sql
@@ -1,13 +1,13 @@
-- Migrationscripts for ebean unittest
-- apply changes
create table migtest_ckey_assoc (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
assoc_one varchar(255),
constraint pk_migtest_ckey_assoc primary key (id)
);
create table migtest_ckey_detail (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
something varchar(255),
constraint pk_migtest_ckey_detail primary key (id)
);
@@ -21,41 +21,41 @@ create table migtest_ckey_parent (
);
create table migtest_fk_cascade (
- id bigint generated by default as identity (start with 1) not null,
+ id bigint auto_increment not null,
one_id bigint,
constraint pk_migtest_fk_cascade primary key (id)
);
create table migtest_fk_cascade_one (
- id bigint generated by default as identity (start with 1) not null,
+ id bigint auto_increment not null,
constraint pk_migtest_fk_cascade_one primary key (id)
);
create table migtest_fk_none (
- id bigint generated by default as identity (start with 1) not null,
+ id bigint auto_increment not null,
one_id bigint,
constraint pk_migtest_fk_none primary key (id)
);
create table migtest_fk_none_via_join (
- id bigint generated by default as identity (start with 1) not null,
+ id bigint auto_increment not null,
one_id bigint,
constraint pk_migtest_fk_none_via_join primary key (id)
);
create table migtest_fk_one (
- id bigint generated by default as identity (start with 1) not null,
+ id bigint auto_increment not null,
constraint pk_migtest_fk_one primary key (id)
);
create table migtest_fk_set_null (
- id bigint generated by default as identity (start with 1) not null,
+ id bigint auto_increment not null,
one_id bigint,
constraint pk_migtest_fk_set_null primary key (id)
);
create table migtest_e_basic (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
status varchar(1),
status2 varchar(1) default 'N' not null,
name varchar(127),
@@ -71,7 +71,7 @@ create table migtest_e_basic (
indextest4 varchar(127),
indextest5 varchar(127),
indextest6 varchar(127),
- user_id integer default 23 not null,
+ 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),
@@ -80,20 +80,20 @@ create table migtest_e_basic (
);
create table migtest_e_enum (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
test_status varchar(1),
constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
constraint pk_migtest_e_enum primary key (id)
);
create table migtest_e_history (
- id integer generated by default as identity (start with 1) not null,
- test_string bigint,
+ id integer auto_increment not null,
+ test_string varchar(255),
constraint pk_migtest_e_history primary key (id)
);
create table migtest_e_history2 (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
test_string varchar(255),
obsolete_string1 varchar(255),
obsolete_string2 varchar(255),
@@ -101,69 +101,68 @@ create table migtest_e_history2 (
);
create table migtest_e_history3 (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
test_string varchar(255),
constraint pk_migtest_e_history3 primary key (id)
);
create table migtest_e_history4 (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
test_number integer,
constraint pk_migtest_e_history4 primary key (id)
);
create table migtest_e_history5 (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
test_number integer,
constraint pk_migtest_e_history5 primary key (id)
);
create table migtest_e_history6 (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number2 integer not null,
constraint pk_migtest_e_history6 primary key (id)
);
create table migtest_e_ref (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
name varchar(127) not null,
constraint uq_migtest_e_ref_name unique (name),
constraint pk_migtest_e_ref primary key (id)
);
create table migtest_e_softdelete (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
test_string varchar(255),
constraint pk_migtest_e_softdelete primary key (id)
);
create table migtest_mtm_c (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
name varchar(255),
constraint pk_migtest_mtm_c primary key (id)
);
create table migtest_mtm_m (
- id bigint generated by default as identity (start with 1) not null,
+ id bigint auto_increment not null,
name varchar(255),
constraint pk_migtest_mtm_m primary key (id)
);
create table migtest_oto_child (
- id integer generated by default as identity (start with 1) not null,
+ id integer auto_increment not null,
name varchar(255),
constraint pk_migtest_oto_child primary key (id)
);
create table migtest_oto_master (
- id bigint generated by default as identity (start with 1) not null,
+ id bigint auto_increment not null,
name varchar(255),
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+-- foreign keys and indices
create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
@@ -173,3 +172,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.1.sql
new file mode 100644
index 000000000..4397ca096
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.1.sql
@@ -0,0 +1,116 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
+-- apply changes
+create table migtest_e_user (
+ id integer auto_increment not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- rename all collisions;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 set null;
+alter table migtest_e_basic alter column user_id set null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history alter column test_string bigint;
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 varchar(255);
+alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2 add column new_column varchar(20);
+alter table migtest_e_history4 alter column test_number bigint;
+alter table migtest_e_history5 add column test_boolean boolean default false not null;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 set null;
+alter table migtest_e_softdelete add column deleted boolean default false not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..4ec79a34c
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.2__dropsFor_1.1.sql
@@ -0,0 +1,10 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+-- apply post alter
+drop table if exists migtest_e_ref;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.3.sql
new file mode 100644
index 000000000..9b70e9ce7
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.3.sql
@@ -0,0 +1,70 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
+alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
+alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
+-- apply changes
+create table migtest_e_ref (
+ id integer auto_increment not null,
+ name varchar(127) not null,
+ constraint uq_migtest_e_ref_name unique (name),
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status set null;
+alter table migtest_e_basic alter column status2 varchar(1);
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file blob;
+alter table migtest_e_basic add column old_boolean boolean default false not null;
+alter table migtest_e_basic add column old_boolean2 boolean;
+alter table migtest_e_basic add column eref_id integer;
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string set null;
+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 alter column test_number integer;
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 set null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..b4087d6d6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/1.4__dropsFor_1.3.sql
@@ -0,0 +1,21 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+alter table migtest_ckey_parent drop column assoc_id;
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history5 drop column test_boolean;
+alter table migtest_e_softdelete drop column deleted;
+alter table migtest_oto_child drop column master_id;
+-- apply post alter
+drop table if exists migtest_e_user;
+drop table if exists migtest_mtm_c_migtest_mtm_m;
+drop table if exists migtest_mtm_m_migtest_mtm_c;
+drop table if exists migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/generic/idx_generic.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/idx_generic.migrations
new file mode 100644
index 000000000..763650cdd
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/generic/idx_generic.migrations
@@ -0,0 +1,6 @@
+-1254950549, 1.0__initial.sql
+-905429129, 1.1.sql
+1279151426, 1.2__dropsFor_1.1.sql
+110210997, 1.3.sql
+80209848, 1.4__dropsFor_1.3.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.0__initial.sql
index af98aa479..70abeb07f 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.0__initial.sql
@@ -162,19 +162,18 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
alter table migtest_e_history2 add column sys_period_start timestamp default now();
alter table migtest_e_history2 add column sys_period_end timestamp;
+alter table migtest_e_history3 add column sys_period_start timestamp default now();
+alter table migtest_e_history3 add column sys_period_end timestamp;
+alter table migtest_e_history4 add column sys_period_start timestamp default now();
+alter table migtest_e_history4 add column sys_period_end timestamp;
+alter table migtest_e_history5 add column sys_period_start timestamp default now();
+alter table migtest_e_history5 add column sys_period_end timestamp;
+alter table migtest_e_history6 add column sys_period_start timestamp default now();
+alter table migtest_e_history6 add column sys_period_end timestamp;
+-- apply post alter
create table migtest_e_history2_history(
id integer,
test_string varchar(255),
@@ -184,9 +183,8 @@ create table migtest_e_history2_history(
sys_period_end timestamp
);
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-alter table migtest_e_history3 add column sys_period_start timestamp default now();
-alter table migtest_e_history3 add column sys_period_end timestamp;
create table migtest_e_history3_history(
id integer,
test_string varchar(255),
@@ -194,9 +192,8 @@ create table migtest_e_history3_history(
sys_period_end timestamp
);
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-alter table migtest_e_history4 add column sys_period_start timestamp default now();
-alter table migtest_e_history4 add column sys_period_end timestamp;
create table migtest_e_history4_history(
id integer,
test_number integer,
@@ -204,9 +201,8 @@ create table migtest_e_history4_history(
sys_period_end timestamp
);
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-alter table migtest_e_history5 add column sys_period_start timestamp default now();
-alter table migtest_e_history5 add column sys_period_end timestamp;
create table migtest_e_history5_history(
id integer,
test_number integer,
@@ -214,9 +210,8 @@ create table migtest_e_history5_history(
sys_period_end timestamp
);
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create trigger migtest_e_history5_history_upd before update,delete on migtest_e_history5 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-alter table migtest_e_history6 add column sys_period_start timestamp default now();
-alter table migtest_e_history6 add column sys_period_end timestamp;
create table migtest_e_history6_history(
id integer,
test_number1 integer,
@@ -225,9 +220,17 @@ create table migtest_e_history6_history(
sys_period_end timestamp
);
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
-
-create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
-create trigger migtest_e_history5_history_upd before update,delete on migtest_e_history5 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
create trigger migtest_e_history6_history_upd before update,delete on migtest_e_history6 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql
index f639a2e9b..a26867c07 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql
@@ -1,10 +1,14 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-drop view if exists migtest_e_history5_with_history;
-
+alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
-- apply changes
create table migtest_e_user (
id integer generated by default as identity not null,
@@ -28,57 +32,46 @@ create table migtest_mtm_m_phone_numbers (
value varchar(255) not null
);
-alter table migtest_ckey_detail add column one_key integer;
-alter table migtest_ckey_detail add column two_key varchar(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
-alter table migtest_ckey_parent add column assoc_id integer;
-
-alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_set_null drop constraint if exists 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 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);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
-alter table migtest_e_basic alter column user_id set null;
-alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
-alter table migtest_e_basic add column new_boolean_field boolean default true not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
-alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
-alter table migtest_e_basic add column progress integer default 0 not null;
-alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
-alter table migtest_e_basic add column new_integer integer default 42 not null;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
-alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
-comment on column migtest_e_history.test_string is 'Column altered to long now';
-alter table migtest_e_history alter column test_string bigint;
-comment on table migtest_e_history is '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;
+drop trigger migtest_e_history2_history_upd;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history3_history_upd;
+drop view migtest_e_history3_with_history;
+drop trigger migtest_e_history4_history_upd;
+drop view migtest_e_history4_with_history;
+drop trigger migtest_e_history5_history_upd;
+drop view migtest_e_history5_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+drop trigger migtest_e_history6_history_upd;
+drop view migtest_e_history6_with_history;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 set null;
+alter table migtest_e_basic alter column user_id set null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history add column sys_period_start timestamp default now();
+alter table migtest_e_history add column sys_period_end timestamp;
+alter table migtest_e_history alter column test_string bigint;
alter table migtest_e_history2 alter column test_string set default 'unknown';
alter table migtest_e_history2 alter column test_string set not null;
alter table migtest_e_history2 add column test_string2 varchar(255);
@@ -87,26 +80,49 @@ alter table migtest_e_history2 add column new_column varchar(20);
alter table migtest_e_history2_history add column test_string2 varchar(255);
alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown';
alter table migtest_e_history2_history add column new_column varchar(20);
-
alter table migtest_e_history4 alter column test_number bigint;
alter table migtest_e_history4_history alter column test_number bigint;
alter table migtest_e_history5 add column test_boolean boolean default false not null;
alter table migtest_e_history5_history add column test_boolean boolean default false;
-
-
--- 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 column test_number1 set default 42;
alter table migtest_e_history6 alter column test_number1 set not null;
alter table migtest_e_history6 alter column test_number2 set null;
+alter table migtest_e_history6_history alter column test_number2 set null;
alter table migtest_e_softdelete add column deleted boolean default false not null;
-
alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
-create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-drop index if exists ix_migtest_e_basic_indextest1;
-drop index if exists ix_migtest_e_basic_indextest5;
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+create trigger migtest_e_history_history_upd before update,delete on migtest_e_history for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create trigger migtest_e_history5_history_upd before update,delete on migtest_e_history5 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create trigger migtest_e_history6_history_upd before update,delete on migtest_e_history6 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+-- foreign keys and indices
create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
@@ -122,39 +138,16 @@ alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_
create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
-alter table migtest_e_history add column sys_period_start timestamp default now();
-alter table migtest_e_history add column sys_period_end timestamp;
-create table migtest_e_history_history(
- id integer,
- test_string bigint,
- sys_period_start timestamp,
- sys_period_end timestamp
-);
-create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
-
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-create trigger migtest_e_history_history_upd before update,delete on migtest_e_history for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
--- changes: [add test_string2, add test_string3, add new_column]
-drop trigger migtest_e_history2_history_upd;
-create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
--- changes: [exclude test_string]
-drop trigger migtest_e_history3_history_upd;
-create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
--- changes: [alter test_number]
-drop trigger migtest_e_history4_history_upd;
-create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
--- changes: [add test_boolean]
-drop trigger migtest_e_history5_history_upd;
-create trigger migtest_e_history5_history_upd before update,delete on migtest_e_history5 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.2__dropsFor_1.1.sql
index d19ef84f0..f3112c454 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.2__dropsFor_1.1.sql
@@ -1,26 +1,18 @@
-- Migrationscripts for ebean unittest
--- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-
-- apply changes
+drop trigger migtest_e_history2_history_upd;
+drop view migtest_e_history2_with_history;
+-- apply alter tables
alter table migtest_e_basic drop column description_file;
-
alter table migtest_e_basic drop column old_boolean;
-
alter table migtest_e_basic drop column old_boolean2;
-
alter table migtest_e_basic drop column eref_id;
-
alter table migtest_e_history2 drop column obsolete_string1;
-alter table migtest_e_history2_history drop column obsolete_string1;
-
alter table migtest_e_history2 drop column obsolete_string2;
+alter table migtest_e_history2_history drop column obsolete_string1;
alter table migtest_e_history2_history drop column obsolete_string2;
-
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
drop table if exists migtest_e_ref;
drop sequence if exists migtest_e_ref_seq;
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
--- changes: [drop obsolete_string1, drop obsolete_string2]
-drop trigger migtest_e_history2_history_upd;
-create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.3.sql
index b96413090..2b911cdd1 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.3.sql
@@ -1,9 +1,21 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-
+alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
+alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
+alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
-- apply changes
create table migtest_e_ref (
id integer generated by default as identity not null,
@@ -12,80 +24,68 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
-alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
-alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
-alter table migtest_fk_set_null drop constraint if exists 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 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;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+drop trigger migtest_e_history2_history_upd;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history3_history_upd;
+drop view migtest_e_history3_with_history;
+drop trigger migtest_e_history4_history_upd;
+drop view migtest_e_history4_with_history;
+drop trigger migtest_e_history6_history_upd;
+drop view migtest_e_history6_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status set null;
alter table migtest_e_basic alter column status2 varchar(1);
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;
-alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
alter table migtest_e_basic alter column user_id set default 23;
alter table migtest_e_basic alter column user_id set not null;
alter table migtest_e_basic add column description_file blob;
alter table migtest_e_basic add column old_boolean boolean default false not null;
alter table migtest_e_basic add column old_boolean2 boolean;
alter table migtest_e_basic add column eref_id integer;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
-alter table migtest_e_basic drop constraint 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_enum drop constraint if exists 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'));
-comment on column migtest_e_history.test_string is '';
-comment on table migtest_e_history is '';
alter table migtest_e_history2 alter column test_string drop default;
alter table migtest_e_history2 alter column test_string set null;
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 alter column test_string set null;
alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
-
alter table migtest_e_history4 alter column test_number integer;
alter table migtest_e_history4_history alter column test_number integer;
alter table migtest_e_history6 alter column test_number1 drop default;
alter table migtest_e_history6 alter column test_number1 set null;
-
--- 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 column test_number2 set default 7;
alter table migtest_e_history6 alter column test_number2 set not null;
-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 if exists ix_migtest_e_basic_indextest3;
-drop index if exists ix_migtest_e_basic_indextest6;
+alter table migtest_e_history6_history alter column test_number1 set null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create trigger migtest_e_history6_history_upd before update,delete on migtest_e_history6 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
--- changes: [add obsolete_string1, add obsolete_string2]
-drop trigger migtest_e_history2_history_upd;
-create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
--- changes: [include test_string]
-drop trigger migtest_e_history3_history_upd;
-create trigger migtest_e_history3_history_upd before update,delete on migtest_e_history3 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
--- changes: [alter test_number]
-drop trigger migtest_e_history4_history_upd;
-create trigger migtest_e_history4_history_upd before update,delete on migtest_e_history4 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.4__dropsFor_1.3.sql
index 6574eb2db..50e6ed546 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.4__dropsFor_1.3.sql
@@ -2,58 +2,41 @@
-- drop dependencies
drop trigger migtest_e_history_history_upd;
drop view migtest_e_history_with_history;
-alter table migtest_e_history drop column sys_period_start;
-alter table migtest_e_history drop column sys_period_end;
drop table migtest_e_history_history;
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history5_with_history;
-
-- apply changes
+drop trigger migtest_e_history2_history_upd;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history5_history_upd;
+drop view migtest_e_history5_with_history;
+-- apply alter tables
alter table migtest_ckey_detail drop column one_key;
-
alter table migtest_ckey_detail drop column two_key;
-
alter table migtest_ckey_parent drop column assoc_id;
-
alter table migtest_e_basic drop column new_string_field;
-
alter table migtest_e_basic drop column new_boolean_field;
-
alter table migtest_e_basic drop column new_boolean_field2;
-
alter table migtest_e_basic drop column progress;
-
alter table migtest_e_basic drop column new_integer;
-
+alter table migtest_e_history drop column sys_period_start;
+alter table migtest_e_history drop column sys_period_end;
alter table migtest_e_history2 drop column test_string2;
-alter table migtest_e_history2_history drop column test_string2;
-
alter table migtest_e_history2 drop column test_string3;
-alter table migtest_e_history2_history drop column test_string3;
-
alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history2_history drop column test_string2;
+alter table migtest_e_history2_history drop column test_string3;
alter table migtest_e_history2_history drop column new_column;
-
alter table migtest_e_history5 drop column test_boolean;
alter table migtest_e_history5_history drop column test_boolean;
-
alter table migtest_e_softdelete drop column deleted;
-
alter table migtest_oto_child drop column master_id;
-
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create trigger migtest_e_history5_history_upd before update,delete on migtest_e_history5 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
drop table if exists migtest_e_user;
drop sequence if exists migtest_e_user_seq;
drop table if exists migtest_mtm_c_migtest_mtm_m;
drop table if exists migtest_mtm_m_migtest_mtm_c;
drop table if exists migtest_mtm_m_phone_numbers;
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
--- changes: [drop test_string2, drop test_string3, drop new_column]
-drop trigger migtest_e_history2_history_upd;
-create trigger migtest_e_history2_history_upd before update,delete on migtest_e_history2 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
--- changes: [drop test_boolean]
-drop trigger migtest_e_history5_history_upd;
-create trigger migtest_e_history5_history_upd before update,delete on migtest_e_history5 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger";
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/idx_h2.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/idx_h2.migrations
index a91fe3b62..f9f669fc2 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/idx_h2.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/idx_h2.migrations
@@ -1,8 +1,8 @@
-817061778, 1.0__initial.sql
-1409369419, 1.1.sql
--1095443625, 1.2__dropsFor_1.1.sql
-62715852, 1.3.sql
-1549130952, 1.4__dropsFor_1.3.sql
+1200492722, 1.0__initial.sql
+-475634933, 1.1.sql
+-1366392410, 1.2__dropsFor_1.1.sql
+-323346059, 1.3.sql
+-1382108238, 1.4__dropsFor_1.3.sql
783227075, R__multi_comments.sql
561281075, R__order_views.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.0__initial.sql
index 38bc72854..8e9d37fd1 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.0__initial.sql
@@ -162,17 +162,8 @@ create column table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
--- explicit index "ix_migtest_e_basic_indextest1" for single column "indextest1" of table "migtest_e_basic" is not necessary;
--- explicit index "ix_migtest_e_basic_indextest5" for single column "indextest5" of table "migtest_e_basic" is not necessary;
--- explicit index "ix_migtest_fk_cascade_one_id" for single column "one_id" of table "migtest_fk_cascade" is not necessary;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
--- explicit index "ix_migtest_fk_set_null_one_id" for single column "one_id" of table "migtest_fk_set_null" is not necessary;
-alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
-
--- explicit index "ix_migtest_e_basic_eref_id" for single column "eref_id" of table "migtest_e_basic" is not necessary;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
+-- apply post alter
create column table migtest_e_history2_history (
id integer,
test_string nvarchar(255),
@@ -236,3 +227,15 @@ alter table migtest_e_history6 add (
);
alter table migtest_e_history6 add period for system_time(sys_period_start,sys_period_end);
alter table migtest_e_history6 add system versioning history table migtest_e_history6_history;
+-- foreign keys and indices
+-- explicit index "ix_migtest_fk_cascade_one_id" for single column "one_id" of table "migtest_fk_cascade" is not necessary;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+-- explicit index "ix_migtest_fk_set_null_one_id" for single column "one_id" of table "migtest_fk_set_null" is not necessary;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+
+-- explicit index "ix_migtest_e_basic_eref_id" for single column "eref_id" of table "migtest_e_basic" is not necessary;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+-- explicit index "ix_migtest_e_basic_indextest1" for single column "indextest1" of table "migtest_e_basic" is not necessary;
+-- explicit index "ix_migtest_e_basic_indextest5" for single column "indextest5" of table "migtest_e_basic" is not necessary;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.1.sql
index 0379b11ee..ba37717eb 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.1.sql
@@ -1,4 +1,56 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id;
+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_status';
+end;
+$$;
+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;
+$$;
+delimiter $$
+do
+begin
+declare exit handler for sql_error_code 397 begin end;
+exec 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2';
+end;
+$$;
+delimiter $$
+do
+begin
+declare exit handler for sql_error_code 397 begin end;
+exec 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6';
+end;
+$$;
+delimiter $$
+do
+begin
+declare exit handler for sql_error_code 397 begin end;
+exec 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
+end;
+$$;
+delimiter $$
+do
+begin
+declare exit handler for sql_error_code 261 begin end;
+exec 'drop index ix_migtest_e_basic_indextest1';
+end;
+$$;
+delimiter $$
+do
+begin
+declare exit handler for sql_error_code 261 begin end;
+exec 'drop index ix_migtest_e_basic_indextest5';
+end;
+$$;
-- apply changes
create column table migtest_e_user (
id integer generated by default as identity not null,
@@ -22,139 +74,83 @@ create column table migtest_mtm_m_phone_numbers (
value nvarchar(255) not null
);
-alter table migtest_ckey_detail add ( one_key integer);
-alter table migtest_ckey_detail add ( two_key nvarchar(127));
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
-alter table migtest_ckey_parent add ( assoc_id integer);
-
-alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-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 restrict on update restrict;
update migtest_e_basic set status = 'A' where status 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_status';
-end;
-$$;
-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;
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
-alter table migtest_e_basic alter ( user_id integer);
-alter table migtest_e_basic add ( new_string_field nvarchar(255) default 'foo''bar' not null);
-alter table migtest_e_basic add ( new_boolean_field boolean default true not null);
+
+-- 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 drop system versioning;
+alter table migtest_e_history3 drop system versioning;
+alter table migtest_e_history4 drop system versioning;
+alter table migtest_e_history5 drop system versioning;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+alter table migtest_e_history6 drop system versioning;
+-- apply alter tables
+alter table migtest_ckey_detail add (one_key integer,
+ two_key nvarchar(127));
+alter table migtest_ckey_parent add (assoc_id integer);
+alter table migtest_e_basic alter (status nvarchar(1) default 'A' not null,
+ status2 nvarchar(127) default null,
+ user_id integer);
+alter table migtest_e_basic add (new_string_field nvarchar(255) default 'foo''bar' not null,
+ new_boolean_field boolean default true not null,
+ new_boolean_field2 boolean default true not null,
+ progress integer default 0 not null,
+ new_integer integer default 42 not null);
+alter table migtest_e_history alter (test_string bigint);
+alter table migtest_e_history2 alter (test_string nvarchar(255) default 'unknown' not null);
+alter table migtest_e_history2 add (test_string2 nvarchar(255),
+ test_string3 nvarchar(255) default 'unknown' not null,
+ new_column nvarchar(20));
+alter table migtest_e_history2_history add (test_string2 nvarchar(255),
+ test_string3 nvarchar(255) default 'unknown',
+ new_column nvarchar(20));
+alter table migtest_e_history4 alter (test_number bigint);
+alter table migtest_e_history4_history alter (test_number bigint);
+alter table migtest_e_history5 add (test_boolean boolean default false not null);
+alter table migtest_e_history5_history add (test_boolean boolean default false);
+alter table migtest_e_history6 alter (test_number1 integer default 42 not null,
+ test_number2 integer);
+alter table migtest_e_history6_history alter (test_number2 integer);
+alter table migtest_e_softdelete add (deleted boolean default false not null);
+alter table migtest_oto_child add (master_id bigint);
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+-- cannot create unique index "uq_migtest_e_basic_description" on table "migtest_e_basic" with nullable columns;
+-- NOTE: table has @History - special migration may be necessary
update migtest_e_basic set new_boolean_field = old_boolean;
-alter table migtest_e_basic add ( new_boolean_field2 boolean default true not null);
-alter table migtest_e_basic add ( progress integer default 0 not null);
alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
-alter table migtest_e_basic add ( new_integer integer default 42 not null);
-
-delimiter $$
-do
-begin
-declare exit handler for sql_error_code 397 begin end;
-exec 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2';
-end;
-$$;
-delimiter $$
-do
-begin
-declare exit handler for sql_error_code 397 begin end;
-exec 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6';
-end;
-$$;
-- cannot create unique index "uq_migtest_e_basic_status_indextest1" on table "migtest_e_basic" with nullable columns;
-- cannot create unique index "uq_migtest_e_basic_name" on table "migtest_e_basic" with nullable columns;
-- cannot create unique index "uq_migtest_e_basic_indextest4" on table "migtest_e_basic" with nullable columns;
-- cannot create unique index "uq_migtest_e_basic_indextest5" on table "migtest_e_basic" with nullable columns;
-delimiter $$
-do
-begin
-declare exit handler for sql_error_code 397 begin end;
-exec 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
-end;
-$$;
+create column table migtest_e_history_history (
+ id integer,
+ test_string bigint,
+ sys_period_start timestamp,
+ sys_period_end timestamp
+);
+alter table migtest_e_history add (
+ sys_period_start TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW START,
+ sys_period_end TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW END
+);
+alter table migtest_e_history add period for system_time(sys_period_start,sys_period_end);
+alter table migtest_e_history add system versioning history table migtest_e_history_history;
comment on column migtest_e_history.test_string is 'Column altered to long now';
-alter table migtest_e_history alter ( test_string bigint);
comment on table migtest_e_history is 'We have history now';
-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_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 */;
-alter table migtest_e_history2 add ( test_string2 nvarchar(255));
-alter table migtest_e_history2 add ( test_string3 nvarchar(255) default 'unknown' not null);
-alter table migtest_e_history2 add ( new_column nvarchar(20));
-
-alter table migtest_e_history2_history add ( test_string2 nvarchar(255));
-alter table migtest_e_history2_history add ( test_string3 nvarchar(255) default 'unknown');
-alter table migtest_e_history2_history add ( new_column nvarchar(20));
-alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated /* 3 */;
-alter table migtest_e_history3 drop system versioning /* 4 */;
-alter table migtest_e_history3 add system versioning history table migtest_e_history3_history not validated /* 5 */;
-alter table migtest_e_history4 drop system versioning /* 6 */;
-alter table migtest_e_history4 alter ( test_number bigint);
-alter table migtest_e_history4_history alter ( test_number bigint);
-alter table migtest_e_history4 add system versioning history table migtest_e_history4_history not validated /* 7 */;
-alter table migtest_e_history5 drop system versioning /* 8 */;
-alter table migtest_e_history5 add ( test_boolean boolean default false not null);
-
-alter table migtest_e_history5_history add ( test_boolean boolean default false);
-alter table migtest_e_history5 add system versioning history table migtest_e_history5_history not validated /* 9 */;
-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_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 */;
-alter table migtest_e_history6 alter ( test_number2 integer);
-alter table migtest_e_history6_history alter ( test_number2 integer);
-alter table migtest_e_history6 add system versioning history table migtest_e_history6_history not validated /* 13 */;
-alter table migtest_e_softdelete add ( deleted boolean default false not null);
-
-alter table migtest_oto_child add ( master_id bigint);
-
--- explicit index "ix_migtest_e_basic_indextest3" for single column "indextest3" of table "migtest_e_basic" is not necessary;
--- explicit index "ix_migtest_e_basic_indextest6" for single column "indextest6" of table "migtest_e_basic" is not necessary;
-delimiter $$
-do
-begin
-declare exit handler for sql_error_code 261 begin end;
-exec 'drop index ix_migtest_e_basic_indextest1';
-end;
-$$;
-delimiter $$
-do
-begin
-declare exit handler for sql_error_code 261 begin end;
-exec 'drop index ix_migtest_e_basic_indextest5';
-end;
-$$;
+alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated;
+alter table migtest_e_history3 add system versioning history table migtest_e_history3_history not validated;
+alter table migtest_e_history4 add system versioning history table migtest_e_history4_history not validated;
+alter table migtest_e_history5 add system versioning history table migtest_e_history5_history not validated;
+alter table migtest_e_history6 add system versioning history table migtest_e_history6_history not validated;
+-- foreign keys and indices
-- explicit index "ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c" for single column "migtest_mtm_c_id" of table "migtest_mtm_c_migtest_mtm_m" is not necessary;
alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
@@ -170,20 +166,16 @@ alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_
-- explicit index "ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id" for single column "migtest_mtm_m_id" of table "migtest_mtm_m_phone_numbers" is not necessary;
alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
-- explicit index "ix_migtest_ckey_parent_assoc_id" for single column "assoc_id" of table "migtest_ckey_parent" is not necessary;
alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
-create column table migtest_e_history_history (
- id integer,
- test_string bigint,
- sys_period_start timestamp,
- sys_period_end timestamp
-);
-alter table migtest_e_history add (
- sys_period_start TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW START,
- sys_period_end TIMESTAMP NOT NULL GENERATED ALWAYS AS ROW END
-);
-alter table migtest_e_history add period for system_time(sys_period_start,sys_period_end);
-alter table migtest_e_history add system versioning history table migtest_e_history_history;
+-- explicit index "ix_migtest_e_basic_indextest3" for single column "indextest3" of table "migtest_e_basic" is not necessary;
+-- explicit index "ix_migtest_e_basic_indextest6" for single column "indextest6" of table "migtest_e_basic" is not necessary;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.2__dropsFor_1.1.sql
index c50f9687c..14a60d921 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.2__dropsFor_1.1.sql
@@ -1,21 +1,15 @@
-- Migrationscripts for ebean unittest
-- apply changes
+alter table migtest_e_history2 drop system versioning;
+-- apply alter tables
CALL usp_ebean_drop_column('migtest_e_basic', 'description_file');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean2');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'eref_id');
-
-alter table migtest_e_history2 drop system versioning /* 0 */;
CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string1');
-
-CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1');
-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 */;
CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string2');
-
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1');
CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string2');
-alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated /* 3 */;
+-- apply post alter
+alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated;
drop table migtest_e_ref cascade;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.3.sql
index 8090b369c..15a9882c9 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.3.sql
@@ -1,19 +1,10 @@
-- Migrationscripts for ebean unittest
--- apply changes
-create column table migtest_e_ref (
- id integer generated by default as identity not null,
- name nvarchar(127) not null,
- constraint uq_migtest_e_ref_name unique (name),
- constraint pk_migtest_e_ref primary key (id)
-);
-
+-- drop dependencies
alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent;
alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id;
alter table migtest_fk_none_via_join drop constraint fk_migtest_fk_none_via_join_one_id;
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 on update restrict;
delimiter $$
do
begin
@@ -21,10 +12,6 @@ declare exit handler for sql_error_code 397 begin end;
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 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
@@ -32,9 +19,6 @@ 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
@@ -42,15 +26,7 @@ declare exit handler for sql_error_code 397 begin end;
exec 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_description';
end;
$$;
-
-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 add ( description_file blob);
-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);
-
delimiter $$
do
begin
@@ -79,8 +55,6 @@ declare exit handler for sql_error_code 397 begin end;
exec 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5';
end;
$$;
--- cannot create unique index "uq_migtest_e_basic_indextest2" on table "migtest_e_basic" with nullable columns;
--- cannot create unique index "uq_migtest_e_basic_indextest6" on table "migtest_e_basic" with nullable columns;
delimiter $$
do
begin
@@ -88,41 +62,6 @@ declare exit handler for sql_error_code 397 begin end;
exec 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
end;
$$;
-alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
-comment on column migtest_e_history.test_string is '';
-comment on table migtest_e_history is '';
-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_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 */;
-alter table migtest_e_history2 add ( obsolete_string1 nvarchar(255));
-alter table migtest_e_history2 add ( obsolete_string2 nvarchar(255));
-
-alter table migtest_e_history2_history add ( obsolete_string1 nvarchar(255));
-alter table migtest_e_history2_history add ( obsolete_string2 nvarchar(255));
-alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated /* 3 */;
-alter table migtest_e_history3 drop system versioning /* 4 */;
-alter table migtest_e_history3 add system versioning history table migtest_e_history3_history not validated /* 5 */;
-alter table migtest_e_history4 drop system versioning /* 6 */;
-alter table migtest_e_history4 alter ( test_number decimal );
-alter table migtest_e_history4 alter ( test_number integer);
-alter table migtest_e_history4_history alter ( test_number decimal );
-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_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 */;
-
--- 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_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;
--- explicit index "ix_migtest_e_basic_indextest5" for single column "indextest5" of table "migtest_e_basic" is not necessary;
delimiter $$
do
begin
@@ -137,6 +76,64 @@ declare exit handler for sql_error_code 261 begin end;
exec 'drop index ix_migtest_e_basic_indextest6';
end;
$$;
+-- apply changes
+create column table migtest_e_ref (
+ id integer generated by default as identity not null,
+ name nvarchar(127) not null,
+ constraint uq_migtest_e_ref_name unique (name),
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+alter table migtest_e_history2 drop system versioning;
+alter table migtest_e_history3 drop system versioning;
+alter table migtest_e_history4 drop system versioning;
+alter table migtest_e_history6 drop system versioning;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter (status nvarchar(1) default null,
+ status2 nclob not null);
+alter table migtest_e_basic alter (status2 nvarchar(1) default 'N' not null,
+ user_id integer default 23 not null);
+alter table migtest_e_basic add (description_file blob,
+ old_boolean boolean default false not null,
+ old_boolean2 boolean,
+ eref_id integer);
+alter table migtest_e_history2 alter (test_string nvarchar(255) default null);
+alter table migtest_e_history2 add (obsolete_string1 nvarchar(255),
+ obsolete_string2 nvarchar(255));
+alter table migtest_e_history2_history alter (test_string nvarchar(255));
+alter table migtest_e_history2_history add (obsolete_string1 nvarchar(255),
+ obsolete_string2 nvarchar(255));
+alter table migtest_e_history4 alter (test_number decimal);
+alter table migtest_e_history4 alter (test_number integer);
+alter table migtest_e_history4_history alter (test_number decimal);
+alter table migtest_e_history4_history alter (test_number integer);
+alter table migtest_e_history6 alter (test_number1 integer default null,
+ test_number2 integer default 7 not null);
+alter table migtest_e_history6_history alter (test_number1 integer);
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+-- cannot create unique index "uq_migtest_e_basic_indextest2" on table "migtest_e_basic" with nullable columns;
+-- cannot create unique index "uq_migtest_e_basic_indextest6" on table "migtest_e_basic" with nullable columns;
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated;
+alter table migtest_e_history3 add system versioning history table migtest_e_history3_history not validated;
+alter table migtest_e_history4 add system versioning history table migtest_e_history4_history not validated;
+alter table migtest_e_history6 add system versioning history table migtest_e_history6_history not validated;
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
-- explicit index "ix_migtest_e_basic_eref_id" for single column "eref_id" of table "migtest_e_basic" is not necessary;
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+-- explicit index "ix_migtest_e_basic_indextest1" for single column "indextest1" of table "migtest_e_basic" is not necessary;
+-- explicit index "ix_migtest_e_basic_indextest5" for single column "indextest5" of table "migtest_e_basic" is not necessary;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.4__dropsFor_1.3.sql
index 526dc7287..d49afa4be 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/1.4__dropsFor_1.3.sql
@@ -4,48 +4,31 @@ alter table migtest_e_history drop system versioning;
alter table migtest_e_history drop period for system_time;
alter table migtest_e_history drop (sys_period_start,sys_period_end);
drop table migtest_e_history_history cascade;
-
-- apply changes
+alter table migtest_e_history2 drop system versioning;
+alter table migtest_e_history5 drop system versioning;
+-- apply alter tables
CALL usp_ebean_drop_column('migtest_ckey_detail', 'one_key');
-
CALL usp_ebean_drop_column('migtest_ckey_detail', 'two_key');
-
CALL usp_ebean_drop_column('migtest_ckey_parent', 'assoc_id');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'new_string_field');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field2');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'progress');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'new_integer');
-
-alter table migtest_e_history2 drop system versioning /* 0 */;
CALL usp_ebean_drop_column('migtest_e_history2', 'test_string2');
-
-CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string2');
-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 */;
CALL usp_ebean_drop_column('migtest_e_history2', 'test_string3');
-
-CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string3');
-alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated /* 3 */;
-alter table migtest_e_history2 drop system versioning /* 4 */;
CALL usp_ebean_drop_column('migtest_e_history2', 'new_column');
-
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string2');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string3');
CALL usp_ebean_drop_column('migtest_e_history2_history', 'new_column');
-alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated /* 5 */;
-alter table migtest_e_history5 drop system versioning /* 6 */;
CALL usp_ebean_drop_column('migtest_e_history5', 'test_boolean');
-
CALL usp_ebean_drop_column('migtest_e_history5_history', 'test_boolean');
-alter table migtest_e_history5 add system versioning history table migtest_e_history5_history not validated /* 7 */;
CALL usp_ebean_drop_column('migtest_e_softdelete', 'deleted');
-
CALL usp_ebean_drop_column('migtest_oto_child', 'master_id');
-
+-- apply post alter
+alter table migtest_e_history2 add system versioning history table migtest_e_history2_history not validated;
+alter table migtest_e_history5 add system versioning history table migtest_e_history5_history not validated;
drop table migtest_e_user cascade;
drop table migtest_mtm_c_migtest_mtm_m cascade;
drop table migtest_mtm_m_migtest_mtm_c cascade;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/I__create_procs.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/I__create_procs.sql
new file mode 100644
index 000000000..cec7863ac
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/I__create_procs.sql
@@ -0,0 +1,33 @@
+-- Inital script to create stored procedures etc for the hana platform
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_foreign_keys TABLE, COLUMN
+-- deletes all constraints and foreign keys referring to TABLE.COLUMN
+--
+CREATE OR REPLACE PROCEDURE usp_ebean_drop_foreign_keys(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256))
+AS
+BEGIN
+DECLARE foreign_key_names TABLE(CONSTRAINT_NAME NVARCHAR(256), TABLE_NAME NVARCHAR(256));
+DECLARE i INT;
+
+foreign_key_names = SELECT CONSTRAINT_NAME, TABLE_NAME FROM SYS.REFERENTIAL_CONSTRAINTS WHERE SCHEMA_NAME=CURRENT_SCHEMA AND TABLE_NAME=UPPER(:table_name) AND COLUMN_NAME=UPPER(:column_name);
+
+FOR I IN 1 .. RECORD_COUNT(:foreign_key_names) DO
+EXEC 'ALTER TABLE "' || ESCAPE_DOUBLE_QUOTES(:foreign_key_names.TABLE_NAME[i]) || '" DROP CONSTRAINT "' || ESCAPE_DOUBLE_QUOTES(:foreign_key_names.CONSTRAINT_NAME[i]) || '"';
+END FOR;
+
+END;
+$$
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN
+-- deletes the column and ensures that all indices and constraints are dropped first
+--
+CREATE OR REPLACE PROCEDURE usp_ebean_drop_column(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256))
+AS
+BEGIN
+CALL usp_ebean_drop_foreign_keys(table_name, column_name);
+EXEC 'ALTER TABLE "' || UPPER(ESCAPE_DOUBLE_QUOTES(table_name)) || '" DROP ("' || UPPER(ESCAPE_DOUBLE_QUOTES(column_name)) || '")';
+END;
+$$
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/idx_hana.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/idx_hana.migrations
index 8f3461ab1..56cd1a76d 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hana/idx_hana.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hana/idx_hana.migrations
@@ -1,7 +1,8 @@
-513351138, 1.0__initial.sql
--1152055114, 1.1.sql
-1830946249, 1.2__dropsFor_1.1.sql
-1073423108, 1.3.sql
-201970227, 1.4__dropsFor_1.3.sql
+-745347271, I__create_procs.sql
+881849401, 1.0__initial.sql
+-1990555725, 1.1.sql
+197547825, 1.2__dropsFor_1.1.sql
+1338960395, 1.3.sql
+1812245353, 1.4__dropsFor_1.3.sql
1906063401, R__order_views_hana.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql
index ad740f297..2daf407bc 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.0__initial.sql
@@ -162,8 +162,7 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+-- foreign keys and indices
create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
@@ -173,3 +172,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.1.sql
index 31569c927..0d1f86821 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.1.sql
@@ -1,4 +1,14 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
-- apply changes
create table migtest_e_user (
id integer generated by default as identity (start with 1) not null,
@@ -22,80 +32,60 @@ create table migtest_mtm_m_phone_numbers (
value varchar(255) not null
);
-alter table migtest_ckey_detail add column one_key integer;
-alter table migtest_ckey_detail add column two_key varchar(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
-alter table migtest_ckey_parent add column assoc_id integer;
-
-alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_set_null drop constraint if exists 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 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);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
-alter table migtest_e_basic alter column user_id set null;
-alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
-alter table migtest_e_basic add column new_boolean_field boolean default true not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
-alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
-alter table migtest_e_basic add column progress integer default 0 not null;
-alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
-alter table migtest_e_basic add column new_integer integer default 42 not null;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
-alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
-comment on column migtest_e_history.test_string is 'Column altered to long now';
-alter table migtest_e_history alter column test_string bigint;
-comment on table migtest_e_history is '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;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 set null;
+alter table migtest_e_basic alter column user_id set null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history alter column test_string bigint;
alter table migtest_e_history2 alter column test_string set default 'unknown';
alter table migtest_e_history2 alter column test_string set not null;
alter table migtest_e_history2 add column test_string2 varchar(255);
alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
alter table migtest_e_history2 add column new_column varchar(20);
-
alter table migtest_e_history4 alter column test_number bigint;
alter table migtest_e_history5 add column test_boolean boolean default false 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 alter column test_number1 set default 42;
alter table migtest_e_history6 alter column test_number1 set not null;
alter table migtest_e_history6 alter column test_number2 set null;
alter table migtest_e_softdelete add column deleted boolean default false not null;
-
alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
-create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-drop index if exists ix_migtest_e_basic_indextest1;
-drop index if exists ix_migtest_e_basic_indextest5;
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+-- foreign keys and indices
create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
@@ -111,8 +101,16 @@ alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_
create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.2__dropsFor_1.1.sql
index f38f547e1..f33b6874f 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.2__dropsFor_1.1.sql
@@ -1,16 +1,11 @@
-- Migrationscripts for ebean unittest
--- apply changes
+-- apply alter tables
alter table migtest_e_basic drop column description_file;
-
alter table migtest_e_basic drop column old_boolean;
-
alter table migtest_e_basic drop column old_boolean2;
-
alter table migtest_e_basic drop column eref_id;
-
alter table migtest_e_history2 drop column obsolete_string1;
-
alter table migtest_e_history2 drop column obsolete_string2;
-
+-- apply post alter
drop table if exists migtest_e_ref;
drop sequence if exists migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.3.sql
index ebdeba1c0..b3adec42a 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.3.sql
@@ -1,4 +1,21 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
+alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
+alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
-- apply changes
create table migtest_e_ref (
id integer generated by default as identity (start with 1) not null,
@@ -7,62 +24,47 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
-alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
-alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
-alter table migtest_fk_set_null drop constraint if exists 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 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;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status set null;
alter table migtest_e_basic alter column status2 varchar(1);
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;
-alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
alter table migtest_e_basic alter column user_id set default 23;
alter table migtest_e_basic alter column user_id set not null;
alter table migtest_e_basic add column description_file blob;
alter table migtest_e_basic add column old_boolean boolean default false not null;
alter table migtest_e_basic add column old_boolean2 boolean;
alter table migtest_e_basic add column eref_id integer;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
-alter table migtest_e_basic drop constraint 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_enum drop constraint if exists 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'));
-comment on column migtest_e_history.test_string is '';
-comment on table migtest_e_history is '';
alter table migtest_e_history2 alter column test_string drop default;
alter table migtest_e_history2 alter column test_string set null;
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 alter column test_number integer;
alter table migtest_e_history6 alter column test_number1 drop default;
alter table migtest_e_history6 alter column test_number1 set null;
-
--- 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 column test_number2 set default 7;
alter table migtest_e_history6 alter column test_number2 set not null;
-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 if exists ix_migtest_e_basic_indextest3;
-drop index if exists ix_migtest_e_basic_indextest6;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.4__dropsFor_1.3.sql
index 706cd2892..19c77f211 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/1.4__dropsFor_1.3.sql
@@ -1,33 +1,20 @@
-- Migrationscripts for ebean unittest
--- apply changes
+-- apply alter tables
alter table migtest_ckey_detail drop column one_key;
-
alter table migtest_ckey_detail drop column two_key;
-
alter table migtest_ckey_parent drop column assoc_id;
-
alter table migtest_e_basic drop column new_string_field;
-
alter table migtest_e_basic drop column new_boolean_field;
-
alter table migtest_e_basic drop column new_boolean_field2;
-
alter table migtest_e_basic drop column progress;
-
alter table migtest_e_basic drop column new_integer;
-
alter table migtest_e_history2 drop column test_string2;
-
alter table migtest_e_history2 drop column test_string3;
-
alter table migtest_e_history2 drop column new_column;
-
alter table migtest_e_history5 drop column test_boolean;
-
alter table migtest_e_softdelete drop column deleted;
-
alter table migtest_oto_child drop column master_id;
-
+-- apply post alter
drop table if exists migtest_e_user;
drop sequence if exists migtest_e_user_seq;
drop table if exists migtest_mtm_c_migtest_mtm_m;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations
index f9096bcde..32896a876 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/hsqldb/idx_hsqldb.migrations
@@ -1,7 +1,7 @@
-1469726733, 1.0__initial.sql
--865579750, 1.1.sql
--2077736415, 1.2__dropsFor_1.1.sql
--982162181, 1.3.sql
--1763496614, 1.4__dropsFor_1.3.sql
+442457363, 1.0__initial.sql
+-1664513570, 1.1.sql
+-300925212, 1.2__dropsFor_1.1.sql
+-612892741, 1.3.sql
+-972999284, 1.4__dropsFor_1.3.sql
861001272, R__order_views_hsqldb.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/mariadb/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.0__initial.sql
similarity index 97%
rename from ebean-test/src/test/resources/migrationtest/dbinit/mariadb/1.4.sql
rename to ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.0__initial.sql
index 2ca871a5b..a5d40b3ea 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/mariadb/1.4.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.0__initial.sql
@@ -71,7 +71,7 @@ create table migtest_e_basic (
indextest4 varchar(127),
indextest5 varchar(127),
indextest6 varchar(127),
- user_id integer default 23 not null,
+ user_id integer not null,
constraint uq_migtest_e_basic_indextest2 unique (indextest2),
constraint uq_migtest_e_basic_indextest6 unique (indextest6),
constraint pk_migtest_e_basic primary key (id)
@@ -85,7 +85,7 @@ create table migtest_e_enum (
create table migtest_e_history (
id integer auto_increment not null,
- test_string bigint,
+ test_string varchar(255),
constraint pk_migtest_e_history primary key (id)
);
@@ -118,7 +118,7 @@ create table migtest_e_history5 (
create table migtest_e_history6 (
id integer auto_increment not null,
test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number2 integer not null,
constraint pk_migtest_e_history6 primary key (id)
);
@@ -159,8 +159,13 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+-- apply alter tables
+alter table migtest_e_history2 add system versioning;
+alter table migtest_e_history3 add system versioning;
+alter table migtest_e_history4 add system versioning;
+alter table migtest_e_history5 add system versioning;
+alter table migtest_e_history6 add system versioning;
+-- foreign keys and indices
create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
@@ -170,8 +175,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-alter table migtest_e_history2 add system versioning;
-alter table migtest_e_history3 add system versioning;
-alter table migtest_e_history4 add system versioning;
-alter table migtest_e_history5 add system versioning;
-alter table migtest_e_history6 add system versioning;
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.1.sql
new file mode 100644
index 000000000..5068f4608
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.1.sql
@@ -0,0 +1,107 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest6;
+drop index ix_migtest_e_basic_indextest1 on migtest_e_basic;
+drop index ix_migtest_e_basic_indextest5 on migtest_e_basic;
+-- apply changes
+create table migtest_e_user (
+ id integer auto_increment not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- rename all collisions;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+SET @@system_versioning_alter_history = 1;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic modify status varchar(1) not null default 'A';
+alter table migtest_e_basic modify status2 varchar(127);
+alter table migtest_e_basic modify user_id integer;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null;
+alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history add system versioning;
+alter table migtest_e_history modify test_string bigint;
+alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown';
+alter table migtest_e_history2 add column test_string2 varchar(255);
+alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2 add column new_column varchar(20);
+alter table migtest_e_history4 modify test_number bigint;
+alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not null;
+alter table migtest_e_history6 modify test_number1 integer not null default 42;
+alter table migtest_e_history6 modify test_number2 integer;
+alter table migtest_e_softdelete add column deleted tinyint(1) default 0 not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+alter table migtest_e_history comment = 'We have history now';
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..52ed4e9c0
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.2__dropsFor_1.1.sql
@@ -0,0 +1,13 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+SET @@system_versioning_alter_history = 1;
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+-- apply post alter
+drop table if exists migtest_e_ref;
+drop sequence if exists migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.3.sql
new file mode 100644
index 000000000..86d0e6528
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.3.sql
@@ -0,0 +1,57 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_ckey_detail drop foreign key fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
+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_e_basic drop index uq_migtest_e_basic_description;
+alter table migtest_e_basic drop foreign key fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop index uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop index uq_migtest_e_basic_name;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest5;
+drop index ix_migtest_e_basic_indextest3 on migtest_e_basic;
+drop index ix_migtest_e_basic_indextest6 on migtest_e_basic;
+-- apply changes
+create table migtest_e_ref (
+ id integer auto_increment not null,
+ name varchar(127) not null,
+ constraint uq_migtest_e_ref_name unique (name),
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+SET @@system_versioning_alter_history = 1;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic modify status varchar(1);
+alter table migtest_e_basic modify status2 varchar(1) not null default 'N';
+alter table migtest_e_basic modify user_id integer not null default 23;
+alter table migtest_e_basic add column description_file longblob;
+alter table migtest_e_basic add column old_boolean tinyint(1) default 0 not null;
+alter table migtest_e_basic add column old_boolean2 tinyint(1);
+alter table migtest_e_basic add column eref_id integer;
+alter table migtest_e_history2 modify test_string varchar(255);
+alter table migtest_e_history2 add column obsolete_string1 varchar(255);
+alter table migtest_e_history2 add column obsolete_string2 varchar(255);
+alter table migtest_e_history4 modify test_number integer;
+alter table migtest_e_history6 modify test_number1 integer;
+alter table migtest_e_history6 modify test_number2 integer not null default 7;
+-- apply post alter
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_history comment = '';
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..b15ac579e
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/1.4__dropsFor_1.3.sql
@@ -0,0 +1,25 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+SET @@system_versioning_alter_history = 1;
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+alter table migtest_ckey_parent drop column assoc_id;
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+alter table migtest_e_history drop system versioning;
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history5 drop column test_boolean;
+alter table migtest_e_softdelete drop column deleted;
+alter table migtest_oto_child drop column master_id;
+-- apply post alter
+drop table if exists migtest_e_user;
+drop sequence if exists migtest_e_user_seq;
+drop table if exists migtest_mtm_c_migtest_mtm_m;
+drop table if exists migtest_mtm_m_migtest_mtm_c;
+drop table if exists migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/R__order_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/idx_mariadb.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/idx_mariadb.migrations
new file mode 100644
index 000000000..336dbf5d2
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb-noprocs/idx_mariadb.migrations
@@ -0,0 +1,7 @@
+-636344713, 1.0__initial.sql
+-1901679107, 1.1.sql
+-828985759, 1.2__dropsFor_1.1.sql
+903264949, 1.3.sql
+-446860935, 1.4__dropsFor_1.3.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql
index ea67bcb04..a5d40b3ea 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.0__initial.sql
@@ -159,8 +159,13 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+-- apply alter tables
+alter table migtest_e_history2 add system versioning;
+alter table migtest_e_history3 add system versioning;
+alter table migtest_e_history4 add system versioning;
+alter table migtest_e_history5 add system versioning;
+alter table migtest_e_history6 add system versioning;
+-- foreign keys and indices
create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
@@ -170,8 +175,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-alter table migtest_e_history2 add system versioning;
-alter table migtest_e_history3 add system versioning;
-alter table migtest_e_history4 add system versioning;
-alter table migtest_e_history5 add system versioning;
-alter table migtest_e_history6 add system versioning;
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.1.sql
index 04603643f..5068f4608 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.1.sql
@@ -1,4 +1,11 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest6;
+drop index ix_migtest_e_basic_indextest1 on migtest_e_basic;
+drop index ix_migtest_e_basic_indextest5 on migtest_e_basic;
-- apply changes
create table migtest_e_user (
id integer auto_increment not null,
@@ -22,74 +29,54 @@ create table migtest_mtm_m_phone_numbers (
value varchar(255) not null
);
-alter table migtest_ckey_detail add column one_key integer;
-alter table migtest_ckey_detail add column two_key varchar(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
-alter table migtest_ckey_parent add column assoc_id integer;
-
-alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-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 status2 varchar(127);
-- rename all collisions;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+SET @@system_versioning_alter_history = 1;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic modify status varchar(1) not null default 'A';
+alter table migtest_e_basic modify status2 varchar(127);
alter table migtest_e_basic modify user_id integer;
alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null;
alter table migtest_e_basic add column progress integer default 0 not null;
alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history add system versioning;
+alter table migtest_e_history modify test_string bigint;
+alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown';
+alter table migtest_e_history2 add column test_string2 varchar(255);
+alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2 add column new_column varchar(20);
+alter table migtest_e_history4 modify test_number bigint;
+alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not null;
+alter table migtest_e_history6 modify test_number1 integer not null default 42;
+alter table migtest_e_history6 modify test_number2 integer;
+alter table migtest_e_softdelete add column deleted tinyint(1) default 0 not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
-alter table migtest_e_basic drop index uq_migtest_e_basic_indextest2;
-alter table migtest_e_basic drop index uq_migtest_e_basic_indextest6;
alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
-alter table migtest_e_history modify test_string bigint;
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 add column test_string2 varchar(255);
-alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
-alter table migtest_e_history2 add column new_column varchar(20);
-
-alter table migtest_e_history4 modify test_number bigint;
-alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not null;
-
-
--- 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_number2 integer;
-alter table migtest_e_softdelete add column deleted tinyint(1) default 0 not null;
-
-alter table migtest_oto_child add column master_id bigint;
-
-create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-drop index ix_migtest_e_basic_indextest1 on migtest_e_basic;
-drop index ix_migtest_e_basic_indextest5 on migtest_e_basic;
+-- foreign keys and indices
create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
@@ -105,11 +92,16 @@ alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_
create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
-alter table migtest_e_history add system versioning;
-lock tables migtest_e_history3 write;
-unlock tables;
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.2__dropsFor_1.1.sql
index 70da35eb5..227ae4335 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.2__dropsFor_1.1.sql
@@ -1,16 +1,13 @@
-- Migrationscripts for ebean unittest
-- apply changes
+SET @@system_versioning_alter_history = 1;
+-- apply alter tables
CALL usp_ebean_drop_column('migtest_e_basic', 'description_file');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean2');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'eref_id');
-
CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string1');
-
CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string2');
-
+-- apply post alter
drop table if exists migtest_e_ref;
drop sequence if exists migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.3.sql
index c3f1dd68f..86d0e6528 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.3.sql
@@ -1,4 +1,18 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_ckey_detail drop foreign key fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
+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_e_basic drop index uq_migtest_e_basic_description;
+alter table migtest_e_basic drop foreign key fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop index uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop index uq_migtest_e_basic_name;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest5;
+drop index ix_migtest_e_basic_indextest3 on migtest_e_basic;
+drop index ix_migtest_e_basic_indextest6 on migtest_e_basic;
-- apply changes
create table migtest_e_ref (
id integer auto_increment not null,
@@ -7,56 +21,37 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_ckey_detail drop foreign key fk_migtest_ckey_detail_parent;
-alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-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 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;
+SET @@system_versioning_alter_history = 1;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic modify status varchar(1);
+alter table migtest_e_basic modify status2 varchar(1) not null default 'N';
+alter table migtest_e_basic modify user_id integer not null default 23;
alter table migtest_e_basic add column description_file longblob;
alter table migtest_e_basic add column old_boolean tinyint(1) default 0 not null;
alter table migtest_e_basic add column old_boolean2 tinyint(1);
alter table migtest_e_basic add column eref_id integer;
-
-alter table migtest_e_basic drop index uq_migtest_e_basic_status_indextest1;
-alter table migtest_e_basic drop index uq_migtest_e_basic_name;
-alter table migtest_e_basic drop index uq_migtest_e_basic_indextest4;
-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;
-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;
-drop index ix_migtest_e_basic_indextest6 on migtest_e_basic;
+alter table migtest_e_history6 modify test_number2 integer not null default 7;
+-- apply post alter
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_history comment = '';
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-lock tables migtest_e_history3 write;
-unlock tables;
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.4__dropsFor_1.3.sql
index 60767659b..abd31f737 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/1.4__dropsFor_1.3.sql
@@ -1,36 +1,25 @@
-- Migrationscripts for ebean unittest
-- apply changes
+SET @@system_versioning_alter_history = 1;
+-- apply alter tables
CALL usp_ebean_drop_column('migtest_ckey_detail', 'one_key');
-
CALL usp_ebean_drop_column('migtest_ckey_detail', 'two_key');
-
CALL usp_ebean_drop_column('migtest_ckey_parent', 'assoc_id');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'new_string_field');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field2');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'progress');
-
CALL usp_ebean_drop_column('migtest_e_basic', 'new_integer');
-
+alter table migtest_e_history drop system versioning;
CALL usp_ebean_drop_column('migtest_e_history2', 'test_string2');
-
CALL usp_ebean_drop_column('migtest_e_history2', 'test_string3');
-
CALL usp_ebean_drop_column('migtest_e_history2', 'new_column');
-
CALL usp_ebean_drop_column('migtest_e_history5', 'test_boolean');
-
CALL usp_ebean_drop_column('migtest_e_softdelete', 'deleted');
-
CALL usp_ebean_drop_column('migtest_oto_child', 'master_id');
-
+-- apply post alter
drop table if exists migtest_e_user;
drop sequence if exists migtest_e_user_seq;
drop table if exists migtest_mtm_c_migtest_mtm_m;
drop table if exists migtest_mtm_m_migtest_mtm_c;
drop table if exists migtest_mtm_m_phone_numbers;
-alter table migtest_e_history drop system versioning;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations
index d7958ff29..ddc777e23 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mariadb/idx_mariadb.migrations
@@ -1,8 +1,8 @@
1835064798, I__create_procs.sql
--616900688, 1.0__initial.sql
-128637084, 1.1.sql
--2098746494, 1.2__dropsFor_1.1.sql
--1744111309, 1.3.sql
-930722740, 1.4__dropsFor_1.3.sql
+-636344713, 1.0__initial.sql
+-1901679107, 1.1.sql
+2123392915, 1.2__dropsFor_1.1.sql
+903264949, 1.3.sql
+-692020559, 1.4__dropsFor_1.3.sql
561281075, R__order_views.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.0__initial.model.xml b/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.0__initial.model.xml
index 8bd06fa66..69b8c6851 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.0__initial.model.xml
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.0__initial.model.xml
@@ -37,7 +37,7 @@
-
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.1.model.xml b/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.1.model.xml
index fa5ff9b30..cab8491ca 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.1.model.xml
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.1.model.xml
@@ -46,7 +46,6 @@
-
@@ -55,15 +54,7 @@
-
-
- SET @@system_versioning_alter_history = 1
- update ${table} set ${column} = 'unknown' where ${column} is null
-
-
- update ${table} set ${column} = 'unknown' where ${column} is null
-
-
+
@@ -82,21 +73,19 @@
-
-
+
-
-
+
-
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.3.model.xml b/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.3.model.xml
index d607a5438..a8189b797 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.3.model.xml
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/model/1.3.model.xml
@@ -39,8 +39,6 @@
-
-
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.0__initial.sql
index 92ceaaf21..c3f5bfaf7 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.0__initial.sql
@@ -159,19 +159,18 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6);
alter table migtest_e_history2 add column sys_period_end datetime(6);
+alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history3 add column sys_period_end datetime(6);
+alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history4 add column sys_period_end datetime(6);
+alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history5 add column sys_period_end datetime(6);
+alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history6 add column sys_period_end datetime(6);
+-- apply post alter
create table migtest_e_history2_history(
id integer,
test_string varchar(255),
@@ -181,48 +180,7 @@ create table migtest_e_history2_history(
sys_period_end datetime(6)
);
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history3 add column sys_period_end datetime(6);
-create table migtest_e_history3_history(
- id integer,
- test_string varchar(255),
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history4 add column sys_period_end datetime(6);
-create table migtest_e_history4_history(
- id integer,
- test_number integer,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history5 add column sys_period_end datetime(6);
-create table migtest_e_history5_history(
- id integer,
- test_number integer,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history6 add column sys_period_end datetime(6);
-create table migtest_e_history6_history(
- id integer,
- test_number1 integer,
- test_number2 integer,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
-
+lock tables migtest_e_history2 write;
delimiter $$
create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
@@ -232,6 +190,16 @@ delimiter $$
create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
end$$
+unlock tables;
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+lock tables migtest_e_history3 write;
delimiter $$
create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
@@ -241,6 +209,16 @@ delimiter $$
create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
end$$
+unlock tables;
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
delimiter $$
create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
@@ -250,6 +228,16 @@ delimiter $$
create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
end$$
+unlock tables;
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
delimiter $$
create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
@@ -259,6 +247,17 @@ delimiter $$
create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
end$$
+unlock tables;
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
delimiter $$
create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
@@ -268,3 +267,17 @@ delimiter $$
create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
end$$
+unlock tables;
+
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.1.sql
index 16d54565f..01f05b8c1 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.1.sql
@@ -1,10 +1,11 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-drop view if exists migtest_e_history5_with_history;
-
+alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest6;
+drop index ix_migtest_e_basic_indextest1 on migtest_e_basic;
+drop index ix_migtest_e_basic_indextest5 on migtest_e_basic;
-- apply changes
create table migtest_e_user (
id integer auto_increment not null,
@@ -28,78 +29,154 @@ create table migtest_mtm_m_phone_numbers (
value varchar(255) not null
);
-alter table migtest_ckey_detail add column one_key integer;
-alter table migtest_ckey_detail add column two_key varchar(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
-alter table migtest_ckey_parent add column assoc_id integer;
-
-alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-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 status2 varchar(127);
-- rename all collisions;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
-alter table migtest_e_basic modify user_id integer;
-alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
-alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
-alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null;
-alter table migtest_e_basic add column progress integer default 0 not null;
-alter table migtest_e_basic add column new_integer integer default 42 not null;
-
-alter table migtest_e_basic drop index uq_migtest_e_basic_indextest2;
-alter table migtest_e_basic drop index uq_migtest_e_basic_indextest6;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
-alter table migtest_e_history modify test_string bigint;
-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;
+drop trigger migtest_e_history2_history_upd;
+drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history3_history_upd;
+drop trigger migtest_e_history3_history_del;
+drop view migtest_e_history3_with_history;
+drop trigger migtest_e_history4_history_upd;
+drop trigger migtest_e_history4_history_del;
+drop view migtest_e_history4_with_history;
+drop trigger migtest_e_history5_history_upd;
+drop trigger migtest_e_history5_history_del;
+drop view migtest_e_history5_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+drop trigger migtest_e_history6_history_upd;
+drop trigger migtest_e_history6_history_del;
+drop view migtest_e_history6_with_history;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic modify status varchar(1) not null default 'A';
+alter table migtest_e_basic modify status2 varchar(127);
+alter table migtest_e_basic modify user_id integer;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null;
+alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history add column sys_period_end datetime(6);
+alter table migtest_e_history modify test_string bigint;
+alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown';
alter table migtest_e_history2 add column test_string2 varchar(255);
alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
alter table migtest_e_history2 add column new_column varchar(20);
alter table migtest_e_history2_history add column test_string2 varchar(255);
alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown';
alter table migtest_e_history2_history add column new_column varchar(20);
-
alter table migtest_e_history4 modify test_number bigint;
alter table migtest_e_history4_history modify test_number bigint;
alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not null;
alter table migtest_e_history5_history add column test_boolean tinyint(1) default 0;
-
-
--- 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_history6_history modify test_number2 integer;
alter table migtest_e_softdelete add column deleted tinyint(1) default 0 not null;
-
alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
-create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-drop index ix_migtest_e_basic_indextest1 on migtest_e_basic;
-drop index ix_migtest_e_basic_indextest5 on migtest_e_basic;
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+lock tables migtest_e_history write;
+delimiter $$
+create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history_history_del before delete on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+end$$
+unlock tables;
+
+alter table migtest_e_history comment = 'We have history now';
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
+delimiter $$
+create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
+end$$
+unlock tables;
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+lock tables migtest_e_history3 write;
+delimiter $$
+create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+end$$
+unlock tables;
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
+delimiter $$
+create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+end$$
+unlock tables;
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
+delimiter $$
+create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+end$$
+unlock tables;
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
+delimiter $$
+create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+end$$
+unlock tables;
+-- foreign keys and indices
create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
@@ -115,85 +192,16 @@ alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_
create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
-alter table migtest_e_history add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history add column sys_period_end datetime(6);
-create table migtest_e_history_history(
- id integer,
- test_string bigint,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
-
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-delimiter $$
-create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin
- insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history_history_del before delete on migtest_e_history for each row begin
- insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
-end$$
-lock tables migtest_e_history2 write, migtest_e_history3 write, migtest_e_history4 write, migtest_e_history5 write;
--- changes: [add test_string2, add test_string3, add new_column]
-drop trigger migtest_e_history2_history_upd;
-drop trigger migtest_e_history2_history_del;
-delimiter $$
-create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
- insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
- insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
-end$$
--- changes: [exclude test_string]
-drop trigger migtest_e_history3_history_upd;
-drop trigger migtest_e_history3_history_del;
-delimiter $$
-create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
- insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
- insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
-end$$
--- changes: [alter test_number]
-drop trigger migtest_e_history4_history_upd;
-drop trigger migtest_e_history4_history_del;
-delimiter $$
-create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
- insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
- insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
-end$$
--- changes: [add test_boolean]
-drop trigger migtest_e_history5_history_upd;
-drop trigger migtest_e_history5_history_del;
-delimiter $$
-create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
- insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
- insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
-end$$
-unlock tables;
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.2__dropsFor_1.1.sql
index 68f5324da..47dc655fd 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.2__dropsFor_1.1.sql
@@ -1,29 +1,20 @@
-- Migrationscripts for ebean unittest
--- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-
-- apply changes
-CALL usp_ebean_drop_column('migtest_e_basic', 'description_file');
-
-CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean');
-
-CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean2');
-
-CALL usp_ebean_drop_column('migtest_e_basic', 'eref_id');
-
-CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string1');
-CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1');
-
-CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string2');
-CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string2');
-
-drop table if exists migtest_e_ref;
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-lock tables migtest_e_history2 write;
--- changes: [drop obsolete_string1, drop obsolete_string2]
drop trigger migtest_e_history2_history_upd;
drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+-- apply alter tables
+CALL usp_ebean_drop_column('migtest_e_basic', 'description_file');
+CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean');
+CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean2');
+CALL usp_ebean_drop_column('migtest_e_basic', 'eref_id');
+CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string1');
+CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string2');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string2');
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
delimiter $$
create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
@@ -34,3 +25,4 @@ create trigger migtest_e_history2_history_del before delete on migtest_e_history
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
end$$
unlock tables;
+drop table if exists migtest_e_ref;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.3.sql
index b3d9845a5..95c5ae773 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.3.sql
@@ -1,9 +1,18 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-
+alter table migtest_ckey_detail drop foreign key fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
+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_e_basic drop index uq_migtest_e_basic_description;
+alter table migtest_e_basic drop foreign key fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop index uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop index uq_migtest_e_basic_name;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest5;
+drop index ix_migtest_e_basic_indextest3 on migtest_e_basic;
+drop index ix_migtest_e_basic_indextest6 on migtest_e_basic;
-- apply changes
create table migtest_e_ref (
id integer auto_increment not null,
@@ -12,74 +21,50 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_ckey_detail drop foreign key fk_migtest_ckey_detail_parent;
-alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-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 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;
+drop trigger migtest_e_history2_history_upd;
+drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history3_history_upd;
+drop trigger migtest_e_history3_history_del;
+drop view migtest_e_history3_with_history;
+drop trigger migtest_e_history4_history_upd;
+drop trigger migtest_e_history4_history_del;
+drop view migtest_e_history4_with_history;
+drop trigger migtest_e_history6_history_upd;
+drop trigger migtest_e_history6_history_del;
+drop view migtest_e_history6_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic modify status varchar(1);
+alter table migtest_e_basic modify status2 varchar(1) not null default 'N';
+alter table migtest_e_basic modify user_id integer not null default 23;
alter table migtest_e_basic add column description_file longblob;
alter table migtest_e_basic add column old_boolean tinyint(1) default 0 not null;
alter table migtest_e_basic add column old_boolean2 tinyint(1);
alter table migtest_e_basic add column eref_id integer;
-
-alter table migtest_e_basic drop index uq_migtest_e_basic_status_indextest1;
-alter table migtest_e_basic drop index uq_migtest_e_basic_name;
-alter table migtest_e_basic drop index uq_migtest_e_basic_indextest4;
-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_history2_history modify test_string varchar(255);
alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
-
alter table migtest_e_history4 modify test_number integer;
alter table migtest_e_history4_history modify test_number integer;
-alter table migtest_e_history6 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_oto_child add constraint uq_m12_otoc72 unique (name);
-alter table migtest_oto_master add constraint uq_migtest_oto_master_name unique (name);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_m12_otoc72 on migtest_oto_child (name);
-create index ix_migtest_oto_master_name on migtest_oto_master (name);
-drop index ix_migtest_e_basic_indextest3 on migtest_e_basic;
-drop index ix_migtest_e_basic_indextest6 on migtest_e_basic;
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+alter table migtest_e_history6 modify test_number2 integer not null default 7;
+alter table migtest_e_history6_history modify test_number1 integer;
+-- apply post alter
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_history comment = '';
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-lock tables migtest_e_history2 write, migtest_e_history3 write, migtest_e_history4 write;
--- changes: [add obsolete_string1, add obsolete_string2]
-drop trigger migtest_e_history2_history_upd;
-drop trigger migtest_e_history2_history_del;
+lock tables migtest_e_history2 write;
delimiter $$
create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column);
@@ -89,9 +74,9 @@ delimiter $$
create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column);
end$$
--- changes: [include test_string]
-drop trigger migtest_e_history3_history_upd;
-drop trigger migtest_e_history3_history_del;
+unlock tables;
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+lock tables migtest_e_history3 write;
delimiter $$
create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
@@ -101,9 +86,9 @@ delimiter $$
create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
end$$
--- changes: [alter test_number]
-drop trigger migtest_e_history4_history_upd;
-drop trigger migtest_e_history4_history_del;
+unlock tables;
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
delimiter $$
create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
@@ -114,3 +99,27 @@ create trigger migtest_e_history4_history_del before delete on migtest_e_history
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
end$$
unlock tables;
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
+delimiter $$
+create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+end$$
+unlock tables;
+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);
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+create index ix_m12_otoc72 on migtest_oto_child (name);
+create index ix_migtest_oto_master_name on migtest_oto_master (name);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.4__dropsFor_1.3.sql
index ff2e34d44..0cde3c7b2 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.4__dropsFor_1.3.sql
@@ -3,58 +3,39 @@
drop trigger migtest_e_history_history_upd;
drop trigger migtest_e_history_history_del;
drop view migtest_e_history_with_history;
-CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_start');
-CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_end');
drop table migtest_e_history_history;
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history5_with_history;
-
-- apply changes
-CALL usp_ebean_drop_column('migtest_ckey_detail', 'one_key');
-
-CALL usp_ebean_drop_column('migtest_ckey_detail', 'two_key');
-
-CALL usp_ebean_drop_column('migtest_ckey_parent', 'assoc_id');
-
-CALL usp_ebean_drop_column('migtest_e_basic', 'new_string_field');
-
-CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field');
-
-CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field2');
-
-CALL usp_ebean_drop_column('migtest_e_basic', 'progress');
-
-CALL usp_ebean_drop_column('migtest_e_basic', 'new_integer');
-
-CALL usp_ebean_drop_column('migtest_e_history2', 'test_string2');
-CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string2');
-
-CALL usp_ebean_drop_column('migtest_e_history2', 'test_string3');
-CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string3');
-
-CALL usp_ebean_drop_column('migtest_e_history2', 'new_column');
-CALL usp_ebean_drop_column('migtest_e_history2_history', 'new_column');
-
-CALL usp_ebean_drop_column('migtest_e_history5', 'test_boolean');
-CALL usp_ebean_drop_column('migtest_e_history5_history', 'test_boolean');
-
-CALL usp_ebean_drop_column('migtest_e_softdelete', 'deleted');
-
-CALL usp_ebean_drop_column('migtest_oto_child', 'master_id');
-
-drop table if exists migtest_e_user;
-drop table if exists migtest_mtm_c_migtest_mtm_m;
-drop table if exists migtest_mtm_m_migtest_mtm_c;
-drop table if exists migtest_mtm_m_phone_numbers;
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-lock tables migtest_e_history2 write, migtest_e_history5 write;
--- changes: [drop test_string2, drop test_string3, drop new_column]
drop trigger migtest_e_history2_history_upd;
drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history5_history_upd;
+drop trigger migtest_e_history5_history_del;
+drop view migtest_e_history5_with_history;
+-- apply alter tables
+CALL usp_ebean_drop_column('migtest_ckey_detail', 'one_key');
+CALL usp_ebean_drop_column('migtest_ckey_detail', 'two_key');
+CALL usp_ebean_drop_column('migtest_ckey_parent', 'assoc_id');
+CALL usp_ebean_drop_column('migtest_e_basic', 'new_string_field');
+CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field');
+CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field2');
+CALL usp_ebean_drop_column('migtest_e_basic', 'progress');
+CALL usp_ebean_drop_column('migtest_e_basic', 'new_integer');
+CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_start');
+CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_end');
+CALL usp_ebean_drop_column('migtest_e_history2', 'test_string2');
+CALL usp_ebean_drop_column('migtest_e_history2', 'test_string3');
+CALL usp_ebean_drop_column('migtest_e_history2', 'new_column');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string2');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string3');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'new_column');
+CALL usp_ebean_drop_column('migtest_e_history5', 'test_boolean');
+CALL usp_ebean_drop_column('migtest_e_history5_history', 'test_boolean');
+CALL usp_ebean_drop_column('migtest_e_softdelete', 'deleted');
+CALL usp_ebean_drop_column('migtest_oto_child', 'master_id');
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
delimiter $$
create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
@@ -64,9 +45,9 @@ delimiter $$
create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
end$$
--- changes: [drop test_boolean]
-drop trigger migtest_e_history5_history_upd;
-drop trigger migtest_e_history5_history_del;
+unlock tables;
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
delimiter $$
create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
@@ -77,3 +58,7 @@ create trigger migtest_e_history5_history_del before delete on migtest_e_history
insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
end$$
unlock tables;
+drop table if exists migtest_e_user;
+drop table if exists migtest_mtm_c_migtest_mtm_m;
+drop table if exists migtest_mtm_m_migtest_mtm_c;
+drop table if exists migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations
index 5dbbf2fd2..193b5ec78 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/idx_mysql.migrations
@@ -1,8 +1,8 @@
1835064798, I__create_procs.sql
-890673066, 1.0__initial.sql
--1627573867, 1.1.sql
-1986189381, 1.2__dropsFor_1.1.sql
-798979911, 1.3.sql
--1373040825, 1.4__dropsFor_1.3.sql
+-1623464972, 1.0__initial.sql
+-882132850, 1.1.sql
+-1332434945, 1.2__dropsFor_1.1.sql
+-1085730419, 1.3.sql
+379252952, 1.4__dropsFor_1.3.sql
561281075, R__order_views.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql
index a0d087761..4dcd2ae9f 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.0__initial.sql
@@ -159,19 +159,18 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6);
alter table migtest_e_history2 add column sys_period_end datetime(6);
+alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history3 add column sys_period_end datetime(6);
+alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history4 add column sys_period_end datetime(6);
+alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history5 add column sys_period_end datetime(6);
+alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history6 add column sys_period_end datetime(6);
+-- apply post alter
create table migtest_e_history2_history(
id integer,
test_string varchar(255),
@@ -181,48 +180,7 @@ create table migtest_e_history2_history(
sys_period_end datetime(6)
);
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history3 add column sys_period_end datetime(6);
-create table migtest_e_history3_history(
- id integer,
- test_string varchar(255),
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history4 add column sys_period_end datetime(6);
-create table migtest_e_history4_history(
- id integer,
- test_number integer,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history5 add column sys_period_end datetime(6);
-create table migtest_e_history5_history(
- id integer,
- test_number integer,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history6 add column sys_period_end datetime(6);
-create table migtest_e_history6_history(
- id integer,
- test_number1 integer,
- test_number2 integer,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
-
+lock tables migtest_e_history2 write;
delimiter $$
create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
@@ -232,6 +190,16 @@ delimiter $$
create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
end$$
+unlock tables;
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+lock tables migtest_e_history3 write;
delimiter $$
create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
@@ -241,6 +209,16 @@ delimiter $$
create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
end$$
+unlock tables;
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
delimiter $$
create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
@@ -250,6 +228,16 @@ delimiter $$
create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
end$$
+unlock tables;
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
delimiter $$
create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
@@ -259,6 +247,17 @@ delimiter $$
create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
end$$
+unlock tables;
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
delimiter $$
create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
@@ -268,3 +267,17 @@ delimiter $$
create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
end$$
+unlock tables;
+
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.1.sql
index 16d54565f..01f05b8c1 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.1.sql
@@ -1,10 +1,11 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-drop view if exists migtest_e_history5_with_history;
-
+alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop foreign key fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest6;
+drop index ix_migtest_e_basic_indextest1 on migtest_e_basic;
+drop index ix_migtest_e_basic_indextest5 on migtest_e_basic;
-- apply changes
create table migtest_e_user (
id integer auto_increment not null,
@@ -28,78 +29,154 @@ create table migtest_mtm_m_phone_numbers (
value varchar(255) not null
);
-alter table migtest_ckey_detail add column one_key integer;
-alter table migtest_ckey_detail add column two_key varchar(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
-alter table migtest_ckey_parent add column assoc_id integer;
-
-alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-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 status2 varchar(127);
-- rename all collisions;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
-alter table migtest_e_basic modify user_id integer;
-alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
-alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
-alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null;
-alter table migtest_e_basic add column progress integer default 0 not null;
-alter table migtest_e_basic add column new_integer integer default 42 not null;
-
-alter table migtest_e_basic drop index uq_migtest_e_basic_indextest2;
-alter table migtest_e_basic drop index uq_migtest_e_basic_indextest6;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
-alter table migtest_e_history modify test_string bigint;
-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;
+drop trigger migtest_e_history2_history_upd;
+drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history3_history_upd;
+drop trigger migtest_e_history3_history_del;
+drop view migtest_e_history3_with_history;
+drop trigger migtest_e_history4_history_upd;
+drop trigger migtest_e_history4_history_del;
+drop view migtest_e_history4_with_history;
+drop trigger migtest_e_history5_history_upd;
+drop trigger migtest_e_history5_history_del;
+drop view migtest_e_history5_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+drop trigger migtest_e_history6_history_upd;
+drop trigger migtest_e_history6_history_del;
+drop view migtest_e_history6_with_history;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic modify status varchar(1) not null default 'A';
+alter table migtest_e_basic modify status2 varchar(127);
+alter table migtest_e_basic modify user_id integer;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field tinyint(1) default 1 not null;
+alter table migtest_e_basic add column new_boolean_field2 tinyint(1) default 1 not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history add column sys_period_start datetime(6) default now(6);
+alter table migtest_e_history add column sys_period_end datetime(6);
+alter table migtest_e_history modify test_string bigint;
+alter table migtest_e_history2 modify test_string varchar(255) not null default 'unknown';
alter table migtest_e_history2 add column test_string2 varchar(255);
alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
alter table migtest_e_history2 add column new_column varchar(20);
alter table migtest_e_history2_history add column test_string2 varchar(255);
alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown';
alter table migtest_e_history2_history add column new_column varchar(20);
-
alter table migtest_e_history4 modify test_number bigint;
alter table migtest_e_history4_history modify test_number bigint;
alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not null;
alter table migtest_e_history5_history add column test_boolean tinyint(1) default 0;
-
-
--- 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_history6_history modify test_number2 integer;
alter table migtest_e_softdelete add column deleted tinyint(1) default 0 not null;
-
alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
-create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-drop index ix_migtest_e_basic_indextest1 on migtest_e_basic;
-drop index ix_migtest_e_basic_indextest5 on migtest_e_basic;
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+lock tables migtest_e_history write;
+delimiter $$
+create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history_history_del before delete on migtest_e_history for each row begin
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
+end$$
+unlock tables;
+
+alter table migtest_e_history comment = 'We have history now';
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
+delimiter $$
+create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
+end$$
+unlock tables;
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+lock tables migtest_e_history3 write;
+delimiter $$
+create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
+end$$
+unlock tables;
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
+delimiter $$
+create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
+end$$
+unlock tables;
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
+delimiter $$
+create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
+end$$
+unlock tables;
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
+delimiter $$
+create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+end$$
+unlock tables;
+-- foreign keys and indices
create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
@@ -115,85 +192,16 @@ alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_
create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
-alter table migtest_e_history add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history add column sys_period_end datetime(6);
-create table migtest_e_history_history(
- id integer,
- test_string bigint,
- sys_period_start datetime(6),
- sys_period_end datetime(6)
-);
-create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
-
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-delimiter $$
-create trigger migtest_e_history_history_upd before update on migtest_e_history for each row begin
- insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history_history_del before delete on migtest_e_history for each row begin
- insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
-end$$
-lock tables migtest_e_history2 write, migtest_e_history3 write, migtest_e_history4 write, migtest_e_history5 write;
--- changes: [add test_string2, add test_string3, add new_column]
-drop trigger migtest_e_history2_history_upd;
-drop trigger migtest_e_history2_history_del;
-delimiter $$
-create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
- insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
- insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
-end$$
--- changes: [exclude test_string]
-drop trigger migtest_e_history3_history_upd;
-drop trigger migtest_e_history3_history_del;
-delimiter $$
-create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
- insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
- insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, now(6),OLD.id);
-end$$
--- changes: [alter test_number]
-drop trigger migtest_e_history4_history_upd;
-drop trigger migtest_e_history4_history_del;
-delimiter $$
-create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
- insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
- insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
-end$$
--- changes: [add test_boolean]
-drop trigger migtest_e_history5_history_upd;
-drop trigger migtest_e_history5_history_del;
-delimiter $$
-create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
- insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
- insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number, OLD.test_boolean);
-end$$
-unlock tables;
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.2__dropsFor_1.1.sql
index 7919e91da..47dc655fd 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.2__dropsFor_1.1.sql
@@ -1,29 +1,20 @@
-- Migrationscripts for ebean unittest
--- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-
-- apply changes
-alter table migtest_e_basic drop column description_file;
-
-alter table migtest_e_basic drop column old_boolean;
-
-alter table migtest_e_basic drop column old_boolean2;
-
-alter table migtest_e_basic drop column eref_id;
-
-alter table migtest_e_history2 drop column obsolete_string1;
-alter table migtest_e_history2_history drop column obsolete_string1;
-
-alter table migtest_e_history2 drop column obsolete_string2;
-alter table migtest_e_history2_history drop column obsolete_string2;
-
-drop table if exists migtest_e_ref;
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-lock tables migtest_e_history2 write;
--- changes: [drop obsolete_string1, drop obsolete_string2]
drop trigger migtest_e_history2_history_upd;
drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+-- apply alter tables
+CALL usp_ebean_drop_column('migtest_e_basic', 'description_file');
+CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean');
+CALL usp_ebean_drop_column('migtest_e_basic', 'old_boolean2');
+CALL usp_ebean_drop_column('migtest_e_basic', 'eref_id');
+CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string1');
+CALL usp_ebean_drop_column('migtest_e_history2', 'obsolete_string2');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string1');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'obsolete_string2');
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
delimiter $$
create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
@@ -34,3 +25,4 @@ create trigger migtest_e_history2_history_del before delete on migtest_e_history
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
end$$
unlock tables;
+drop table if exists migtest_e_ref;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.3.sql
index b3d9845a5..95c5ae773 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.3.sql
@@ -1,9 +1,18 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-
+alter table migtest_ckey_detail drop foreign key fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
+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_e_basic drop index uq_migtest_e_basic_description;
+alter table migtest_e_basic drop foreign key fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop index uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop index uq_migtest_e_basic_name;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop index uq_migtest_e_basic_indextest5;
+drop index ix_migtest_e_basic_indextest3 on migtest_e_basic;
+drop index ix_migtest_e_basic_indextest6 on migtest_e_basic;
-- apply changes
create table migtest_e_ref (
id integer auto_increment not null,
@@ -12,74 +21,50 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_ckey_detail drop foreign key fk_migtest_ckey_detail_parent;
-alter table migtest_fk_cascade drop foreign key fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-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 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;
+drop trigger migtest_e_history2_history_upd;
+drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history3_history_upd;
+drop trigger migtest_e_history3_history_del;
+drop view migtest_e_history3_with_history;
+drop trigger migtest_e_history4_history_upd;
+drop trigger migtest_e_history4_history_del;
+drop view migtest_e_history4_with_history;
+drop trigger migtest_e_history6_history_upd;
+drop trigger migtest_e_history6_history_del;
+drop view migtest_e_history6_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic modify status varchar(1);
+alter table migtest_e_basic modify status2 varchar(1) not null default 'N';
+alter table migtest_e_basic modify user_id integer not null default 23;
alter table migtest_e_basic add column description_file longblob;
alter table migtest_e_basic add column old_boolean tinyint(1) default 0 not null;
alter table migtest_e_basic add column old_boolean2 tinyint(1);
alter table migtest_e_basic add column eref_id integer;
-
-alter table migtest_e_basic drop index uq_migtest_e_basic_status_indextest1;
-alter table migtest_e_basic drop index uq_migtest_e_basic_name;
-alter table migtest_e_basic drop index uq_migtest_e_basic_indextest4;
-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_history2_history modify test_string varchar(255);
alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
-
alter table migtest_e_history4 modify test_number integer;
alter table migtest_e_history4_history modify test_number integer;
-alter table migtest_e_history6 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_oto_child add constraint uq_m12_otoc72 unique (name);
-alter table migtest_oto_master add constraint uq_migtest_oto_master_name unique (name);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_m12_otoc72 on migtest_oto_child (name);
-create index ix_migtest_oto_master_name on migtest_oto_master (name);
-drop index ix_migtest_e_basic_indextest3 on migtest_e_basic;
-drop index ix_migtest_e_basic_indextest6 on migtest_e_basic;
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+alter table migtest_e_history6 modify test_number2 integer not null default 7;
+alter table migtest_e_history6_history modify test_number1 integer;
+-- apply post alter
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_history comment = '';
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-lock tables migtest_e_history2 write, migtest_e_history3 write, migtest_e_history4 write;
--- changes: [add obsolete_string1, add obsolete_string2]
-drop trigger migtest_e_history2_history_upd;
-drop trigger migtest_e_history2_history_del;
+lock tables migtest_e_history2 write;
delimiter $$
create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column);
@@ -89,9 +74,9 @@ delimiter $$
create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column);
end$$
--- changes: [include test_string]
-drop trigger migtest_e_history3_history_upd;
-drop trigger migtest_e_history3_history_del;
+unlock tables;
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+lock tables migtest_e_history3 write;
delimiter $$
create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
@@ -101,9 +86,9 @@ delimiter $$
create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
end$$
--- changes: [alter test_number]
-drop trigger migtest_e_history4_history_upd;
-drop trigger migtest_e_history4_history_del;
+unlock tables;
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+lock tables migtest_e_history4 write;
delimiter $$
create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
@@ -114,3 +99,27 @@ create trigger migtest_e_history4_history_del before delete on migtest_e_history
insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
end$$
unlock tables;
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+lock tables migtest_e_history6 write;
+delimiter $$
+create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+ set NEW.sys_period_start = now(6);
+end$$
+delimiter $$
+create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
+end$$
+unlock tables;
+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);
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+create index ix_m12_otoc72 on migtest_oto_child (name);
+create index ix_migtest_oto_master_name on migtest_oto_master (name);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.4__dropsFor_1.3.sql
index a560bd320..0cde3c7b2 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.4__dropsFor_1.3.sql
@@ -3,58 +3,39 @@
drop trigger migtest_e_history_history_upd;
drop trigger migtest_e_history_history_del;
drop view migtest_e_history_with_history;
-alter table migtest_e_history drop column sys_period_start;
-alter table migtest_e_history drop column sys_period_end;
drop table migtest_e_history_history;
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history5_with_history;
-
-- apply changes
-alter table migtest_ckey_detail drop column one_key;
-
-alter table migtest_ckey_detail drop column two_key;
-
-alter table migtest_ckey_parent drop column assoc_id;
-
-alter table migtest_e_basic drop column new_string_field;
-
-alter table migtest_e_basic drop column new_boolean_field;
-
-alter table migtest_e_basic drop column new_boolean_field2;
-
-alter table migtest_e_basic drop column progress;
-
-alter table migtest_e_basic drop column new_integer;
-
-alter table migtest_e_history2 drop column test_string2;
-alter table migtest_e_history2_history drop column test_string2;
-
-alter table migtest_e_history2 drop column test_string3;
-alter table migtest_e_history2_history drop column test_string3;
-
-alter table migtest_e_history2 drop column new_column;
-alter table migtest_e_history2_history drop column new_column;
-
-alter table migtest_e_history5 drop column test_boolean;
-alter table migtest_e_history5_history drop column test_boolean;
-
-alter table migtest_e_softdelete drop column deleted;
-
-alter table migtest_oto_child drop column master_id;
-
-drop table if exists migtest_e_user;
-drop table if exists migtest_mtm_c_migtest_mtm_m;
-drop table if exists migtest_mtm_m_migtest_mtm_c;
-drop table if exists migtest_mtm_m_phone_numbers;
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-lock tables migtest_e_history2 write, migtest_e_history5 write;
--- changes: [drop test_string2, drop test_string3, drop new_column]
drop trigger migtest_e_history2_history_upd;
drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history5_history_upd;
+drop trigger migtest_e_history5_history_del;
+drop view migtest_e_history5_with_history;
+-- apply alter tables
+CALL usp_ebean_drop_column('migtest_ckey_detail', 'one_key');
+CALL usp_ebean_drop_column('migtest_ckey_detail', 'two_key');
+CALL usp_ebean_drop_column('migtest_ckey_parent', 'assoc_id');
+CALL usp_ebean_drop_column('migtest_e_basic', 'new_string_field');
+CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field');
+CALL usp_ebean_drop_column('migtest_e_basic', 'new_boolean_field2');
+CALL usp_ebean_drop_column('migtest_e_basic', 'progress');
+CALL usp_ebean_drop_column('migtest_e_basic', 'new_integer');
+CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_start');
+CALL usp_ebean_drop_column('migtest_e_history', 'sys_period_end');
+CALL usp_ebean_drop_column('migtest_e_history2', 'test_string2');
+CALL usp_ebean_drop_column('migtest_e_history2', 'test_string3');
+CALL usp_ebean_drop_column('migtest_e_history2', 'new_column');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string2');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'test_string3');
+CALL usp_ebean_drop_column('migtest_e_history2_history', 'new_column');
+CALL usp_ebean_drop_column('migtest_e_history5', 'test_boolean');
+CALL usp_ebean_drop_column('migtest_e_history5_history', 'test_boolean');
+CALL usp_ebean_drop_column('migtest_e_softdelete', 'deleted');
+CALL usp_ebean_drop_column('migtest_oto_child', 'master_id');
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+lock tables migtest_e_history2 write;
delimiter $$
create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
@@ -64,9 +45,9 @@ delimiter $$
create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
end$$
--- changes: [drop test_boolean]
-drop trigger migtest_e_history5_history_upd;
-drop trigger migtest_e_history5_history_del;
+unlock tables;
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+lock tables migtest_e_history5 write;
delimiter $$
create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
@@ -77,3 +58,7 @@ create trigger migtest_e_history5_history_del before delete on migtest_e_history
insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
end$$
unlock tables;
+drop table if exists migtest_e_user;
+drop table if exists migtest_mtm_c_migtest_mtm_m;
+drop table if exists migtest_mtm_m_migtest_mtm_c;
+drop table if exists migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/I__create_procs.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/I__create_procs.sql
new file mode 100644
index 000000000..d13ec2708
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/I__create_procs.sql
@@ -0,0 +1,48 @@
+-- Inital script to create stored procedures etc for mysql platform
+DROP PROCEDURE IF EXISTS usp_ebean_drop_foreign_keys;
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_foreign_keys TABLE, COLUMN
+-- deletes all constraints and foreign keys referring to TABLE.COLUMN
+--
+CREATE PROCEDURE usp_ebean_drop_foreign_keys(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
+BEGIN
+DECLARE done INT DEFAULT FALSE;
+DECLARE c_fk_name CHAR(255);
+DECLARE curs CURSOR FOR SELECT CONSTRAINT_NAME from information_schema.KEY_COLUMN_USAGE
+WHERE TABLE_SCHEMA = DATABASE() and TABLE_NAME = p_table_name and COLUMN_NAME = p_column_name
+AND REFERENCED_TABLE_NAME IS NOT NULL;
+DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
+
+OPEN curs;
+
+read_loop: LOOP
+FETCH curs INTO c_fk_name;
+IF done THEN
+LEAVE read_loop;
+END IF;
+SET @sql = CONCAT('ALTER TABLE ', p_table_name, ' DROP FOREIGN KEY ', c_fk_name);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+END LOOP;
+
+CLOSE curs;
+END
+$$
+
+DROP PROCEDURE IF EXISTS usp_ebean_drop_column;
+
+delimiter $$
+--
+-- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN
+-- deletes the column and ensures that all indices and constraints are dropped first
+--
+CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255))
+BEGIN
+CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name);
+SET @sql = CONCAT('ALTER TABLE ', p_table_name, ' DROP COLUMN ', p_column_name);
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+END
+$$
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations
index adf4d2126..d54a870ed 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/idx_mysql.migrations
@@ -1,7 +1,8 @@
-881444156, 1.0__initial.sql
--1627573867, 1.1.sql
-1720062531, 1.2__dropsFor_1.1.sql
-798979911, 1.3.sql
--724776884, 1.4__dropsFor_1.3.sql
+1835064798, I__create_procs.sql
+529930619, 1.0__initial.sql
+-882132850, 1.1.sql
+-1332434945, 1.2__dropsFor_1.1.sql
+-1085730419, 1.3.sql
+379252952, 1.4__dropsFor_1.3.sql
561281075, R__order_views.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/mysql/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.0__initial.sql
similarity index 60%
rename from ebean-test/src/test/resources/migrationtest/dbinit/mysql/1.4.sql
rename to ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.0__initial.sql
index f58076577..c02698fb4 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/mysql/1.4.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.0__initial.sql
@@ -1,13 +1,13 @@
-- Migrationscripts for ebean unittest
-- apply changes
create table migtest_ckey_assoc (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
assoc_one varchar(255),
constraint pk_migtest_ckey_assoc primary key (id)
);
create table migtest_ckey_detail (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
something varchar(255),
constraint pk_migtest_ckey_detail primary key (id)
);
@@ -21,49 +21,49 @@ create table migtest_ckey_parent (
);
create table migtest_fk_cascade (
- id bigint auto_increment not null,
+ id bigint generated by default as identity not null,
one_id bigint,
constraint pk_migtest_fk_cascade primary key (id)
);
create table migtest_fk_cascade_one (
- id bigint auto_increment not null,
+ id bigint generated by default as identity not null,
constraint pk_migtest_fk_cascade_one primary key (id)
);
create table migtest_fk_none (
- id bigint auto_increment not null,
+ id bigint generated by default as identity not null,
one_id bigint,
constraint pk_migtest_fk_none primary key (id)
);
create table migtest_fk_none_via_join (
- id bigint auto_increment not null,
+ id bigint generated by default as identity not null,
one_id bigint,
constraint pk_migtest_fk_none_via_join primary key (id)
);
create table migtest_fk_one (
- id bigint auto_increment not null,
+ id bigint generated by default as identity not null,
constraint pk_migtest_fk_one primary key (id)
);
create table migtest_fk_set_null (
- id bigint auto_increment not null,
+ id bigint generated by default as identity not null,
one_id bigint,
constraint pk_migtest_fk_set_null primary key (id)
);
create table migtest_e_basic (
- id integer auto_increment not null,
+ 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),
- description_file longblob,
- some_date datetime(6),
- old_boolean tinyint(1) default 0 not null,
- old_boolean2 tinyint(1),
+ description_file blob,
+ some_date timestamp,
+ old_boolean boolean default false not null,
+ old_boolean2 boolean,
eref_id integer,
indextest1 varchar(127),
indextest2 varchar(127),
@@ -71,26 +71,29 @@ create table migtest_e_basic (
indextest4 varchar(127),
indextest5 varchar(127),
indextest6 varchar(127),
- user_id integer default 23 not null,
+ 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)
);
create table migtest_e_enum (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
test_status varchar(1),
+ constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
constraint pk_migtest_e_enum primary key (id)
);
create table migtest_e_history (
- id integer auto_increment not null,
- test_string bigint,
+ id integer generated by default as identity not null,
+ test_string varchar(255),
constraint pk_migtest_e_history primary key (id)
);
create table migtest_e_history2 (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
test_string varchar(255),
obsolete_string1 varchar(255),
obsolete_string2 varchar(255),
@@ -98,84 +101,79 @@ create table migtest_e_history2 (
);
create table migtest_e_history3 (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
test_string varchar(255),
constraint pk_migtest_e_history3 primary key (id)
);
create table migtest_e_history4 (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
test_number integer,
constraint pk_migtest_e_history4 primary key (id)
);
create table migtest_e_history5 (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
test_number integer,
constraint pk_migtest_e_history5 primary key (id)
);
create table migtest_e_history6 (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number2 integer not null,
constraint pk_migtest_e_history6 primary key (id)
);
create table migtest_e_ref (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
name varchar(127) not null,
constraint uq_migtest_e_ref_name unique (name),
constraint pk_migtest_e_ref primary key (id)
);
create table migtest_e_softdelete (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
test_string varchar(255),
constraint pk_migtest_e_softdelete primary key (id)
);
create table migtest_mtm_c (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
name varchar(255),
constraint pk_migtest_mtm_c primary key (id)
);
create table migtest_mtm_m (
- id bigint auto_increment not null,
+ id bigint generated by default as identity not null,
name varchar(255),
constraint pk_migtest_mtm_m primary key (id)
);
create table migtest_oto_child (
- id integer auto_increment not null,
+ id integer generated by default as identity not null,
name varchar(255),
- constraint uq_m12_otoc72 unique (name),
constraint pk_migtest_oto_child primary key (id)
);
create table migtest_oto_master (
- id bigint auto_increment not null,
+ id bigint generated by default as identity not null,
name varchar(255),
- constraint uq_migtest_oto_master_name unique (name),
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_m12_otoc72 on migtest_oto_child (name);
-create index ix_migtest_oto_master_name on migtest_oto_master (name);
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
-alter table migtest_e_history2 add column sys_period_start datetime(6) default now(6);
+-- apply alter tables
+alter table migtest_e_history2 add column sys_period_start datetime(6) default now();
alter table migtest_e_history2 add column sys_period_end datetime(6);
+alter table migtest_e_history3 add column sys_period_start datetime(6) default now();
+alter table migtest_e_history3 add column sys_period_end datetime(6);
+alter table migtest_e_history4 add column sys_period_start datetime(6) default now();
+alter table migtest_e_history4 add column sys_period_end datetime(6);
+alter table migtest_e_history5 add column sys_period_start datetime(6) default now();
+alter table migtest_e_history5 add column sys_period_end datetime(6);
+alter table migtest_e_history6 add column sys_period_start datetime(6) default now();
+alter table migtest_e_history6 add column sys_period_end datetime(6);
+-- apply post alter
create table migtest_e_history2_history(
id integer,
test_string varchar(255),
@@ -185,9 +183,20 @@ create table migtest_e_history2_history(
sys_period_end datetime(6)
);
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+delimiter $$
+create or replace trigger migtest_e_history2_history_upd for migtest_e_history2 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.obsolete_string2);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history2_history_del for migtest_e_history2 before delete for each row as
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.obsolete_string2);
+end_trigger;
+$$
+
-alter table migtest_e_history3 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history3 add column sys_period_end datetime(6);
create table migtest_e_history3_history(
id integer,
test_string varchar(255),
@@ -195,9 +204,20 @@ create table migtest_e_history3_history(
sys_period_end datetime(6)
);
create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+delimiter $$
+create or replace trigger migtest_e_history3_history_upd for migtest_e_history3 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history3_history_del for migtest_e_history3 before delete for each row as
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string);
+end_trigger;
+$$
+
-alter table migtest_e_history4 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history4 add column sys_period_end datetime(6);
create table migtest_e_history4_history(
id integer,
test_number integer,
@@ -205,9 +225,20 @@ create table migtest_e_history4_history(
sys_period_end datetime(6)
);
create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+delimiter $$
+create or replace trigger migtest_e_history4_history_upd for migtest_e_history4 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history4_history_del for migtest_e_history4 before delete for each row as
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
-alter table migtest_e_history5 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history5 add column sys_period_end datetime(6);
create table migtest_e_history5_history(
id integer,
test_number integer,
@@ -215,9 +246,20 @@ create table migtest_e_history5_history(
sys_period_end datetime(6)
);
create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+delimiter $$
+create or replace trigger migtest_e_history5_history_upd for migtest_e_history5 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history5_history_del for migtest_e_history5 before delete for each row as
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
-alter table migtest_e_history6 add column sys_period_start datetime(6) default now(6);
-alter table migtest_e_history6 add column sys_period_end datetime(6);
create table migtest_e_history6_history(
id integer,
test_number1 integer,
@@ -226,49 +268,29 @@ create table migtest_e_history6_history(
sys_period_end datetime(6)
);
create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+delimiter $$
+create or replace trigger migtest_e_history6_history_upd for migtest_e_history6 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number1, OLD.test_number2);
+end_trigger;
+$$
delimiter $$
-create trigger migtest_e_history2_history_upd before update on migtest_e_history2 for each row begin
- insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history2_history_del before delete on migtest_e_history2 for each row begin
- insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string, OLD.obsolete_string2);
-end$$
-delimiter $$
-create trigger migtest_e_history3_history_upd before update on migtest_e_history3 for each row begin
- insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history3_history_del before delete on migtest_e_history3 for each row begin
- insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_string);
-end$$
-delimiter $$
-create trigger migtest_e_history4_history_upd before update on migtest_e_history4 for each row begin
- insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history4_history_del before delete on migtest_e_history4 for each row begin
- insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
-end$$
-delimiter $$
-create trigger migtest_e_history5_history_upd before update on migtest_e_history5 for each row begin
- insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history5_history_del before delete on migtest_e_history5 for each row begin
- insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number);
-end$$
-delimiter $$
-create trigger migtest_e_history6_history_upd before update on migtest_e_history6 for each row begin
- insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
- set NEW.sys_period_start = now(6);
-end$$
-delimiter $$
-create trigger migtest_e_history6_history_del before delete on migtest_e_history6 for each row begin
- insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, now(6),OLD.id, OLD.test_number1, OLD.test_number2);
-end$$
+create or replace trigger migtest_e_history6_history_del for migtest_e_history6 before delete for each row as
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number1, OLD.test_number2);
+end_trigger;
+$$
+
+
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+
+create index ix_migtest_fk_set_null_one_id on 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);
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql
new file mode 100644
index 000000000..c7bf4e1f3
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql
@@ -0,0 +1,228 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
+-- apply changes
+create table migtest_e_user (
+ id integer generated by default as identity not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- rename all collisions;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+drop trigger migtest_e_history2_history_upd;
+drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history3_history_upd;
+drop trigger migtest_e_history3_history_del;
+drop view migtest_e_history3_with_history;
+drop trigger migtest_e_history4_history_upd;
+drop trigger migtest_e_history4_history_del;
+drop view migtest_e_history4_with_history;
+drop trigger migtest_e_history5_history_upd;
+drop trigger migtest_e_history5_history_del;
+drop view migtest_e_history5_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+drop trigger migtest_e_history6_history_upd;
+drop trigger migtest_e_history6_history_del;
+drop view migtest_e_history6_with_history;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 set null;
+alter table migtest_e_basic alter column user_id set null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history add column sys_period_start datetime(6) default now();
+alter table migtest_e_history add column sys_period_end datetime(6);
+alter table migtest_e_history alter column test_string bigint;
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 varchar(255);
+alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2 add column new_column varchar(20);
+alter table migtest_e_history2_history add column test_string2 varchar(255);
+alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown';
+alter table migtest_e_history2_history add column new_column varchar(20);
+alter table migtest_e_history4 alter column test_number bigint;
+alter table migtest_e_history4_history alter column test_number bigint;
+alter table migtest_e_history5 add column test_boolean boolean default false not null;
+alter table migtest_e_history5_history add column test_boolean boolean default false;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 set null;
+alter table migtest_e_history6_history alter column test_number2 set null;
+alter table migtest_e_softdelete add column deleted boolean default false not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+create table migtest_e_history_history(
+ id integer,
+ test_string bigint,
+ sys_period_start datetime(6),
+ sys_period_end datetime(6)
+);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+delimiter $$
+create or replace trigger migtest_e_history_history_upd for migtest_e_history before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history_history_del for migtest_e_history before delete for each row as
+ insert into migtest_e_history_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string);
+end_trigger;
+$$
+
+
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+delimiter $$
+create or replace trigger migtest_e_history2_history_upd for migtest_e_history2 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history2_history_del for migtest_e_history2 before delete for each row as
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
+end_trigger;
+$$
+
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+delimiter $$
+create or replace trigger migtest_e_history3_history_upd for migtest_e_history3 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history3_history_del for migtest_e_history3 before delete for each row as
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id);
+end_trigger;
+$$
+
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+delimiter $$
+create or replace trigger migtest_e_history4_history_upd for migtest_e_history4 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history4_history_del for migtest_e_history4 before delete for each row as
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+delimiter $$
+create or replace trigger migtest_e_history5_history_upd for migtest_e_history5 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number, OLD.test_boolean);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history5_history_del for migtest_e_history5 before delete for each row as
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number, test_boolean) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number, OLD.test_boolean);
+end_trigger;
+$$
+
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+delimiter $$
+create or replace trigger migtest_e_history6_history_upd for migtest_e_history6 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number1, OLD.test_number2);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history6_history_del for migtest_e_history6 before delete for each row as
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number1, OLD.test_number2);
+end_trigger;
+$$
+
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id);
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_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);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id);
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..092105623
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.2__dropsFor_1.1.sql
@@ -0,0 +1,31 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+drop trigger migtest_e_history2_history_upd;
+drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+alter table migtest_e_history2_history drop column obsolete_string1;
+alter table migtest_e_history2_history drop column obsolete_string2;
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+delimiter $$
+create or replace trigger migtest_e_history2_history_upd for migtest_e_history2 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history2_history_del for migtest_e_history2 before delete for each row as
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, test_string3, new_column) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+end_trigger;
+$$
+
+drop table if exists migtest_e_ref;
+drop sequence if exists migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql
new file mode 100644
index 000000000..8c28ad2ad
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql
@@ -0,0 +1,141 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id;
+alter table migtest_fk_none_via_join drop constraint fk_migtest_fk_none_via_join_one_id;
+alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
+-- apply changes
+create table migtest_e_ref (
+ id integer generated by default as identity not null,
+ name varchar(127) not null,
+ constraint uq_migtest_e_ref_name unique (name),
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+drop trigger migtest_e_history2_history_upd;
+drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history3_history_upd;
+drop trigger migtest_e_history3_history_del;
+drop view migtest_e_history3_with_history;
+drop trigger migtest_e_history4_history_upd;
+drop trigger migtest_e_history4_history_del;
+drop view migtest_e_history4_with_history;
+drop trigger migtest_e_history6_history_upd;
+drop trigger migtest_e_history6_history_del;
+drop view migtest_e_history6_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status set null;
+alter table migtest_e_basic alter column status2 varchar(1);
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file blob;
+alter table migtest_e_basic add column old_boolean boolean default false not null;
+alter table migtest_e_basic add column old_boolean2 boolean;
+alter table migtest_e_basic add column eref_id integer;
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string set null;
+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 alter column test_string set null;
+alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
+alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
+alter table migtest_e_history4 alter column test_number integer;
+alter table migtest_e_history4_history alter column test_number integer;
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 set null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+alter table migtest_e_history6_history alter column test_number1 set null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+delimiter $$
+create or replace trigger migtest_e_history2_history_upd for migtest_e_history2 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history2_history_del for migtest_e_history2 before delete for each row as
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column);
+end_trigger;
+$$
+
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+delimiter $$
+create or replace trigger migtest_e_history3_history_upd for migtest_e_history3 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history3_history_del for migtest_e_history3 before delete for each row as
+ insert into migtest_e_history3_history (sys_period_start,sys_period_end,id, test_string) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string);
+end_trigger;
+$$
+
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+delimiter $$
+create or replace trigger migtest_e_history4_history_upd for migtest_e_history4 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history4_history_del for migtest_e_history4 before delete for each row as
+ insert into migtest_e_history4_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+delimiter $$
+create or replace trigger migtest_e_history6_history_upd for migtest_e_history6 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number1, OLD.test_number2);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history6_history_del for migtest_e_history6 before delete for each row as
+ insert into migtest_e_history6_history (sys_period_start,sys_period_end,id, test_number1, test_number2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number1, OLD.test_number2);
+end_trigger;
+$$
+
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id);
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..feeb1d7cf
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.4__dropsFor_1.3.sql
@@ -0,0 +1,69 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+drop trigger migtest_e_history_history_upd;
+drop trigger migtest_e_history_history_del;
+drop view migtest_e_history_with_history;
+drop table migtest_e_history_history;
+
+-- apply changes
+drop trigger migtest_e_history2_history_upd;
+drop trigger migtest_e_history2_history_del;
+drop view migtest_e_history2_with_history;
+drop trigger migtest_e_history5_history_upd;
+drop trigger migtest_e_history5_history_del;
+drop view migtest_e_history5_with_history;
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+alter table migtest_ckey_parent drop column assoc_id;
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+alter table migtest_e_history drop column sys_period_start;
+alter table migtest_e_history drop column sys_period_end;
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history2_history drop column test_string2;
+alter table migtest_e_history2_history drop column test_string3;
+alter table migtest_e_history2_history drop column new_column;
+alter table migtest_e_history5 drop column test_boolean;
+alter table migtest_e_history5_history drop column test_boolean;
+alter table migtest_e_softdelete drop column deleted;
+alter table migtest_oto_child drop column master_id;
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+delimiter $$
+create or replace trigger migtest_e_history2_history_upd for migtest_e_history2 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.obsolete_string2);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history2_history_del for migtest_e_history2 before delete for each row as
+ insert into migtest_e_history2_history (sys_period_start,sys_period_end,id, test_string, obsolete_string2) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_string, OLD.obsolete_string2);
+end_trigger;
+$$
+
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+delimiter $$
+create or replace trigger migtest_e_history5_history_upd for migtest_e_history5 before update for each row as
+ NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond));
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
+delimiter $$
+create or replace trigger migtest_e_history5_history_del for migtest_e_history5 before delete for each row as
+ insert into migtest_e_history5_history (sys_period_start,sys_period_end,id, test_number) values (OLD.sys_period_start, NEW.sys_period_start,OLD.id, OLD.test_number);
+end_trigger;
+$$
+
+drop table if exists migtest_e_user;
+drop sequence if exists migtest_e_user_seq;
+drop table if exists migtest_mtm_c_migtest_mtm_m;
+drop table if exists migtest_mtm_m_migtest_mtm_c;
+drop table if exists migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/R__order_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations
new file mode 100644
index 000000000..716175603
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations
@@ -0,0 +1,7 @@
+1041350610, 1.0__initial.sql
+-1144238347, 1.1.sql
+-424253630, 1.2__dropsFor_1.1.sql
+-270701977, 1.3.sql
+-1189704269, 1.4__dropsFor_1.3.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.0__initial.sql
index 4d151f191..8654939bf 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.0__initial.sql
@@ -162,8 +162,7 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+-- foreign keys and indices
create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
@@ -173,3 +172,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql
index 3a706374e..f07e7603e 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql
@@ -1,4 +1,59 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
+exception
+ when expected_error then null;
+end;
+$$;
+drop index ix_migtest_e_basic_indextest1;
+drop index ix_migtest_e_basic_indextest5;
-- apply changes
create table migtest_e_user (
id number(10) generated by default as identity not null,
@@ -22,80 +77,60 @@ create table migtest_mtm_m_phone_numbers (
value varchar2(255) not null
);
-alter table migtest_ckey_detail add one_key number(10);
-alter table migtest_ckey_detail add two_key varchar2(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
-alter table migtest_ckey_parent add assoc_id number(10);
-
-alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
-alter table migtest_fk_none_via_join add constraint fk_mgtst_fk_nn_v_jn_n_d foreign key (one_id) references migtest_fk_one (id);
-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);
update migtest_e_basic set status = 'A' where status is null;
-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);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
-alter table migtest_e_basic modify user_id null;
-alter table migtest_e_basic add new_string_field varchar2(255) default 'foo''bar' not null;
-alter table migtest_e_basic add new_boolean_field number(1) default 1 not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
-alter table migtest_e_basic add new_boolean_field2 number(1) default 1 not null;
-alter table migtest_e_basic add progress number(10) default 0 not null;
-alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
-alter table migtest_e_basic add new_integer number(10) default 42 not null;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
--- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_mgtst__bsc_stts_ndxtst1 unique (status,indextest1);
--- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
--- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
--- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
-alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
-comment on column migtest_e_history.test_string is 'Column altered to long now';
-alter table migtest_e_history modify test_string number(19);
-comment on table migtest_e_history is '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;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+-- apply alter tables
+alter table migtest_ckey_detail add one_key number(10);
+alter table migtest_ckey_detail add two_key varchar2(127);
+alter table migtest_ckey_parent add assoc_id number(10);
+alter table migtest_e_basic modify status default 'A';
+alter table migtest_e_basic modify status not null;
+alter table migtest_e_basic modify status2 varchar2(127);
+alter table migtest_e_basic modify status2 default null;
+alter table migtest_e_basic modify status2 null;
+alter table migtest_e_basic modify user_id null;
+alter table migtest_e_basic add new_string_field varchar2(255) default 'foo''bar' not null;
+alter table migtest_e_basic add new_boolean_field number(1) default 1 not null;
+alter table migtest_e_basic add new_boolean_field2 number(1) default 1 not null;
+alter table migtest_e_basic add progress number(10) default 0 not null;
+alter table migtest_e_basic add new_integer number(10) default 42 not null;
+alter table migtest_e_history modify test_string number(19);
alter table migtest_e_history2 modify test_string default 'unknown';
alter table migtest_e_history2 modify test_string not null;
alter table migtest_e_history2 add test_string2 varchar2(255);
alter table migtest_e_history2 add test_string3 varchar2(255) default 'unknown' not null;
alter table migtest_e_history2 add new_column varchar2(20);
-
alter table migtest_e_history4 modify test_number number(19);
alter table migtest_e_history5 add test_boolean number(1) 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 modify test_number1 default 42;
alter table migtest_e_history6 modify test_number1 not null;
alter table migtest_e_history6 modify test_number2 null;
alter table migtest_e_softdelete add deleted number(1) default 0 not null;
-
alter table migtest_oto_child add master_id number(19);
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
-create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-drop index ix_migtest_e_basic_indextest1;
-drop index ix_migtest_e_basic_indextest5;
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_mgtst__bsc_stts_ndxtst1 unique (status,indextest1);
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+-- foreign keys and indices
create index ix_mgtst_mtm_c_mgtst_mt_3ug4ok on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mtm_c_mgtst_mt_93awga foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
@@ -111,8 +146,16 @@ alter table migtest_mtm_m_migtest_mtm_c add constraint fk_mgtst_mtm_m_mgtst_mt_g
create index ix_mgtst_mtm_m_phn_nmbr_do9ma3 on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
alter table migtest_mtm_m_phone_numbers add constraint fk_mgtst_mtm_m_phn_nmbr_s8neid foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
create index ix_mgtst_cky_prnt_ssc_d on migtest_ckey_parent (assoc_id);
alter table migtest_ckey_parent add constraint fk_mgtst_cky_prnt_ssc_d foreign key (assoc_id) references migtest_ckey_assoc (id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
+alter table migtest_fk_none_via_join add constraint fk_mgtst_fk_nn_v_jn_n_d foreign key (one_id) references migtest_fk_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);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id);
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql
index ee9cc6325..ccecef36d 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql
@@ -1,16 +1,20 @@
-- Migrationscripts for ebean unittest
--- apply changes
+-- apply alter tables
alter table migtest_e_basic drop column description_file;
-
alter table migtest_e_basic drop column old_boolean;
-
alter table migtest_e_basic drop column old_boolean2;
-
alter table migtest_e_basic drop column eref_id;
-
alter table migtest_e_history2 drop column obsolete_string1;
-
alter table migtest_e_history2 drop column obsolete_string2;
-
+-- apply post alter
drop table migtest_e_ref cascade constraints purge;
-drop sequence migtest_e_ref_seq;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2289);
+begin
+ execute immediate 'drop sequence migtest_e_ref_seq';
+exception
+ when expected_error then null;
+end;
+$$;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql
index 3dc30312f..e3eded2c5 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql
@@ -1,4 +1,93 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id;
+alter table migtest_fk_none_via_join drop constraint fk_mgtst_fk_nn_v_jn_n_d;
+alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_description';
+exception
+ when expected_error then null;
+end;
+$$;
+alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_mgtst__bsc_stts_ndxtst1';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_name';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
+exception
+ when expected_error then null;
+end;
+$$;
+drop index ix_migtest_e_basic_indextest3;
+drop index ix_migtest_e_basic_indextest6;
-- apply changes
create table migtest_e_ref (
id number(10) generated by default as identity not null,
@@ -7,62 +96,47 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent;
-alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
-alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id;
-alter table migtest_fk_none_via_join drop constraint fk_mgtst_fk_nn_v_jn_n_d;
-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;
-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;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic modify status default null;
+alter table migtest_e_basic modify status null;
alter table migtest_e_basic modify status2 varchar2(1);
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;
-alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id;
alter table migtest_e_basic modify user_id default 23;
alter table migtest_e_basic modify user_id not null;
alter table migtest_e_basic add description_file blob;
alter table migtest_e_basic add old_boolean number(1) default 0 not null;
alter table migtest_e_basic add old_boolean2 number(1);
alter table migtest_e_basic add eref_id number(10);
-
-alter table migtest_e_basic drop constraint uq_mgtst__bsc_stts_ndxtst1;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
--- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
--- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
-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'));
-comment on column migtest_e_history.test_string is '';
-comment on table migtest_e_history is '';
-alter table migtest_e_history2 modify test_string drop default;
+alter table migtest_e_history2 modify test_string default null;
alter table migtest_e_history2 modify test_string null;
alter table migtest_e_history2 add obsolete_string1 varchar2(255);
alter table migtest_e_history2 add obsolete_string2 varchar2(255);
-
alter table migtest_e_history4 modify test_number number(10);
-alter table migtest_e_history6 modify test_number1 drop default;
+alter table migtest_e_history6 modify test_number1 default null;
alter table migtest_e_history6 modify test_number1 null;
-
--- NOTE: table has @History - special migration may be necessary
-update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
alter table migtest_e_history6 modify test_number2 default 7;
alter table migtest_e_history6 modify test_number2 not null;
-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;
-drop index ix_migtest_e_basic_indextest6;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null;
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql
index 34fe0bed4..38e77cae7 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql
@@ -1,35 +1,31 @@
-- Migrationscripts for ebean unittest
--- apply changes
+-- apply alter tables
alter table migtest_ckey_detail drop column one_key;
-
alter table migtest_ckey_detail drop column two_key;
-
alter table migtest_ckey_parent drop column assoc_id;
-
alter table migtest_e_basic drop column new_string_field;
-
alter table migtest_e_basic drop column new_boolean_field;
-
alter table migtest_e_basic drop column new_boolean_field2;
-
alter table migtest_e_basic drop column progress;
-
alter table migtest_e_basic drop column new_integer;
-
alter table migtest_e_history2 drop column test_string2;
-
alter table migtest_e_history2 drop column test_string3;
-
alter table migtest_e_history2 drop column new_column;
-
alter table migtest_e_history5 drop column test_boolean;
-
alter table migtest_e_softdelete drop column deleted;
-
alter table migtest_oto_child drop column master_id;
-
+-- apply post alter
drop table migtest_e_user cascade constraints purge;
-drop sequence migtest_e_user_seq;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2289);
+begin
+ execute immediate 'drop sequence migtest_e_user_seq';
+exception
+ when expected_error then null;
+end;
+$$;
drop table migtest_mtm_c_migtest_mtm_m cascade constraints purge;
drop table migtest_mtm_m_migtest_mtm_c cascade constraints purge;
drop table migtest_mtm_m_phone_numbers cascade constraints purge;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations
index 86e8f1206..668715769 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations
@@ -1,8 +1,8 @@
-1732845114, 1.0__initial.sql
--411370666, 1.1.sql
--1698942539, 1.2__dropsFor_1.1.sql
-1355736100, 1.3.sql
--629809805, 1.4__dropsFor_1.3.sql
+-554067191, 1.0__initial.sql
+187324506, 1.1.sql
+-582436324, 1.2__dropsFor_1.1.sql
+-283226837, 1.3.sql
+663051206, 1.4__dropsFor_1.3.sql
1357801733, R__oracle_only_views.sql
561281075, R__order_views.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/oracle/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.0__initial.sql
similarity index 70%
rename from ebean-test/src/test/resources/migrationtest/dbinit/oracle/1.4.sql
rename to ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.0__initial.sql
index 7f14bea85..7886fee5f 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/oracle/1.4.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.0__initial.sql
@@ -1,16 +1,18 @@
-- Migrationscripts for ebean unittest
-- apply changes
create table migtest_ckey_assoc (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
assoc_one varchar2(255),
constraint pk_migtest_ckey_assoc primary key (id)
);
+create sequence migtest_ckey_assoc_seq;
create table migtest_ckey_detail (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
something varchar2(255),
constraint pk_migtest_ckey_detail primary key (id)
);
+create sequence migtest_ckey_detail_seq;
create table migtest_ckey_parent (
one_key number(10) not null,
@@ -21,41 +23,47 @@ create table migtest_ckey_parent (
);
create table migtest_fk_cascade (
- id number(19) generated by default as identity not null,
+ id number(19) not null,
one_id number(19),
constraint pk_migtest_fk_cascade primary key (id)
);
+create sequence migtest_fk_cascade_seq;
create table migtest_fk_cascade_one (
- id number(19) generated by default as identity not null,
+ id number(19) not null,
constraint pk_migtest_fk_cascade_one primary key (id)
);
+create sequence migtest_fk_cascade_one_seq;
create table migtest_fk_none (
- id number(19) generated by default as identity not null,
+ id number(19) not null,
one_id number(19),
constraint pk_migtest_fk_none primary key (id)
);
+create sequence migtest_fk_none_seq;
create table migtest_fk_none_via_join (
- id number(19) generated by default as identity not null,
+ id number(19) not null,
one_id number(19),
constraint pk_migtest_fk_none_via_join primary key (id)
);
+create sequence migtest_fk_none_via_join_seq;
create table migtest_fk_one (
- id number(19) generated by default as identity not null,
+ id number(19) not null,
constraint pk_migtest_fk_one primary key (id)
);
+create sequence migtest_fk_one_seq;
create table migtest_fk_set_null (
- id number(19) generated by default as identity not null,
+ id number(19) not null,
one_id number(19),
constraint pk_migtest_fk_set_null primary key (id)
);
+create sequence migtest_fk_set_null_seq;
create table migtest_e_basic (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
status varchar2(1),
status2 varchar2(1) default 'N' not null,
name varchar2(127),
@@ -71,99 +79,112 @@ create table migtest_e_basic (
indextest4 varchar2(127),
indextest5 varchar2(127),
indextest6 varchar2(127),
- user_id number(10) default 23 not null,
+ 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)
);
+create sequence migtest_e_basic_seq;
create table migtest_e_enum (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
test_status varchar2(1),
constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
constraint pk_migtest_e_enum primary key (id)
);
+create sequence migtest_e_enum_seq;
create table migtest_e_history (
- id number(10) generated by default as identity not null,
- test_string number(19),
+ id number(10) not null,
+ test_string varchar2(255),
constraint pk_migtest_e_history primary key (id)
);
+create sequence migtest_e_history_seq;
create table migtest_e_history2 (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
test_string varchar2(255),
obsolete_string1 varchar2(255),
obsolete_string2 varchar2(255),
constraint pk_migtest_e_history2 primary key (id)
);
+create sequence migtest_e_history2_seq;
create table migtest_e_history3 (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
test_string varchar2(255),
constraint pk_migtest_e_history3 primary key (id)
);
+create sequence migtest_e_history3_seq;
create table migtest_e_history4 (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
test_number number(10),
constraint pk_migtest_e_history4 primary key (id)
);
+create sequence migtest_e_history4_seq;
create table migtest_e_history5 (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
test_number number(10),
constraint pk_migtest_e_history5 primary key (id)
);
+create sequence migtest_e_history5_seq;
create table migtest_e_history6 (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
test_number1 number(10),
- test_number2 number(10) default 7 not null,
+ test_number2 number(10) not null,
constraint pk_migtest_e_history6 primary key (id)
);
+create sequence migtest_e_history6_seq;
create table migtest_e_ref (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
name varchar2(127) not null,
constraint uq_migtest_e_ref_name unique (name),
constraint pk_migtest_e_ref primary key (id)
);
+create sequence migtest_e_ref_seq;
create table migtest_e_softdelete (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
test_string varchar2(255),
constraint pk_migtest_e_softdelete primary key (id)
);
+create sequence migtest_e_softdelete_seq;
create table migtest_mtm_c (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
name varchar2(255),
constraint pk_migtest_mtm_c primary key (id)
);
+create sequence migtest_mtm_c_seq;
create table migtest_mtm_m (
- id number(19) generated by default as identity not null,
+ id number(19) not null,
name varchar2(255),
constraint pk_migtest_mtm_m primary key (id)
);
+create sequence migtest_mtm_m_seq;
create table migtest_oto_child (
- id number(10) generated by default as identity not null,
+ id number(10) not null,
name varchar2(255),
constraint pk_migtest_oto_child primary key (id)
);
+create sequence migtest_oto_child_seq;
create table migtest_oto_master (
- id number(19) generated by default as identity not null,
+ id number(19) not null,
name varchar2(255),
constraint pk_migtest_oto_master primary key (id)
);
+create sequence migtest_oto_master_seq;
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+-- foreign keys and indices
create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
@@ -173,3 +194,5 @@ alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id for
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql
new file mode 100644
index 000000000..944a30188
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql
@@ -0,0 +1,162 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
+exception
+ when expected_error then null;
+end;
+$$;
+drop index ix_migtest_e_basic_indextest1;
+drop index ix_migtest_e_basic_indextest5;
+-- apply changes
+create table migtest_e_user (
+ id number(10) not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+create sequence migtest_e_user_seq;
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id number(10) not null,
+ migtest_mtm_m_id number(19) not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id number(19) not null,
+ migtest_mtm_c_id number(10) not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id number(19) not null,
+ value varchar2(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- rename all collisions;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+-- apply alter tables
+alter table migtest_ckey_detail add one_key number(10);
+alter table migtest_ckey_detail add two_key varchar2(127);
+alter table migtest_ckey_parent add assoc_id number(10);
+alter table migtest_e_basic modify status default 'A';
+alter table migtest_e_basic modify status not null;
+alter table migtest_e_basic modify status2 varchar2(127);
+alter table migtest_e_basic modify status2 default null;
+alter table migtest_e_basic modify status2 null;
+alter table migtest_e_basic modify user_id null;
+alter table migtest_e_basic add new_string_field varchar2(255) default 'foo''bar' not null;
+alter table migtest_e_basic add new_boolean_field number(1) default 1 not null;
+alter table migtest_e_basic add new_boolean_field2 number(1) default 1 not null;
+alter table migtest_e_basic add progress number(10) default 0 not null;
+alter table migtest_e_basic add new_integer number(10) default 42 not null;
+alter table migtest_e_history modify test_string number(19);
+alter table migtest_e_history2 modify test_string default 'unknown';
+alter table migtest_e_history2 modify test_string not null;
+alter table migtest_e_history2 add test_string2 varchar2(255);
+alter table migtest_e_history2 add test_string3 varchar2(255) default 'unknown' not null;
+alter table migtest_e_history2 add new_column varchar2(20);
+alter table migtest_e_history4 modify test_number number(19);
+alter table migtest_e_history5 add test_boolean number(1) default 0 not null;
+alter table migtest_e_history6 modify test_number1 default 42;
+alter table migtest_e_history6 modify test_number1 not null;
+alter table migtest_e_history6 modify test_number2 null;
+alter table migtest_e_softdelete add deleted number(1) default 0 not null;
+alter table migtest_oto_child add master_id number(19);
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_mgtst__bsc_stts_ndxtst1 unique (status,indextest1);
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+-- foreign keys and indices
+create index ix_mgtst_mtm_c_mgtst_mt_3ug4ok on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mtm_c_mgtst_mt_93awga foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_mgtst_mtm_c_mgtst_mt_3ug4ou on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_mgtst_mtm_c_mgtst_mt_93awgk foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_mgtst_mtm_m_mgtst_mt_b7nbcu on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_mgtst_mtm_m_mgtst_mt_ggi34k foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_mgtst_mtm_m_mgtst_mt_b7nbck on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_mgtst_mtm_m_mgtst_mt_ggi34a foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_mgtst_mtm_m_phn_nmbr_do9ma3 on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_mgtst_mtm_m_phn_nmbr_s8neid foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
+create index ix_mgtst_cky_prnt_ssc_d on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_mgtst_cky_prnt_ssc_d foreign key (assoc_id) references migtest_ckey_assoc (id);
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
+alter table migtest_fk_none_via_join add constraint fk_mgtst_fk_nn_v_jn_n_d foreign key (one_id) references migtest_fk_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);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id);
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..ccecef36d
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql
@@ -0,0 +1,20 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+-- apply post alter
+drop table migtest_e_ref cascade constraints purge;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2289);
+begin
+ execute immediate 'drop sequence migtest_e_ref_seq';
+exception
+ when expected_error then null;
+end;
+$$;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql
new file mode 100644
index 000000000..30535ac51
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql
@@ -0,0 +1,143 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id;
+alter table migtest_fk_none_via_join drop constraint fk_mgtst_fk_nn_v_jn_n_d;
+alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_description';
+exception
+ when expected_error then null;
+end;
+$$;
+alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_mgtst__bsc_stts_ndxtst1';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_name';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5';
+exception
+ when expected_error then null;
+end;
+$$;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2443);
+begin
+ execute immediate 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status';
+exception
+ when expected_error then null;
+end;
+$$;
+drop index ix_migtest_e_basic_indextest3;
+drop index ix_migtest_e_basic_indextest6;
+-- apply changes
+create table migtest_e_ref (
+ id number(10) not null,
+ name varchar2(127) not null,
+ constraint uq_migtest_e_ref_name unique (name),
+ constraint pk_migtest_e_ref primary key (id)
+);
+create sequence migtest_e_ref_seq;
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic modify status default null;
+alter table migtest_e_basic modify status null;
+alter table migtest_e_basic modify status2 varchar2(1);
+alter table migtest_e_basic modify status2 default 'N';
+alter table migtest_e_basic modify status2 not null;
+alter table migtest_e_basic modify user_id default 23;
+alter table migtest_e_basic modify user_id not null;
+alter table migtest_e_basic add description_file blob;
+alter table migtest_e_basic add old_boolean number(1) default 0 not null;
+alter table migtest_e_basic add old_boolean2 number(1);
+alter table migtest_e_basic add eref_id number(10);
+alter table migtest_e_history2 modify test_string default null;
+alter table migtest_e_history2 modify test_string null;
+alter table migtest_e_history2 add obsolete_string1 varchar2(255);
+alter table migtest_e_history2 add obsolete_string2 varchar2(255);
+alter table migtest_e_history4 modify test_number number(10);
+alter table migtest_e_history6 modify test_number1 default null;
+alter table migtest_e_history6 modify test_number1 null;
+alter table migtest_e_history6 modify test_number2 default 7;
+alter table migtest_e_history6 modify test_number2 not null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+-- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..38e77cae7
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql
@@ -0,0 +1,31 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+alter table migtest_ckey_parent drop column assoc_id;
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history5 drop column test_boolean;
+alter table migtest_e_softdelete drop column deleted;
+alter table migtest_oto_child drop column master_id;
+-- apply post alter
+drop table migtest_e_user cascade constraints purge;
+delimiter $$
+declare
+ expected_error exception;
+ pragma exception_init(expected_error, -2289);
+begin
+ execute immediate 'drop sequence migtest_e_user_seq';
+exception
+ when expected_error then null;
+end;
+$$;
+drop table migtest_mtm_c_migtest_mtm_m cascade constraints purge;
+drop table migtest_mtm_m_migtest_mtm_c cascade constraints purge;
+drop table migtest_mtm_m_phone_numbers cascade constraints purge;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/R__oracle_only_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/R__oracle_only_views.sql
new file mode 100644
index 000000000..1140e5361
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/R__oracle_only_views.sql
@@ -0,0 +1,4 @@
+
+ -- oracle only script
+ select * from dual;
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/R__order_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations
new file mode 100644
index 000000000..caea324e2
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations
@@ -0,0 +1,8 @@
+-712978357, 1.0__initial.sql
+-1852784090, 1.1.sql
+-582436324, 1.2__dropsFor_1.1.sql
+-734374474, 1.3.sql
+663051206, 1.4__dropsFor_1.3.sql
+1357801733, R__oracle_only_views.sql
+561281075, R__order_views.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.0__initial.sql
index 9dfbbd842..f8dcf1b54 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.0__initial.sql
@@ -162,40 +162,15 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index idxd_migtest_0 on migtest_oto_child using hash (upper(name)) where upper(name) = 'JIM';
-create index concurrently if not exists ix_migtest_oto_child_lowername_id on migtest_oto_child (lower(name),id);
-create index if not exists ix_migtest_oto_child_lowername on migtest_oto_child (lower(name));
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+-- apply post alter
create table migtest_e_history2_history(like migtest_e_history2);
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history3_history(like migtest_e_history3);
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history4_history(like migtest_e_history4);
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history5_history(like migtest_e_history5);
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history6_history(like migtest_e_history6);
-create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
-
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -218,6 +193,9 @@ create trigger migtest_e_history2_history_upd
before update or delete on migtest_e_history2
for each row execute procedure migtest_e_history2_history_version();
+
+create table migtest_e_history3_history(like migtest_e_history3);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
create or replace function migtest_e_history3_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -240,6 +218,9 @@ create trigger migtest_e_history3_history_upd
before update or delete on migtest_e_history3
for each row execute procedure migtest_e_history3_history_version();
+
+create table migtest_e_history4_history(like migtest_e_history4);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
create or replace function migtest_e_history4_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -262,6 +243,9 @@ create trigger migtest_e_history4_history_upd
before update or delete on migtest_e_history4
for each row execute procedure migtest_e_history4_history_version();
+
+create table migtest_e_history5_history(like migtest_e_history5);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
create or replace function migtest_e_history5_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -284,6 +268,9 @@ create trigger migtest_e_history5_history_upd
before update or delete on migtest_e_history5
for each row execute procedure migtest_e_history5_history_version();
+
+create table migtest_e_history6_history(like migtest_e_history6);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
create or replace function migtest_e_history6_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -306,3 +293,19 @@ create trigger migtest_e_history6_history_upd
before update or delete on migtest_e_history6
for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+create index idxd_migtest_0 on migtest_oto_child using hash (upper(name)) where upper(name) = 'JIM';
+create index concurrently if not exists ix_migtest_oto_child_lowername_id on migtest_oto_child (lower(name),id);
+create index if not exists ix_migtest_oto_child_lowername on migtest_oto_child (lower(name));
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.1.sql
index 37be77440..40d28c763 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.1.sql
@@ -1,10 +1,17 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-drop view if exists migtest_e_history5_with_history;
-
+alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table if exists migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
+drop index if exists idxd_migtest_0;
+drop index concurrently if exists ix_migtest_oto_child_lowername_id;
+drop index if exists ix_migtest_oto_child_lowername;
-- apply changes
create table migtest_e_user (
id integer generated by default as identity not null,
@@ -28,59 +35,57 @@ create table migtest_mtm_m_phone_numbers (
value varchar(255) not null
);
-alter table migtest_ckey_detail add column one_key integer;
-alter table migtest_ckey_detail add column two_key varchar(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
-alter table migtest_ckey_parent add column assoc_id integer;
-
-alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table if exists migtest_fk_set_null drop constraint if exists 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 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) using status2::varchar(127);
-alter table migtest_e_basic alter column status2 drop default;
-alter table migtest_e_basic alter column status2 drop not null;
-- rename all collisions;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
-alter table migtest_e_basic alter column user_id drop not null;
-alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
-alter table migtest_e_basic add column new_boolean_field boolean default true not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
-alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
-alter table migtest_e_basic add column progress integer default 0 not null;
-alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
-alter table migtest_e_basic add column new_integer integer default 42 not null;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
-alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
alter table migtest_e_history alter column test_string TYPE bigint USING (test_string::integer);
-comment on column migtest_e_history.test_string is 'Column altered to long now';
-alter table migtest_e_history alter column test_string type bigint using test_string::bigint;
-comment on table migtest_e_history is '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;
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+drop trigger if exists migtest_e_history3_history_upd on migtest_e_history3 cascade;
+drop function if exists migtest_e_history3_history_version();
+
+drop view migtest_e_history3_with_history;
+drop trigger if exists migtest_e_history4_history_upd on migtest_e_history4 cascade;
+drop function if exists migtest_e_history4_history_version();
+
+drop view migtest_e_history4_with_history;
+drop trigger if exists migtest_e_history5_history_upd on migtest_e_history5 cascade;
+drop function if exists migtest_e_history5_history_version();
+
+drop view migtest_e_history5_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+drop trigger if exists migtest_e_history6_history_upd on migtest_e_history6 cascade;
+drop function if exists migtest_e_history6_history_version();
+
+drop view migtest_e_history6_with_history;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 type varchar(127) using status2::varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 drop not null;
+alter table migtest_e_basic alter column user_id drop not null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history alter column test_string type bigint using test_string::bigint;
alter table migtest_e_history2 alter column test_string set default 'unknown';
alter table migtest_e_history2 alter column test_string set not null;
alter table migtest_e_history2 add column test_string2 varchar(255);
@@ -89,62 +94,29 @@ alter table migtest_e_history2 add column new_column varchar(20);
alter table migtest_e_history2_history add column test_string2 varchar(255);
alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown';
alter table migtest_e_history2_history add column new_column varchar(20);
-
alter table migtest_e_history4 alter column test_number type bigint using test_number::bigint;
alter table migtest_e_history4_history alter column test_number type bigint using test_number::bigint;
alter table migtest_e_history5 add column test_boolean boolean default false not null;
alter table migtest_e_history5_history add column test_boolean boolean default false;
-
-
--- 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 column test_number1 set default 42;
alter table migtest_e_history6 alter column test_number1 set not null;
alter table migtest_e_history6 alter column test_number2 drop not null;
+alter table migtest_e_history6_history alter column test_number2 drop not null;
alter table migtest_e_softdelete add column deleted boolean default false not null;
-
alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
-create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name);
-drop index if exists ix_migtest_e_basic_indextest1;
-drop index if exists ix_migtest_e_basic_indextest5;
-drop index if exists idxd_migtest_0;
-drop index concurrently if exists ix_migtest_oto_child_lowername_id;
-drop index if exists ix_migtest_oto_child_lowername;
-create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
-alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
-
-create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
-alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
-
-create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
-alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
-
-create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
-alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
-
-create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
-alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
-
-create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
-alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
-
-alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
-
-alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
create table migtest_e_history_history(like migtest_e_history);
create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
-
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
create or replace function migtest_e_history_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -167,7 +139,10 @@ create trigger migtest_e_history_history_upd
before update or delete on migtest_e_history
for each row execute procedure migtest_e_history_history_version();
--- changes: [add test_string2, add test_string3, add new_column]
+
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -186,7 +161,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [exclude test_string]
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
create or replace function migtest_e_history3_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -205,7 +184,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [alter test_number]
+create trigger migtest_e_history3_history_upd
+ before update or delete on migtest_e_history3
+ for each row execute procedure migtest_e_history3_history_version();
+
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
create or replace function migtest_e_history4_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -224,7 +207,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [add test_boolean]
+create trigger migtest_e_history4_history_upd
+ before update or delete on migtest_e_history4
+ for each row execute procedure migtest_e_history4_history_version();
+
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
create or replace function migtest_e_history5_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -243,3 +230,60 @@ begin
end;
$$ LANGUAGE plpgsql;
+create trigger migtest_e_history5_history_upd
+ before update or delete on migtest_e_history5
+ for each row execute procedure migtest_e_history5_history_version();
+
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create or replace function migtest_e_history6_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history6_history_upd
+ before update or delete on migtest_e_history6
+ for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
+create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.2__dropsFor_1.1.sql
index 35a7e2b4a..a9fef454c 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.2__dropsFor_1.1.sql
@@ -1,27 +1,20 @@
-- Migrationscripts for ebean unittest
--- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-
-- apply changes
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+-- apply alter tables
alter table migtest_e_basic drop column description_file;
-
alter table migtest_e_basic drop column old_boolean;
-
alter table migtest_e_basic drop column old_boolean2;
-
alter table migtest_e_basic drop column eref_id;
-
alter table migtest_e_history2 drop column obsolete_string1;
-alter table migtest_e_history2_history drop column obsolete_string1;
-
alter table migtest_e_history2 drop column obsolete_string2;
+alter table migtest_e_history2_history drop column obsolete_string1;
alter table migtest_e_history2_history drop column obsolete_string2;
-
-drop table if exists migtest_e_ref cascade;
-drop sequence if exists migtest_e_ref_seq;
+-- apply post alter
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
--- changes: [drop obsolete_string1, drop obsolete_string2]
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -40,3 +33,9 @@ begin
end;
$$ LANGUAGE plpgsql;
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+drop table if exists migtest_e_ref cascade;
+drop sequence if exists migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.3.sql
index 79cc955b5..e7bdfa534 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.3.sql
@@ -1,9 +1,21 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-
+alter table if exists migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
+alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table if exists migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
+alter table if exists migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
+alter table if exists migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+alter table if exists migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
-- apply changes
create table migtest_e_ref (
id integer generated by default as identity not null,
@@ -12,78 +24,64 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id)
);
-alter table if exists migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
-alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-alter table if exists migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
-alter table if exists migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
-alter table if exists migtest_fk_set_null drop constraint if exists 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 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;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+drop trigger if exists migtest_e_history3_history_upd on migtest_e_history3 cascade;
+drop function if exists migtest_e_history3_history_version();
+
+drop view migtest_e_history3_with_history;
+drop trigger if exists migtest_e_history4_history_upd on migtest_e_history4 cascade;
+drop function if exists migtest_e_history4_history_version();
+
+drop view migtest_e_history4_with_history;
+drop trigger if exists migtest_e_history6_history_upd on migtest_e_history6 cascade;
+drop function if exists migtest_e_history6_history_version();
+
+drop view migtest_e_history6_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status drop not null;
alter table migtest_e_basic alter column status2 type varchar(1) using status2::varchar(1);
alter table migtest_e_basic alter column status2 set default 'N';
alter table migtest_e_basic alter column status2 set not null;
-alter table migtest_e_basic 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;
-alter table if exists migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
alter table migtest_e_basic alter column user_id set default 23;
alter table migtest_e_basic alter column user_id set not null;
alter table migtest_e_basic add column description_file bytea;
alter table migtest_e_basic add column old_boolean boolean default false not null;
alter table migtest_e_basic add column old_boolean2 boolean;
alter table migtest_e_basic add column eref_id integer;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
-alter table migtest_e_basic drop constraint 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_enum drop constraint if exists 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'));
-comment on column migtest_e_history.test_string is '';
-comment on table migtest_e_history is '';
alter table migtest_e_history2 alter column test_string drop default;
alter table migtest_e_history2 alter column test_string drop not null;
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 alter column test_string drop not null;
alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
-
alter table migtest_e_history4 alter column test_number type integer using test_number::integer;
alter table migtest_e_history4_history alter column test_number type integer using test_number::integer;
alter table migtest_e_history6 alter column test_number1 drop default;
alter table migtest_e_history6 alter column test_number1 drop not null;
-
--- 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 column test_number2 set default 7;
alter table migtest_e_history6 alter column test_number2 set not null;
-create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index if not exists ix_m12_otoc71 on migtest_oto_child (name);
-create unique index if not exists uq_m12_otoc71 on migtest_oto_child (lower(name));
-create unique index if not exists ix_migtest_oto_master_lowername on migtest_oto_master (lower(name));
-drop index if exists ix_migtest_e_basic_indextest3;
-drop index if exists ix_migtest_e_basic_indextest6;
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+alter table migtest_e_history6_history alter column test_number1 drop not null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
--- changes: [add obsolete_string1, add obsolete_string2]
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -102,7 +100,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [include test_string]
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
create or replace function migtest_e_history3_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -121,7 +123,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [alter test_number]
+create trigger migtest_e_history3_history_upd
+ before update or delete on migtest_e_history3
+ for each row execute procedure migtest_e_history3_history_version();
+
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
create or replace function migtest_e_history4_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -140,3 +146,41 @@ begin
end;
$$ LANGUAGE plpgsql;
+create trigger migtest_e_history4_history_upd
+ before update or delete on migtest_e_history4
+ for each row execute procedure migtest_e_history4_history_version();
+
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create or replace function migtest_e_history6_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history6_history_upd
+ before update or delete on migtest_e_history6
+ for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+create index if not exists ix_m12_otoc71 on migtest_oto_child (name);
+create unique index if not exists uq_m12_otoc71 on migtest_oto_child (lower(name));
+create unique index if not exists ix_migtest_oto_master_lowername on migtest_oto_master (lower(name));
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.4__dropsFor_1.3.sql
index 4524d4a40..822e9f61a 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.4__dropsFor_1.3.sql
@@ -4,55 +4,39 @@ drop trigger if exists migtest_e_history_history_upd on migtest_e_history cascad
drop function if exists migtest_e_history_history_version();
drop view migtest_e_history_with_history;
-alter table migtest_e_history drop column sys_period;
drop table migtest_e_history_history;
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history5_with_history;
-
-- apply changes
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+drop trigger if exists migtest_e_history5_history_upd on migtest_e_history5 cascade;
+drop function if exists migtest_e_history5_history_version();
+
+drop view migtest_e_history5_with_history;
+-- apply alter tables
alter table migtest_ckey_detail drop column one_key;
-
alter table migtest_ckey_detail drop column two_key;
-
alter table migtest_ckey_parent drop column assoc_id;
-
alter table migtest_e_basic drop column new_string_field;
-
alter table migtest_e_basic drop column new_boolean_field;
-
alter table migtest_e_basic drop column new_boolean_field2;
-
alter table migtest_e_basic drop column progress;
-
alter table migtest_e_basic drop column new_integer;
-
+alter table migtest_e_history drop column sys_period;
alter table migtest_e_history2 drop column test_string2;
-alter table migtest_e_history2_history drop column test_string2;
-
alter table migtest_e_history2 drop column test_string3;
-alter table migtest_e_history2_history drop column test_string3;
-
alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history2_history drop column test_string2;
+alter table migtest_e_history2_history drop column test_string3;
alter table migtest_e_history2_history drop column new_column;
-
alter table migtest_e_history5 drop column test_boolean;
alter table migtest_e_history5_history drop column test_boolean;
-
alter table migtest_e_softdelete drop column deleted;
-
alter table migtest_oto_child drop column master_id;
-
-drop table if exists migtest_e_user cascade;
-drop sequence if exists migtest_e_user_seq;
-drop table if exists migtest_mtm_c_migtest_mtm_m cascade;
-drop table if exists migtest_mtm_m_migtest_mtm_c cascade;
-drop table if exists migtest_mtm_m_phone_numbers cascade;
+-- apply post alter
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
--- changes: [drop test_string2, drop test_string3, drop new_column]
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -71,7 +55,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [drop test_boolean]
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
create or replace function migtest_e_history5_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -90,3 +78,12 @@ begin
end;
$$ LANGUAGE plpgsql;
+create trigger migtest_e_history5_history_upd
+ before update or delete on migtest_e_history5
+ for each row execute procedure migtest_e_history5_history_version();
+
+drop table if exists migtest_e_user cascade;
+drop sequence if exists migtest_e_user_seq;
+drop table if exists migtest_mtm_c_migtest_mtm_m cascade;
+drop table if exists migtest_mtm_m_migtest_mtm_c cascade;
+drop table if exists migtest_mtm_m_phone_numbers cascade;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations
index 36d862b83..cf0d9a090 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/idx_postgres.migrations
@@ -1,8 +1,8 @@
--757334590, 1.0__initial.sql
-1548995254, 1.1.sql
-1360771849, 1.2__dropsFor_1.1.sql
-592037553, 1.3.sql
--1991941691, 1.4__dropsFor_1.3.sql
+-125847545, 1.0__initial.sql
+-962575173, 1.1.sql
+-1098989118, 1.2__dropsFor_1.1.sql
+808262548, 1.3.sql
+1729345905, 1.4__dropsFor_1.3.sql
783227075, R__multi_comments.sql
561281075, R__order_views.sql
283077354, R__pg_indexes.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/postgres/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql
similarity index 82%
rename from ebean-test/src/test/resources/migrationtest/dbinit/postgres/1.4.sql
rename to ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql
index e3ddcde2f..b64178f90 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/postgres/1.4.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql
@@ -1,13 +1,13 @@
-- Migrationscripts for ebean unittest
-- apply changes
create table migtest_ckey_assoc (
- id integer generated by default as identity not null,
+ id serial not null,
assoc_one varchar(255),
constraint pk_migtest_ckey_assoc primary key (id)
);
create table migtest_ckey_detail (
- id integer generated by default as identity not null,
+ id serial not null,
something varchar(255),
constraint pk_migtest_ckey_detail primary key (id)
);
@@ -21,41 +21,41 @@ create table migtest_ckey_parent (
);
create table migtest_fk_cascade (
- id bigint generated by default as identity not null,
+ id bigserial not null,
one_id bigint,
constraint pk_migtest_fk_cascade primary key (id)
);
create table migtest_fk_cascade_one (
- id bigint generated by default as identity not null,
+ id bigserial not null,
constraint pk_migtest_fk_cascade_one primary key (id)
);
create table migtest_fk_none (
- id bigint generated by default as identity not null,
+ id bigserial not null,
one_id bigint,
constraint pk_migtest_fk_none primary key (id)
);
create table migtest_fk_none_via_join (
- id bigint generated by default as identity not null,
+ id bigserial not null,
one_id bigint,
constraint pk_migtest_fk_none_via_join primary key (id)
);
create table migtest_fk_one (
- id bigint generated by default as identity not null,
+ id bigserial not null,
constraint pk_migtest_fk_one primary key (id)
);
create table migtest_fk_set_null (
- id bigint generated by default as identity not null,
+ id bigserial not null,
one_id bigint,
constraint pk_migtest_fk_set_null primary key (id)
);
create table migtest_e_basic (
- id integer generated by default as identity not null,
+ id serial not null,
status varchar(1),
status2 varchar(1) default 'N' not null,
name varchar(127),
@@ -71,7 +71,7 @@ create table migtest_e_basic (
indextest4 varchar(127),
indextest5 varchar(127),
indextest6 varchar(127),
- user_id integer default 23 not null,
+ 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),
@@ -80,20 +80,20 @@ create table migtest_e_basic (
);
create table migtest_e_enum (
- id integer generated by default as identity not null,
+ id serial not null,
test_status varchar(1),
constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
constraint pk_migtest_e_enum primary key (id)
);
create table migtest_e_history (
- id integer generated by default as identity not null,
- test_string bigint,
+ id serial not null,
+ test_string varchar(255),
constraint pk_migtest_e_history primary key (id)
);
create table migtest_e_history2 (
- id integer generated by default as identity not null,
+ id serial not null,
test_string varchar(255),
obsolete_string1 varchar(255),
obsolete_string2 varchar(255),
@@ -101,102 +101,76 @@ create table migtest_e_history2 (
);
create table migtest_e_history3 (
- id integer generated by default as identity not null,
+ id serial not null,
test_string varchar(255),
constraint pk_migtest_e_history3 primary key (id)
);
create table migtest_e_history4 (
- id integer generated by default as identity not null,
+ id serial not null,
test_number integer,
constraint pk_migtest_e_history4 primary key (id)
);
create table migtest_e_history5 (
- id integer generated by default as identity not null,
+ id serial not null,
test_number integer,
constraint pk_migtest_e_history5 primary key (id)
);
create table migtest_e_history6 (
- id integer generated by default as identity not null,
+ id serial not null,
test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number2 integer not null,
constraint pk_migtest_e_history6 primary key (id)
);
create table migtest_e_ref (
- id integer generated by default as identity not null,
+ id serial not null,
name varchar(127) not null,
constraint uq_migtest_e_ref_name unique (name),
constraint pk_migtest_e_ref primary key (id)
);
create table migtest_e_softdelete (
- id integer generated by default as identity not null,
+ id serial not null,
test_string varchar(255),
constraint pk_migtest_e_softdelete primary key (id)
);
create table migtest_mtm_c (
- id integer generated by default as identity not null,
+ id serial not null,
name varchar(255),
constraint pk_migtest_mtm_c primary key (id)
);
create table migtest_mtm_m (
- id bigint generated by default as identity not null,
+ id bigserial not null,
name varchar(255),
constraint pk_migtest_mtm_m primary key (id)
);
create table migtest_oto_child (
- id integer generated by default as identity not null,
+ id serial not null,
name varchar(255),
constraint pk_migtest_oto_child primary key (id)
);
create table migtest_oto_master (
- id bigint generated by default as identity not null,
+ id bigserial not null,
name varchar(255),
constraint pk_migtest_oto_master primary key (id)
);
-create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index if not exists ix_m12_otoc71 on migtest_oto_child (name);
-create unique index if not exists uq_m12_otoc71 on migtest_oto_child (lower(name));
-create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name);
-create unique index if not exists ix_migtest_oto_master_lowername on migtest_oto_master (lower(name));
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+-- apply post alter
create table migtest_e_history2_history(like migtest_e_history2);
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history3_history(like migtest_e_history3);
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history4_history(like migtest_e_history4);
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history5_history(like migtest_e_history5);
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history6_history(like migtest_e_history6);
-create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
-
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -219,6 +193,9 @@ create trigger migtest_e_history2_history_upd
before update or delete on migtest_e_history2
for each row execute procedure migtest_e_history2_history_version();
+
+create table migtest_e_history3_history(like migtest_e_history3);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
create or replace function migtest_e_history3_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -241,6 +218,9 @@ create trigger migtest_e_history3_history_upd
before update or delete on migtest_e_history3
for each row execute procedure migtest_e_history3_history_version();
+
+create table migtest_e_history4_history(like migtest_e_history4);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
create or replace function migtest_e_history4_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -263,6 +243,9 @@ create trigger migtest_e_history4_history_upd
before update or delete on migtest_e_history4
for each row execute procedure migtest_e_history4_history_version();
+
+create table migtest_e_history5_history(like migtest_e_history5);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
create or replace function migtest_e_history5_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -285,6 +268,9 @@ create trigger migtest_e_history5_history_upd
before update or delete on migtest_e_history5
for each row execute procedure migtest_e_history5_history_version();
+
+create table migtest_e_history6_history(like migtest_e_history6);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
create or replace function migtest_e_history6_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -307,3 +293,19 @@ create trigger migtest_e_history6_history_upd
before update or delete on migtest_e_history6
for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+create index idxd_migtest_0 on migtest_oto_child using hash (upper(name)) where upper(name) = 'JIM';
+create index concurrently if not exists ix_migtest_oto_child_lowername_id on migtest_oto_child (lower(name),id);
+create index if not exists ix_migtest_oto_child_lowername on migtest_oto_child (lower(name));
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql
new file mode 100644
index 000000000..852771f46
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql
@@ -0,0 +1,289 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table if exists migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
+drop index if exists idxd_migtest_0;
+drop index concurrently if exists ix_migtest_oto_child_lowername_id;
+drop index if exists ix_migtest_oto_child_lowername;
+-- apply changes
+create table migtest_e_user (
+ id serial not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id bigint not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id bigint not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id bigint not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- rename all collisions;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+alter table migtest_e_history alter column test_string TYPE bigint USING (test_string::integer);
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+drop trigger if exists migtest_e_history3_history_upd on migtest_e_history3 cascade;
+drop function if exists migtest_e_history3_history_version();
+
+drop view migtest_e_history3_with_history;
+drop trigger if exists migtest_e_history4_history_upd on migtest_e_history4 cascade;
+drop function if exists migtest_e_history4_history_version();
+
+drop view migtest_e_history4_with_history;
+drop trigger if exists migtest_e_history5_history_upd on migtest_e_history5 cascade;
+drop function if exists migtest_e_history5_history_version();
+
+drop view migtest_e_history5_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+drop trigger if exists migtest_e_history6_history_upd on migtest_e_history6 cascade;
+drop function if exists migtest_e_history6_history_version();
+
+drop view migtest_e_history6_with_history;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 type varchar(127) using status2::varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 drop not null;
+alter table migtest_e_basic alter column user_id drop not null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history alter column test_string type bigint using test_string::bigint;
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 varchar(255);
+alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2 add column new_column varchar(20);
+alter table migtest_e_history2_history add column test_string2 varchar(255);
+alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown';
+alter table migtest_e_history2_history add column new_column varchar(20);
+alter table migtest_e_history4 alter column test_number type bigint using test_number::bigint;
+alter table migtest_e_history4_history alter column test_number type bigint using test_number::bigint;
+alter table migtest_e_history5 add column test_boolean boolean default false not null;
+alter table migtest_e_history5_history add column test_boolean boolean default false;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 drop not null;
+alter table migtest_e_history6_history alter column test_number2 drop not null;
+alter table migtest_e_softdelete add column deleted boolean default false not null;
+alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+create table migtest_e_history_history(like migtest_e_history);
+create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
+create or replace function migtest_e_history_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history_history_upd
+ before update or delete on migtest_e_history
+ for each row execute procedure migtest_e_history_history_version();
+
+
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create or replace function migtest_e_history2_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create or replace function migtest_e_history3_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history3_history_upd
+ before update or delete on migtest_e_history3
+ for each row execute procedure migtest_e_history3_history_version();
+
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create or replace function migtest_e_history4_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history4_history_upd
+ before update or delete on migtest_e_history4
+ for each row execute procedure migtest_e_history4_history_version();
+
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create or replace function migtest_e_history5_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history5_history_upd
+ before update or delete on migtest_e_history5
+ for each row execute procedure migtest_e_history5_history_version();
+
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create or replace function migtest_e_history6_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history6_history_upd
+ before update or delete on migtest_e_history6
+ for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
+create index if not exists ix_migtest_oto_child_name on migtest_oto_child (name);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..a9fef454c
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.2__dropsFor_1.1.sql
@@ -0,0 +1,41 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+alter table migtest_e_history2_history drop column obsolete_string1;
+alter table migtest_e_history2_history drop column obsolete_string2;
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create or replace function migtest_e_history2_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+drop table if exists migtest_e_ref cascade;
+drop sequence if exists migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql
new file mode 100644
index 000000000..33d980263
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql
@@ -0,0 +1,186 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table if exists migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
+alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table if exists migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
+alter table if exists migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
+alter table if exists migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+alter table if exists migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
+-- apply changes
+create table migtest_e_ref (
+ id serial not null,
+ name varchar(127) not null,
+ constraint uq_migtest_e_ref_name unique (name),
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+drop trigger if exists migtest_e_history3_history_upd on migtest_e_history3 cascade;
+drop function if exists migtest_e_history3_history_version();
+
+drop view migtest_e_history3_with_history;
+drop trigger if exists migtest_e_history4_history_upd on migtest_e_history4 cascade;
+drop function if exists migtest_e_history4_history_version();
+
+drop view migtest_e_history4_with_history;
+drop trigger if exists migtest_e_history6_history_upd on migtest_e_history6 cascade;
+drop function if exists migtest_e_history6_history_version();
+
+drop view migtest_e_history6_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status drop not null;
+alter table migtest_e_basic alter column status2 type varchar(1) using status2::varchar(1);
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file bytea;
+alter table migtest_e_basic add column old_boolean boolean default false not null;
+alter table migtest_e_basic add column old_boolean2 boolean;
+alter table migtest_e_basic add column eref_id integer;
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string drop not null;
+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 alter column test_string drop not null;
+alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
+alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
+alter table migtest_e_history4 alter column test_number type integer using test_number::integer;
+alter table migtest_e_history4_history alter column test_number type integer using test_number::integer;
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 drop not null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+alter table migtest_e_history6_history alter column test_number1 drop not null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create or replace function migtest_e_history2_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
+create or replace function migtest_e_history3_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history3_history_upd
+ before update or delete on migtest_e_history3
+ for each row execute procedure migtest_e_history3_history_version();
+
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
+create or replace function migtest_e_history4_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history4_history_upd
+ before update or delete on migtest_e_history4
+ for each row execute procedure migtest_e_history4_history_version();
+
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create or replace function migtest_e_history6_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history6_history_upd
+ before update or delete on migtest_e_history6
+ for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
+create index if not exists ix_m12_otoc71 on migtest_oto_child (name);
+create unique index if not exists uq_m12_otoc71 on migtest_oto_child (lower(name));
+create unique index if not exists ix_migtest_oto_master_lowername on migtest_oto_master (lower(name));
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..822e9f61a
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.4__dropsFor_1.3.sql
@@ -0,0 +1,89 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+drop trigger if exists migtest_e_history_history_upd on migtest_e_history cascade;
+drop function if exists migtest_e_history_history_version();
+
+drop view migtest_e_history_with_history;
+drop table migtest_e_history_history;
+
+-- apply changes
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+drop trigger if exists migtest_e_history5_history_upd on migtest_e_history5 cascade;
+drop function if exists migtest_e_history5_history_version();
+
+drop view migtest_e_history5_with_history;
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+alter table migtest_ckey_parent drop column assoc_id;
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+alter table migtest_e_history drop column sys_period;
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history2_history drop column test_string2;
+alter table migtest_e_history2_history drop column test_string3;
+alter table migtest_e_history2_history drop column new_column;
+alter table migtest_e_history5 drop column test_boolean;
+alter table migtest_e_history5_history drop column test_boolean;
+alter table migtest_e_softdelete drop column deleted;
+alter table migtest_oto_child drop column master_id;
+-- apply post alter
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
+create or replace function migtest_e_history2_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
+create or replace function migtest_e_history5_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history5_history_upd
+ before update or delete on migtest_e_history5
+ for each row execute procedure migtest_e_history5_history_version();
+
+drop table if exists migtest_e_user cascade;
+drop sequence if exists migtest_e_user_seq;
+drop table if exists migtest_mtm_c_migtest_mtm_m cascade;
+drop table if exists migtest_mtm_m_migtest_mtm_c cascade;
+drop table if exists migtest_mtm_m_phone_numbers cascade;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/R__multi_comments.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/R__multi_comments.sql
new file mode 100644
index 000000000..0ede0c9eb
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/R__multi_comments.sql
@@ -0,0 +1,3 @@
+
+ -- h2 and postgres script
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/R__order_views.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/R__order_views.sql
new file mode 100644
index 000000000..ccf30a2c6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/R__order_views.sql
@@ -0,0 +1,7 @@
+
+ create or replace view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/R__pg_indexes.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/R__pg_indexes.sql
new file mode 100644
index 000000000..fa0bab998
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/R__pg_indexes.sql
@@ -0,0 +1,4 @@
+
+ -- postgres specific indexes
+ create index ix_ebasic_jmjb_gin2 on ebasic_json_map_json_b using gin(content jsonb_path_ops);
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations
new file mode 100644
index 000000000..e9d7134dc
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations
@@ -0,0 +1,9 @@
+-1050466540, 1.0__initial.sql
+-976679466, 1.1.sql
+-1098989118, 1.2__dropsFor_1.1.sql
+303027582, 1.3.sql
+1729345905, 1.4__dropsFor_1.3.sql
+783227075, R__multi_comments.sql
+561281075, R__order_views.sql
+283077354, R__pg_indexes.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/sqlite/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.0__initial.sql
similarity index 58%
rename from ebean-test/src/test/resources/migrationtest/dbinit/sqlite/1.4.sql
rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.0__initial.sql
index 961185b94..a9b87d1e1 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/sqlite/1.4.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.0__initial.sql
@@ -1,13 +1,13 @@
-- Migrationscripts for ebean unittest
-- apply changes
create table migtest_ckey_assoc (
- id integer not null,
+ id integer auto_increment not null,
assoc_one varchar(255),
constraint pk_migtest_ckey_assoc primary key (id)
);
create table migtest_ckey_detail (
- id integer not null,
+ id integer auto_increment not null,
something varchar(255),
constraint pk_migtest_ckey_detail primary key (id)
);
@@ -21,51 +21,49 @@ create table migtest_ckey_parent (
);
create table migtest_fk_cascade (
- id integer not null,
- one_id integer,
- constraint pk_migtest_fk_cascade primary key (id),
- foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict
+ id numeric(19) auto_increment not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_cascade primary key (id)
);
create table migtest_fk_cascade_one (
- id integer not null,
+ id numeric(19) auto_increment not null,
constraint pk_migtest_fk_cascade_one primary key (id)
);
create table migtest_fk_none (
- id integer not null,
- one_id integer,
+ id numeric(19) auto_increment not null,
+ one_id numeric(19),
constraint pk_migtest_fk_none primary key (id)
);
create table migtest_fk_none_via_join (
- id integer not null,
- one_id integer,
+ id numeric(19) auto_increment not null,
+ one_id numeric(19),
constraint pk_migtest_fk_none_via_join primary key (id)
);
create table migtest_fk_one (
- id integer not null,
+ id numeric(19) auto_increment not null,
constraint pk_migtest_fk_one primary key (id)
);
create table migtest_fk_set_null (
- id integer not null,
- one_id integer,
- constraint pk_migtest_fk_set_null primary key (id),
- foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict
+ id numeric(19) auto_increment not null,
+ one_id numeric(19),
+ constraint pk_migtest_fk_set_null primary key (id)
);
create table migtest_e_basic (
- id integer not null,
+ id integer auto_increment not null,
status varchar(1),
status2 varchar(1) default 'N' not null,
name varchar(127),
description varchar(127),
- description_file blob,
+ description_file binary(4500),
some_date timestamp,
- old_boolean int default 0 not null,
- old_boolean2 int,
+ old_boolean bit default false not null,
+ old_boolean2 bit,
eref_id integer,
indextest1 varchar(127),
indextest2 varchar(127),
@@ -73,30 +71,29 @@ create table migtest_e_basic (
indextest4 varchar(127),
indextest5 varchar(127),
indextest6 varchar(127),
- user_id integer default 23 not null,
+ 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),
- foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict
+ constraint pk_migtest_e_basic primary key (id)
);
create table migtest_e_enum (
- id integer not null,
+ id integer auto_increment not null,
test_status varchar(1),
constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
constraint pk_migtest_e_enum primary key (id)
);
create table migtest_e_history (
- id integer not null,
- test_string integer,
+ id integer auto_increment not null,
+ test_string varchar(255),
constraint pk_migtest_e_history primary key (id)
);
create table migtest_e_history2 (
- id integer not null,
+ id integer auto_increment not null,
test_string varchar(255),
obsolete_string1 varchar(255),
obsolete_string2 varchar(255),
@@ -104,66 +101,76 @@ create table migtest_e_history2 (
);
create table migtest_e_history3 (
- id integer not null,
+ id integer auto_increment not null,
test_string varchar(255),
constraint pk_migtest_e_history3 primary key (id)
);
create table migtest_e_history4 (
- id integer not null,
+ id integer auto_increment not null,
test_number integer,
constraint pk_migtest_e_history4 primary key (id)
);
create table migtest_e_history5 (
- id integer not null,
+ id integer auto_increment not null,
test_number integer,
constraint pk_migtest_e_history5 primary key (id)
);
create table migtest_e_history6 (
- id integer not null,
+ id integer auto_increment not null,
test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number2 integer not null,
constraint pk_migtest_e_history6 primary key (id)
);
create table migtest_e_ref (
- id integer not null,
+ id integer auto_increment not null,
name varchar(127) not null,
constraint uq_migtest_e_ref_name unique (name),
constraint pk_migtest_e_ref primary key (id)
);
create table migtest_e_softdelete (
- id integer not null,
+ id integer auto_increment not null,
test_string varchar(255),
constraint pk_migtest_e_softdelete primary key (id)
);
create table migtest_mtm_c (
- id integer not null,
+ id integer auto_increment not null,
name varchar(255),
constraint pk_migtest_mtm_c primary key (id)
);
create table migtest_mtm_m (
- id integer not null,
+ id numeric(19) auto_increment not null,
name varchar(255),
constraint pk_migtest_mtm_m primary key (id)
);
create table migtest_oto_child (
- id integer not null,
+ id integer auto_increment not null,
name varchar(255),
constraint pk_migtest_oto_child primary key (id)
);
create table migtest_oto_master (
- id integer not null,
+ id numeric(19) auto_increment not null,
name varchar(255),
constraint pk_migtest_oto_master primary key (id)
);
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.1.sql
new file mode 100644
index 000000000..a1422148b
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.1.sql
@@ -0,0 +1,116 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
+-- apply changes
+create table migtest_e_user (
+ id integer auto_increment not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id numeric(19) not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id numeric(19) not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id numeric(19) not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- rename all collisions;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 set null;
+alter table migtest_e_basic alter column user_id set null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field bit default true not null;
+alter table migtest_e_basic add column new_boolean_field2 bit default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history alter column test_string numeric(19);
+alter table migtest_e_history2 alter column test_string set default 'unknown';
+alter table migtest_e_history2 alter column test_string set not null;
+alter table migtest_e_history2 add column test_string2 varchar(255);
+alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2 add column new_column varchar(20);
+alter table migtest_e_history4 alter column test_number numeric(19);
+alter table migtest_e_history5 add column test_boolean bit default false not null;
+alter table migtest_e_history6 alter column test_number1 set default 42;
+alter table migtest_e_history6 alter column test_number1 set not null;
+alter table migtest_e_history6 alter column test_number2 set null;
+alter table migtest_e_softdelete add column deleted bit default false not null;
+alter table migtest_oto_child add column master_id numeric(19);
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..4ec79a34c
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.2__dropsFor_1.1.sql
@@ -0,0 +1,10 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_e_basic drop column description_file;
+alter table migtest_e_basic drop column old_boolean;
+alter table migtest_e_basic drop column old_boolean2;
+alter table migtest_e_basic drop column eref_id;
+alter table migtest_e_history2 drop column obsolete_string1;
+alter table migtest_e_history2 drop column obsolete_string2;
+-- apply post alter
+drop table if exists migtest_e_ref;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.3.sql
new file mode 100644
index 000000000..95888a2ae
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.3.sql
@@ -0,0 +1,70 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
+alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
+alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
+alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
+-- apply changes
+create table migtest_e_ref (
+ id integer auto_increment not null,
+ name varchar(127) not null,
+ constraint uq_migtest_e_ref_name unique (name),
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status set null;
+alter table migtest_e_basic alter column status2 varchar(1);
+alter table migtest_e_basic alter column status2 set default 'N';
+alter table migtest_e_basic alter column status2 set not null;
+alter table migtest_e_basic alter column user_id set default 23;
+alter table migtest_e_basic alter column user_id set not null;
+alter table migtest_e_basic add column description_file binary(4500);
+alter table migtest_e_basic add column old_boolean bit default false not null;
+alter table migtest_e_basic add column old_boolean2 bit;
+alter table migtest_e_basic add column eref_id integer;
+alter table migtest_e_history2 alter column test_string drop default;
+alter table migtest_e_history2 alter column test_string set null;
+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 alter column test_number integer;
+alter table migtest_e_history6 alter column test_number1 drop default;
+alter table migtest_e_history6 alter column test_number1 set null;
+alter table migtest_e_history6 alter column test_number2 set default 7;
+alter table migtest_e_history6 alter column test_number2 set not null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..b4087d6d6
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/1.4__dropsFor_1.3.sql
@@ -0,0 +1,21 @@
+-- Migrationscripts for ebean unittest
+-- apply alter tables
+alter table migtest_ckey_detail drop column one_key;
+alter table migtest_ckey_detail drop column two_key;
+alter table migtest_ckey_parent drop column assoc_id;
+alter table migtest_e_basic drop column new_string_field;
+alter table migtest_e_basic drop column new_boolean_field;
+alter table migtest_e_basic drop column new_boolean_field2;
+alter table migtest_e_basic drop column progress;
+alter table migtest_e_basic drop column new_integer;
+alter table migtest_e_history2 drop column test_string2;
+alter table migtest_e_history2 drop column test_string3;
+alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history5 drop column test_boolean;
+alter table migtest_e_softdelete drop column deleted;
+alter table migtest_oto_child drop column master_id;
+-- apply post alter
+drop table if exists migtest_e_user;
+drop table if exists migtest_mtm_c_migtest_mtm_m;
+drop table if exists migtest_mtm_m_migtest_mtm_c;
+drop table if exists migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/idx_sqlanywhere.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/idx_sqlanywhere.migrations
new file mode 100644
index 000000000..4300368c8
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlanywhere/idx_sqlanywhere.migrations
@@ -0,0 +1,6 @@
+-2005091128, 1.0__initial.sql
+887406340, 1.1.sql
+1279151426, 1.2__dropsFor_1.1.sql
+-671185644, 1.3.sql
+80209848, 1.4__dropsFor_1.3.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql
index 8afe5c89e..cf3ffe5d2 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.0__initial.sql
@@ -165,5 +165,6 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
+-- foreign keys and indices
create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.1.sql
index 888db9989..a8880c063 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.1.sql
@@ -1,4 +1,14 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+-- not supported: alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+-- not supported: alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+-- not supported: alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+-- not supported: alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+-- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+-- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+-- not supported: alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
-- apply changes
create table migtest_e_user (
id integer not null,
@@ -27,72 +37,68 @@ create table migtest_mtm_m_phone_numbers (
foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict
);
-alter table migtest_ckey_detail add column one_key integer;
-alter table migtest_ckey_detail add column two_key varchar(127);
-
-alter table migtest_ckey_parent add column assoc_id integer;
-
-alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
update migtest_e_basic set status = 'A' where status is null;
-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);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic alter column user_id set null;
-alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
-alter table migtest_e_basic add column new_boolean_field int default 1 not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
-alter table migtest_e_basic add column new_boolean_field2 int default 1 not null;
-alter table migtest_e_basic add column progress integer default 0 not null;
-alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
-alter table migtest_e_basic add column new_integer integer default 42 not null;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
-alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
-alter table migtest_e_history alter column test_string integer;
-- 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 column test_string set default 'unknown';
-alter table migtest_e_history2 alter column test_string set not null;
-alter table migtest_e_history2 add column test_string2 varchar(255);
-alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
-alter table migtest_e_history2 add column new_column varchar(20);
-
-alter table migtest_e_history4 alter column test_number integer;
-alter table migtest_e_history5 add column test_boolean int 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 alter column test_number1 set default 42;
-alter table migtest_e_history6 alter column test_number1 set not null;
-alter table migtest_e_history6 alter column test_number2 set null;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+-- not supported: alter table migtest_e_basic alter column status set default 'A';
+-- not supported: alter table migtest_e_basic alter column status set not null;
+-- not supported: alter table migtest_e_basic alter column status2 varchar(127);
+-- not supported: alter table migtest_e_basic alter column status2 drop default;
+-- not supported: alter table migtest_e_basic alter column status2 set null;
+-- not supported: alter table migtest_e_basic alter column user_id set null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field int default 1 not null;
+alter table migtest_e_basic add column new_boolean_field2 int default 1 not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+-- not supported: alter table migtest_e_history alter column test_string integer;
+-- not supported: alter table migtest_e_history2 alter column test_string set default 'unknown';
+-- not supported: alter table migtest_e_history2 alter column test_string set not null;
+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);
+-- not supported: alter table migtest_e_history4 alter column test_number integer;
+alter table migtest_e_history5 add column test_boolean int default 0 not null;
+-- not supported: alter table migtest_e_history6 alter column test_number1 set default 42;
+-- not supported: alter table migtest_e_history6 alter column test_number1 set not null;
+-- not supported: alter table migtest_e_history6 alter column test_number2 set null;
alter table migtest_e_softdelete add column deleted int default 0 not null;
-
alter table migtest_oto_child add column master_id integer;
+-- apply post alter
+-- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+-- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+-- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+-- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+-- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+-- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+-- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
+-- foreign keys and indices
+-- not supported: alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+-- not supported: alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+-- not supported: alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+-- not supported: alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+-- not supported: alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+-- not supported: alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+-- not supported: alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+-- not supported: alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-drop index if exists ix_migtest_e_basic_indextest1;
-drop index if exists ix_migtest_e_basic_indextest5;
-create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
-
-
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.2__dropsFor_1.1.sql
index bf1e082c9..4ec79a34c 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.2__dropsFor_1.1.sql
@@ -1,15 +1,10 @@
-- Migrationscripts for ebean unittest
--- apply changes
+-- apply alter tables
alter table migtest_e_basic drop column description_file;
-
alter table migtest_e_basic drop column old_boolean;
-
alter table migtest_e_basic drop column old_boolean2;
-
alter table migtest_e_basic drop column eref_id;
-
alter table migtest_e_history2 drop column obsolete_string1;
-
alter table migtest_e_history2 drop column obsolete_string2;
-
+-- apply post alter
drop table if exists migtest_e_ref;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.3.sql
index fa47a26c1..10f81b07d 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.3.sql
@@ -1,4 +1,21 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+-- not supported: alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
+-- not supported: alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+-- not supported: alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
+-- not supported: alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
+-- not supported: alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+-- not supported: alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+-- not supported: alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+-- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+-- not supported: alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
+-- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+-- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+-- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+-- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+-- not supported: alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
-- apply changes
create table migtest_e_ref (
id integer not null,
@@ -7,57 +24,45 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
-alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
-alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
-alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
-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;
-alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
-alter table migtest_e_basic alter column user_id set default 23;
-alter table migtest_e_basic alter column user_id set not null;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+-- not supported: alter table migtest_e_basic alter column status drop default;
+-- not supported: alter table migtest_e_basic alter column status set null;
+-- not supported: alter table migtest_e_basic alter column status2 varchar(1);
+-- not supported: alter table migtest_e_basic alter column status2 set default 'N';
+-- not supported: alter table migtest_e_basic alter column status2 set not null;
+-- not supported: alter table migtest_e_basic alter column user_id set default 23;
+-- not supported: alter table migtest_e_basic alter column user_id set not null;
alter table migtest_e_basic add column description_file blob;
alter table migtest_e_basic add column old_boolean int default 0 not null;
alter table migtest_e_basic add column old_boolean2 int;
alter table migtest_e_basic add column eref_id integer;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
-alter table migtest_e_basic drop constraint 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_enum drop constraint if exists 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'));
-alter table migtest_e_history2 alter column test_string drop default;
-alter table migtest_e_history2 alter column test_string set null;
+-- not supported: alter table migtest_e_history2 alter column test_string drop default;
+-- not supported: alter table migtest_e_history2 alter column test_string set null;
alter table migtest_e_history2 add column obsolete_string1 varchar(255);
alter table migtest_e_history2 add column obsolete_string2 varchar(255);
+-- not supported: alter table migtest_e_history4 alter column test_number integer;
+-- not supported: alter table migtest_e_history6 alter column test_number1 drop default;
+-- not supported: alter table migtest_e_history6 alter column test_number1 set null;
+-- not supported: alter table migtest_e_history6 alter column test_number2 set default 7;
+-- not supported: alter table migtest_e_history6 alter column test_number2 set not null;
+-- apply post alter
+-- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+-- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+-- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+-- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+-- not supported: alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+-- foreign keys and indices
+-- not supported: alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+-- not supported: alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+-- not supported: alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-alter table migtest_e_history4 alter column test_number integer;
-alter table migtest_e_history6 alter column test_number1 drop default;
-alter table migtest_e_history6 alter column test_number1 set null;
-
--- 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 column test_number2 set default 7;
-alter table migtest_e_history6 alter column test_number2 set not null;
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 if exists ix_migtest_e_basic_indextest3;
-drop index if exists ix_migtest_e_basic_indextest6;
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.4__dropsFor_1.3.sql
index f45a36211..b4087d6d6 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/1.4__dropsFor_1.3.sql
@@ -1,33 +1,20 @@
-- Migrationscripts for ebean unittest
--- apply changes
+-- apply alter tables
alter table migtest_ckey_detail drop column one_key;
-
alter table migtest_ckey_detail drop column two_key;
-
alter table migtest_ckey_parent drop column assoc_id;
-
alter table migtest_e_basic drop column new_string_field;
-
alter table migtest_e_basic drop column new_boolean_field;
-
alter table migtest_e_basic drop column new_boolean_field2;
-
alter table migtest_e_basic drop column progress;
-
alter table migtest_e_basic drop column new_integer;
-
alter table migtest_e_history2 drop column test_string2;
-
alter table migtest_e_history2 drop column test_string3;
-
alter table migtest_e_history2 drop column new_column;
-
alter table migtest_e_history5 drop column test_boolean;
-
alter table migtest_e_softdelete drop column deleted;
-
alter table migtest_oto_child drop column master_id;
-
+-- apply post alter
drop table if exists migtest_e_user;
drop table if exists migtest_mtm_c_migtest_mtm_m;
drop table if exists migtest_mtm_m_migtest_mtm_c;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations
index 9909a4923..3be0f6a87 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlite/idx_sqlite.migrations
@@ -1,7 +1,7 @@
-181087169, 1.0__initial.sql
--1974335860, 1.1.sql
-628353409, 1.2__dropsFor_1.1.sql
-1537582239, 1.3.sql
--1045594368, 1.4__dropsFor_1.3.sql
+-990693989, 1.0__initial.sql
+-71853945, 1.1.sql
+1279151426, 1.2__dropsFor_1.1.sql
+1929931571, 1.3.sql
+80209848, 1.4__dropsFor_1.3.sql
2034589659, R__order_views_sqlite.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbinit/sqlserver17/1.4.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.0__initial.sql
similarity index 61%
rename from ebean-test/src/test/resources/migrationtest/dbinit/sqlserver17/1.4.sql
rename to ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.0__initial.sql
index 196403ef3..48167f522 100644
--- a/ebean-test/src/test/resources/migrationtest/dbinit/sqlserver17/1.4.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.0__initial.sql
@@ -1,200 +1,167 @@
-- Migrationscripts for ebean unittest
-- apply changes
create table migtest_ckey_assoc (
- id integer not null,
- assoc_one nvarchar(255),
+ id integer identity(1,1) not null,
+ assoc_one varchar(255),
constraint pk_migtest_ckey_assoc primary key (id)
);
-create sequence migtest_ckey_assoc_seq as bigint start with 1;
create table migtest_ckey_detail (
- id integer not null,
- something nvarchar(255),
+ id integer identity(1,1) not null,
+ something varchar(255),
constraint pk_migtest_ckey_detail primary key (id)
);
-create sequence migtest_ckey_detail_seq as bigint start with 1;
create table migtest_ckey_parent (
one_key integer not null,
- two_key nvarchar(127) not null,
- name nvarchar(255),
+ two_key varchar(127) not null,
+ name varchar(255),
version integer not null,
constraint pk_migtest_ckey_parent primary key (one_key,two_key)
);
create table migtest_fk_cascade (
- id numeric(19) not null,
+ id numeric(19) identity(1,1) not null,
one_id numeric(19),
constraint pk_migtest_fk_cascade primary key (id)
);
-create sequence migtest_fk_cascade_seq as bigint start with 1;
create table migtest_fk_cascade_one (
- id numeric(19) not null,
+ id numeric(19) identity(1,1) not null,
constraint pk_migtest_fk_cascade_one primary key (id)
);
-create sequence migtest_fk_cascade_one_seq as bigint start with 1;
create table migtest_fk_none (
- id numeric(19) not null,
+ id numeric(19) identity(1,1) not null,
one_id numeric(19),
constraint pk_migtest_fk_none primary key (id)
);
-create sequence migtest_fk_none_seq as bigint start with 1;
create table migtest_fk_none_via_join (
- id numeric(19) not null,
+ id numeric(19) identity(1,1) not null,
one_id numeric(19),
constraint pk_migtest_fk_none_via_join primary key (id)
);
-create sequence migtest_fk_none_via_join_seq as bigint start with 1;
create table migtest_fk_one (
- id numeric(19) not null,
+ id numeric(19) identity(1,1) not null,
constraint pk_migtest_fk_one primary key (id)
);
-create sequence migtest_fk_one_seq as bigint start with 1;
create table migtest_fk_set_null (
- id numeric(19) not null,
+ id numeric(19) identity(1,1) not null,
one_id numeric(19),
constraint pk_migtest_fk_set_null primary key (id)
);
-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),
+ id integer identity(1,1) not null,
+ status varchar(1),
+ status2 varchar(1) default 'N' not null,
+ name varchar(127),
+ description varchar(127),
description_file image,
some_date datetime2,
old_boolean bit default 0 not null,
old_boolean2 bit,
eref_id integer,
- indextest1 nvarchar(127),
- indextest2 nvarchar(127),
- indextest3 nvarchar(127),
- indextest4 nvarchar(127),
- indextest5 nvarchar(127),
- indextest6 nvarchar(127),
- user_id integer default 23 not null,
+ indextest1 varchar(127),
+ indextest2 varchar(127),
+ indextest3 varchar(127),
+ indextest4 varchar(127),
+ indextest5 varchar(127),
+ 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 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;
-create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null;
-create sequence migtest_e_basic_seq as bigint start with 1;
create table migtest_e_enum (
- id integer not null,
- test_status nvarchar(1),
+ id integer identity(1,1) not null,
+ test_status varchar(1),
constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
constraint pk_migtest_e_enum primary key (id)
);
-create sequence migtest_e_enum_seq as bigint start with 1;
create table migtest_e_history (
- id integer not null,
- test_string numeric(19),
+ id integer identity(1,1) not null,
+ test_string varchar(255),
constraint pk_migtest_e_history primary key (id)
);
-create sequence migtest_e_history_seq as bigint start with 1;
create table migtest_e_history2 (
- id integer not null,
- test_string nvarchar(255),
- obsolete_string1 nvarchar(255),
- obsolete_string2 nvarchar(255),
+ id integer identity(1,1) not null,
+ test_string varchar(255),
+ obsolete_string1 varchar(255),
+ obsolete_string2 varchar(255),
constraint pk_migtest_e_history2 primary key (id)
);
-create sequence migtest_e_history2_seq as bigint start with 1;
create table migtest_e_history3 (
- id integer not null,
- test_string nvarchar(255),
+ id integer identity(1,1) not null,
+ test_string varchar(255),
constraint pk_migtest_e_history3 primary key (id)
);
-create sequence migtest_e_history3_seq as bigint start with 1;
create table migtest_e_history4 (
- id integer not null,
+ id integer identity(1,1) not null,
test_number integer,
constraint pk_migtest_e_history4 primary key (id)
);
-create sequence migtest_e_history4_seq as bigint start with 1;
create table migtest_e_history5 (
- id integer not null,
+ id integer identity(1,1) not null,
test_number integer,
constraint pk_migtest_e_history5 primary key (id)
);
-create sequence migtest_e_history5_seq as bigint start with 1;
create table migtest_e_history6 (
- id integer not null,
+ id integer identity(1,1) not null,
test_number1 integer,
- test_number2 integer default 7 not null,
+ test_number2 integer not null,
constraint pk_migtest_e_history6 primary key (id)
);
-create sequence migtest_e_history6_seq as bigint start with 1;
create table migtest_e_ref (
- id integer not null,
- name nvarchar(127) not null,
+ id integer identity(1,1) not null,
+ name varchar(127) not null,
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
-create sequence migtest_e_ref_seq as bigint start with 1;
create table migtest_e_softdelete (
- id integer not null,
- test_string nvarchar(255),
+ id integer identity(1,1) not null,
+ test_string varchar(255),
constraint pk_migtest_e_softdelete primary key (id)
);
-create sequence migtest_e_softdelete_seq as bigint start with 1;
create table migtest_mtm_c (
- id integer not null,
- name nvarchar(255),
+ id integer identity(1,1) not null,
+ name varchar(255),
constraint pk_migtest_mtm_c primary key (id)
);
-create sequence migtest_mtm_c_seq as bigint start with 1;
create table migtest_mtm_m (
- id numeric(19) not null,
- name nvarchar(255),
+ id numeric(19) identity(1,1) not null,
+ name varchar(255),
constraint pk_migtest_mtm_m primary key (id)
);
-create sequence migtest_mtm_m_seq as bigint start with 1;
create table migtest_oto_child (
- id integer not null,
- name nvarchar(255),
+ id integer identity(1,1) not null,
+ name varchar(255),
constraint pk_migtest_oto_child primary key (id)
);
-create sequence migtest_oto_child_seq as bigint start with 1;
create table migtest_oto_master (
- id numeric(19) not null,
- name nvarchar(255),
+ id numeric(19) identity(1,1) not null,
+ name varchar(255),
constraint pk_migtest_oto_master primary key (id)
);
-create sequence migtest_oto_master_seq as bigint start with 1;
-
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+-- apply post alter
+create unique nonclustered index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) where indextest2 is not null;
+create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null;
alter table migtest_e_history2
add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
@@ -220,3 +187,16 @@ alter table migtest_e_history6
sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
period for system_time (sys_periodFrom, sys_periodTo);
alter table migtest_e_history6 set (system_versioning = on (history_table=dbo.migtest_e_history6_history));
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql
new file mode 100644
index 000000000..cf7074030
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql
@@ -0,0 +1,138 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+IF OBJECT_ID('fk_migtest_fk_cascade_one_id', 'F') IS NOT NULL alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_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;
+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_status2', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
+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 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('ck_migtest_e_enum_test_status', 'C') IS NOT NULL alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
+IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest1') drop index ix_migtest_e_basic_indextest1 ON migtest_e_basic;
+IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest5') drop index ix_migtest_e_basic_indextest5 ON migtest_e_basic;
+-- apply changes
+create table migtest_e_user (
+ id integer identity(1,1) not null,
+ constraint pk_migtest_e_user primary key (id)
+);
+
+create table migtest_mtm_c_migtest_mtm_m (
+ migtest_mtm_c_id integer not null,
+ migtest_mtm_m_id numeric(19) not null,
+ constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id)
+);
+
+create table migtest_mtm_m_migtest_mtm_c (
+ migtest_mtm_m_id numeric(19) not null,
+ migtest_mtm_c_id integer not null,
+ constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id)
+);
+
+create table migtest_mtm_m_phone_numbers (
+ migtest_mtm_m_id numeric(19) not null,
+ value varchar(255) not null
+);
+
+
+update migtest_e_basic set status = 'A' where status is null;
+
+-- rename all collisions;
+
+insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history2 set test_string = 'unknown' where test_string is null;
+-- alter table migtest_e_history2 set (system_versioning = off (history_table=dbo.migtest_e_history2_history));
+-- history migration goes here
+-- alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+-- alter table migtest_e_history3 set (system_versioning = off (history_table=dbo.migtest_e_history3_history));
+-- history migration goes here
+-- alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history));
+-- alter table migtest_e_history4 set (system_versioning = off (history_table=dbo.migtest_e_history4_history));
+-- history migration goes here
+-- alter table migtest_e_history4 set (system_versioning = on (history_table=dbo.migtest_e_history4_history));
+-- alter table migtest_e_history5 set (system_versioning = off (history_table=dbo.migtest_e_history5_history));
+-- history migration goes here
+-- alter table migtest_e_history5 set (system_versioning = on (history_table=dbo.migtest_e_history5_history));
+
+-- 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 set (system_versioning = off (history_table=dbo.migtest_e_history6_history));
+-- history migration goes here
+-- alter table migtest_e_history6 set (system_versioning = on (history_table=dbo.migtest_e_history6_history));
+-- apply alter tables
+alter table migtest_ckey_detail add one_key integer;
+alter table migtest_ckey_detail add two_key varchar(127);
+alter table migtest_ckey_parent add assoc_id integer;
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, status;
+alter table migtest_e_basic alter column status varchar(1) not null;
+alter table migtest_e_basic add default 'A' for status;
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2;
+alter table migtest_e_basic alter column status2 varchar(127);
+alter table migtest_e_basic alter column user_id integer;
+alter table migtest_e_basic add new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add new_boolean_field bit default 1 not null;
+alter table migtest_e_basic add new_boolean_field2 bit default 1 not null;
+alter table migtest_e_basic add progress integer default 0 not null;
+alter table migtest_e_basic add new_integer integer default 42 not null;
+alter table migtest_e_history alter column test_string numeric(19);
+EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string;
+alter table migtest_e_history2 alter column test_string varchar(255) not null;
+alter table migtest_e_history2 add default 'unknown' for test_string;
+alter table migtest_e_history2 add test_string2 varchar(255);
+alter table migtest_e_history2 add test_string3 varchar(255) default 'unknown' not null;
+alter table migtest_e_history2 add new_column varchar(20);
+alter table migtest_e_history4 alter column test_number numeric(19);
+alter table migtest_e_history5 add test_boolean bit default 0 not null;
+EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1;
+alter table migtest_e_history6 alter column test_number1 integer not null;
+alter table migtest_e_history6 add default 42 for test_number1;
+alter table migtest_e_history6 alter column test_number2 integer;
+alter table migtest_e_softdelete add deleted bit default 0 not null;
+alter table migtest_oto_child add master_id numeric(19);
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+create unique nonclustered index uq_migtest_e_basic_description on migtest_e_basic(description) where description is not null;
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
+
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+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;
+alter table migtest_e_history
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history set (system_versioning = on (history_table=dbo.migtest_e_history_history));
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id);
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_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);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id);
+
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.2__dropsFor_1.1.sql
new file mode 100644
index 000000000..36fa8d503
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.2__dropsFor_1.1.sql
@@ -0,0 +1,15 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+-- alter table migtest_e_history2 set (system_versioning = off (history_table=dbo.migtest_e_history2_history));
+-- history migration goes here
+-- alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+-- apply alter tables
+EXEC usp_ebean_drop_column migtest_e_basic, description_file;
+EXEC usp_ebean_drop_column migtest_e_basic, old_boolean;
+EXEC usp_ebean_drop_column migtest_e_basic, old_boolean2;
+EXEC usp_ebean_drop_column migtest_e_basic, eref_id;
+EXEC usp_ebean_drop_column migtest_e_history2, obsolete_string1;
+EXEC usp_ebean_drop_column migtest_e_history2, obsolete_string2;
+-- apply post alter
+IF OBJECT_ID('migtest_e_ref', 'U') IS NOT NULL drop table migtest_e_ref;
+IF OBJECT_ID('migtest_e_ref_seq', 'SO') IS NOT NULL drop sequence migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql
new file mode 100644
index 000000000..1c4007cd9
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql
@@ -0,0 +1,87 @@
+-- Migrationscripts for ebean unittest
+-- drop dependencies
+IF OBJECT_ID('fk_migtest_ckey_detail_parent', 'F') IS NOT NULL alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent;
+IF OBJECT_ID('fk_migtest_fk_cascade_one_id', 'F') IS NOT NULL alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
+IF OBJECT_ID('fk_migtest_fk_none_one_id', 'F') IS NOT NULL alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id;
+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;
+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_status2', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
+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('fk_migtest_e_basic_user_id', 'F') IS NOT NULL alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id;
+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 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 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 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('ck_migtest_e_enum_test_status', 'C') IS NOT NULL alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
+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;
+IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest6') drop index ix_migtest_e_basic_indextest6 ON migtest_e_basic;
+-- apply changes
+create table migtest_e_ref (
+ id integer identity(1,1) not null,
+ name varchar(127) not null,
+ constraint pk_migtest_e_ref primary key (id)
+);
+
+
+update migtest_e_basic set status2 = 'N' where status2 is null;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+-- alter table migtest_e_history2 set (system_versioning = off (history_table=dbo.migtest_e_history2_history));
+-- history migration goes here
+-- alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+-- alter table migtest_e_history3 set (system_versioning = off (history_table=dbo.migtest_e_history3_history));
+-- history migration goes here
+-- alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history));
+-- alter table migtest_e_history4 set (system_versioning = off (history_table=dbo.migtest_e_history4_history));
+-- history migration goes here
+-- alter table migtest_e_history4 set (system_versioning = on (history_table=dbo.migtest_e_history4_history));
+-- alter table migtest_e_history6 set (system_versioning = off (history_table=dbo.migtest_e_history6_history));
+-- history migration goes here
+-- alter table migtest_e_history6 set (system_versioning = on (history_table=dbo.migtest_e_history6_history));
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, status;
+alter table migtest_e_basic alter column status varchar(1);
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2;
+alter table migtest_e_basic alter column status2 varchar(1) not null;
+alter table migtest_e_basic add default 'N' for status2;
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, user_id;
+alter table migtest_e_basic alter column user_id integer not null;
+alter table migtest_e_basic add default 23 for user_id;
+alter table migtest_e_basic add description_file image;
+alter table migtest_e_basic add old_boolean bit default 0 not null;
+alter table migtest_e_basic add old_boolean2 bit;
+alter table migtest_e_basic add eref_id integer;
+EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string;
+alter table migtest_e_history2 alter column test_string varchar(255);
+alter table migtest_e_history2 add obsolete_string1 varchar(255);
+alter table migtest_e_history2 add obsolete_string2 varchar(255);
+alter table migtest_e_history4 alter column test_number integer;
+EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1;
+alter table migtest_e_history6 alter column test_number1 integer;
+EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number2;
+alter table migtest_e_history6 alter column test_number2 integer not null;
+alter table migtest_e_history6 add default 7 for test_number2;
+-- apply post alter
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+create unique nonclustered index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) where indextest2 is not null;
+create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null;
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.4__dropsFor_1.3.sql
new file mode 100644
index 000000000..00b08667c
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.4__dropsFor_1.3.sql
@@ -0,0 +1,38 @@
+-- Migrationscripts for ebean unittest
+-- apply changes
+-- dropping history support for migtest_e_history;
+alter table migtest_e_history set (system_versioning = off);
+alter table migtest_e_history drop period for system_time;
+
+-- alter table migtest_e_history2 set (system_versioning = off (history_table=dbo.migtest_e_history2_history));
+-- history migration goes here
+-- alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+-- alter table migtest_e_history5 set (system_versioning = off (history_table=dbo.migtest_e_history5_history));
+-- history migration goes here
+-- alter table migtest_e_history5 set (system_versioning = on (history_table=dbo.migtest_e_history5_history));
+-- apply alter tables
+EXEC usp_ebean_drop_column migtest_ckey_detail, one_key;
+EXEC usp_ebean_drop_column migtest_ckey_detail, two_key;
+EXEC usp_ebean_drop_column migtest_ckey_parent, assoc_id;
+EXEC usp_ebean_drop_column migtest_e_basic, new_string_field;
+EXEC usp_ebean_drop_column migtest_e_basic, new_boolean_field;
+EXEC usp_ebean_drop_column migtest_e_basic, new_boolean_field2;
+EXEC usp_ebean_drop_column migtest_e_basic, progress;
+EXEC usp_ebean_drop_column migtest_e_basic, new_integer;
+EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodFrom;
+EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodTo;
+EXEC usp_ebean_drop_column migtest_e_history, sys_periodFrom;
+EXEC usp_ebean_drop_column migtest_e_history, sys_periodTo;
+EXEC usp_ebean_drop_column migtest_e_history2, test_string2;
+EXEC usp_ebean_drop_column migtest_e_history2, test_string3;
+EXEC usp_ebean_drop_column migtest_e_history2, new_column;
+EXEC usp_ebean_drop_column migtest_e_history5, test_boolean;
+EXEC usp_ebean_drop_column migtest_e_softdelete, deleted;
+EXEC usp_ebean_drop_column migtest_oto_child, master_id;
+-- apply post alter
+IF OBJECT_ID('migtest_e_history_history', 'U') IS NOT NULL drop table migtest_e_history_history;
+IF OBJECT_ID('migtest_e_user', 'U') IS NOT NULL drop table migtest_e_user;
+IF OBJECT_ID('migtest_e_user_seq', 'SO') IS NOT NULL drop sequence migtest_e_user_seq;
+IF OBJECT_ID('migtest_mtm_c_migtest_mtm_m', 'U') IS NOT NULL drop table migtest_mtm_c_migtest_mtm_m;
+IF OBJECT_ID('migtest_mtm_m_migtest_mtm_c', 'U') IS NOT NULL drop table migtest_mtm_m_migtest_mtm_c;
+IF OBJECT_ID('migtest_mtm_m_phone_numbers', 'U') IS NOT NULL drop table migtest_mtm_m_phone_numbers;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/I__create_procs.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/I__create_procs.sql
new file mode 100644
index 000000000..6f916bcc9
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/I__create_procs.sql
@@ -0,0 +1,110 @@
+-- Initial script to create stored procedures etc for sqlserver platform
+
+-- create table-value-parameters
+if not exists (select name from sys.types where name = 'ebean_bigint_tvp') create type ebean_bigint_tvp as table (c1 bigint)
+GO
+if not exists (select name from sys.types where name = 'ebean_float_tvp') create type ebean_float_tvp as table (c1 float)
+GO
+if not exists (select name from sys.types where name = 'ebean_bit_tvp') create type ebean_bit_tvp as table (c1 bit)
+GO
+if not exists (select name from sys.types where name = 'ebean_date_tvp') create type ebean_date_tvp as table (c1 date)
+GO
+if not exists (select name from sys.types where name = 'ebean_time_tvp') create type ebean_time_tvp as table (c1 time)
+GO
+if not exists (select name from sys.types where name = 'ebean_uniqueidentifier_tvp') create type ebean_uniqueidentifier_tvp as table (c1 uniqueidentifier)
+GO
+if not exists (select name from sys.types where name = 'ebean_nvarchar_tvp') create type ebean_nvarchar_tvp as table (c1 nvarchar(max))
+GO
+
+--
+-- PROCEDURE: usp_ebean_drop_indices TABLE, COLUMN
+-- deletes all indices referring to TABLE.COLUMN
+--
+CREATE OR ALTER PROCEDURE usp_ebean_drop_indices @tableName nvarchar(255), @columnName nvarchar(255)
+AS SET NOCOUNT ON
+declare @sql nvarchar(1000)
+declare @indexName nvarchar(255)
+BEGIN
+ DECLARE index_cursor CURSOR FOR SELECT i.name from sys.indexes i
+ join sys.index_columns ic on ic.object_id = i.object_id and ic.index_id = i.index_id
+ join sys.columns c on c.object_id = ic.object_id and c.column_id = ic.column_id
+ where i.object_id = OBJECT_ID(@tableName) AND c.name = @columnName;
+ OPEN index_cursor
+ FETCH NEXT FROM index_cursor INTO @indexName
+ WHILE @@FETCH_STATUS = 0
+ BEGIN
+ set @sql = 'drop index ' + @indexName + ' on ' + @tableName;
+ EXECUTE(@sql);
+
+ FETCH NEXT FROM index_cursor INTO @indexName
+ END;
+ CLOSE index_cursor;
+ DEALLOCATE index_cursor;
+END
+GO
+
+--
+-- PROCEDURE: usp_ebean_drop_default_constraint TABLE, COLUMN
+-- deletes the default constraint, which has a random name
+--
+CREATE OR ALTER PROCEDURE usp_ebean_drop_default_constraint @tableName nvarchar(255), @columnName nvarchar(255)
+AS SET NOCOUNT ON
+declare @tmp nvarchar(1000)
+BEGIN
+ select @tmp = t1.name from sys.default_constraints t1
+ join sys.columns t2 on t1.object_id = t2.default_object_id
+ where t1.parent_object_id = OBJECT_ID(@tableName) and t2.name = @columnName;
+
+ if @tmp is not null EXEC('alter table ' + @tableName +' drop constraint ' + @tmp);
+END
+GO
+
+--
+-- PROCEDURE: usp_ebean_drop_constraints TABLE, COLUMN
+-- deletes constraints and foreign keys refering to TABLE.COLUMN
+--
+CREATE OR ALTER PROCEDURE usp_ebean_drop_constraints @tableName nvarchar(255), @columnName nvarchar(255)
+AS SET NOCOUNT ON
+declare @sql nvarchar(1000)
+declare @constraintName nvarchar(255)
+BEGIN
+ DECLARE name_cursor CURSOR FOR
+ SELECT cc.name from sys.check_constraints cc
+ join sys.columns c on c.object_id = cc.parent_object_id and c.column_id = cc.parent_column_id
+ where parent_object_id = OBJECT_ID(@tableName) AND c.name = @columnName
+ UNION SELECT fk.name from sys.foreign_keys fk
+ join sys.foreign_key_columns fkc on fkc.constraint_object_id = fk.object_id
+ and fkc.parent_object_id = fk.parent_object_id
+ join sys.columns c on c.object_id = fkc.parent_object_id and c.column_id = fkc.parent_column_id
+ where fkc.parent_object_id = OBJECT_ID(@tableName) AND c.name = @columnName;
+
+ OPEN name_cursor
+ FETCH NEXT FROM name_cursor INTO @constraintName
+ WHILE @@FETCH_STATUS = 0
+ BEGIN
+ set @sql = 'alter table ' + @tableName + ' drop constraint ' + @constraintName;
+ EXECUTE(@sql);
+
+ FETCH NEXT FROM name_cursor INTO @constraintName
+ END;
+ CLOSE name_cursor;
+ DEALLOCATE name_cursor;
+END
+GO
+
+--
+-- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN
+-- deletes the column annd ensures that all indices and constraints are dropped first
+--
+CREATE OR ALTER PROCEDURE usp_ebean_drop_column @tableName nvarchar(255), @columnName nvarchar(255)
+AS SET NOCOUNT ON
+declare @sql nvarchar(1000)
+BEGIN
+ EXEC usp_ebean_drop_indices @tableName, @columnName;
+ EXEC usp_ebean_drop_default_constraint @tableName, @columnName;
+ EXEC usp_ebean_drop_constraints @tableName, @columnName;
+
+ set @sql = 'alter table ' + @tableName + ' drop column ' + @columnName;
+ EXECUTE(@sql);
+END
+GO
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/R__order_views_mssql.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/R__order_views_mssql.sql
new file mode 100644
index 000000000..3b90ebb2d
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/R__order_views_mssql.sql
@@ -0,0 +1,10 @@
+
+ IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'order_agg_vw')
+ DROP VIEW order_agg_vw;
+
+ create view order_agg_vw as
+ select d.order_id, sum(d.order_qty * d.unit_price) as order_total,
+ sum(d.ship_qty * d.unit_price) as ship_total
+ from o_order_detail d
+ group by d.order_id;
+
\ No newline at end of file
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations
new file mode 100644
index 000000000..7c1d620b0
--- /dev/null
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations
@@ -0,0 +1,8 @@
+-2122378240, I__create_procs.sql
+1067515901, 1.0__initial.sql
+91948674, 1.1.sql
+-1687762822, 1.2__dropsFor_1.1.sql
+1309342689, 1.3.sql
+-410961452, 1.4__dropsFor_1.3.sql
+1607822082, R__order_views_mssql.sql
+
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql
index 2fa18fa18..069b3ceff 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.0__initial.sql
@@ -84,8 +84,6 @@ create table migtest_e_basic (
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;
-create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null;
create sequence migtest_e_basic_seq as bigint start with 1;
create table migtest_e_enum (
@@ -146,7 +144,6 @@ create table migtest_e_ref (
name nvarchar(127) not null,
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
create sequence migtest_e_ref_seq as bigint start with 1;
create table migtest_e_softdelete (
@@ -184,17 +181,9 @@ create table migtest_oto_master (
);
create sequence migtest_oto_master_seq as bigint start with 1;
-create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
-
+-- apply post alter
+create unique nonclustered index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) where indextest2 is not null;
+create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null;
alter table migtest_e_history2
add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
@@ -220,3 +209,16 @@ alter table migtest_e_history6
sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
period for system_time (sys_periodFrom, sys_periodTo);
alter table migtest_e_history6 set (system_versioning = on (history_table=dbo.migtest_e_history6_history));
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
+
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql
index 9090ca711..71a4fffce 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql
@@ -1,4 +1,16 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+IF OBJECT_ID('fk_migtest_fk_cascade_one_id', 'F') IS NOT NULL alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_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;
+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_status2', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
+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 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('ck_migtest_e_enum_test_status', 'C') IS NOT NULL alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
+IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest1') drop index ix_migtest_e_basic_indextest1 ON migtest_e_basic;
+IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest5') drop index ix_migtest_e_basic_indextest5 ON migtest_e_basic;
-- apply changes
create table migtest_e_user (
id integer not null,
@@ -23,79 +35,80 @@ create table migtest_mtm_m_phone_numbers (
value nvarchar(255) not null
);
-alter table migtest_ckey_detail add one_key integer;
-alter table migtest_ckey_detail add two_key nvarchar(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
-alter table migtest_ckey_parent add assoc_id integer;
-
-IF OBJECT_ID('fk_migtest_fk_cascade_one_id', 'F') IS NOT NULL alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_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);
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;
-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;
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
+
+-- 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 set (system_versioning = off (history_table=dbo.migtest_e_history2_history));
+-- history migration goes here
+-- alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+-- alter table migtest_e_history3 set (system_versioning = off (history_table=dbo.migtest_e_history3_history));
+-- history migration goes here
+-- alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history));
+-- alter table migtest_e_history4 set (system_versioning = off (history_table=dbo.migtest_e_history4_history));
+-- history migration goes here
+-- alter table migtest_e_history4 set (system_versioning = on (history_table=dbo.migtest_e_history4_history));
+-- alter table migtest_e_history5 set (system_versioning = off (history_table=dbo.migtest_e_history5_history));
+-- history migration goes here
+-- alter table migtest_e_history5 set (system_versioning = on (history_table=dbo.migtest_e_history5_history));
+
+-- 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 set (system_versioning = off (history_table=dbo.migtest_e_history6_history));
+-- history migration goes here
+-- alter table migtest_e_history6 set (system_versioning = on (history_table=dbo.migtest_e_history6_history));
+-- apply alter tables
+alter table migtest_ckey_detail add one_key integer;
+alter table migtest_ckey_detail add two_key nvarchar(127);
+alter table migtest_ckey_parent add assoc_id integer;
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, status;
+alter table migtest_e_basic alter column status nvarchar(1) not null;
+alter table migtest_e_basic add default 'A' for status;
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2;
+alter table migtest_e_basic alter column status2 nvarchar(127);
alter table migtest_e_basic alter column user_id integer;
alter table migtest_e_basic add new_string_field nvarchar(255) default 'foo''bar' not null;
alter table migtest_e_basic add new_boolean_field bit default 1 not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
alter table migtest_e_basic add new_boolean_field2 bit default 1 not null;
alter table migtest_e_basic add progress integer default 0 not null;
-alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
alter table migtest_e_basic add new_integer integer default 42 not null;
+alter table migtest_e_history alter column test_string numeric(19);
+EXEC usp_ebean_drop_default_constraint migtest_e_history2, test_string;
+alter table migtest_e_history2 alter column test_string nvarchar(255) not null;
+alter table migtest_e_history2 add default 'unknown' for test_string;
+alter table migtest_e_history2 add test_string2 nvarchar(255);
+alter table migtest_e_history2 add test_string3 nvarchar(255) default 'unknown' not null;
+alter table migtest_e_history2 add new_column nvarchar(20);
+alter table migtest_e_history4 alter column test_number numeric(19);
+alter table migtest_e_history5 add test_boolean bit default 0 not null;
+EXEC usp_ebean_drop_default_constraint migtest_e_history6, test_number1;
+alter table migtest_e_history6 alter column test_number1 integer not null;
+alter table migtest_e_history6 add default 42 for test_number1;
+alter table migtest_e_history6 alter column test_number2 integer;
+alter table migtest_e_softdelete add deleted bit default 0 not null;
+alter table migtest_oto_child add master_id numeric(19);
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+create unique nonclustered index uq_migtest_e_basic_description on migtest_e_basic(description) where description is not null;
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
-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 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;
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
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;
-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;
-alter table migtest_e_history2 alter column test_string nvarchar(255) not null;
-alter table migtest_e_history2 add test_string2 nvarchar(255);
-alter table migtest_e_history2 add test_string3 nvarchar(255) default 'unknown' not null;
-alter table migtest_e_history2 add new_column nvarchar(20);
-
-alter table migtest_e_history4 alter column test_number numeric(19);
-alter table migtest_e_history5 add test_boolean bit default 0 not null;
-
-
--- 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;
-alter table migtest_e_history6 alter column test_number1 integer not null;
-alter table migtest_e_history6 alter column test_number2 integer;
-alter table migtest_e_softdelete add deleted bit default 0 not null;
-
-alter table migtest_oto_child add master_id numeric(19);
-
-create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest1') drop index ix_migtest_e_basic_indextest1 ON migtest_e_basic;
-IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest5') drop index ix_migtest_e_basic_indextest5 ON migtest_e_basic;
+alter table migtest_e_history
+ add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
+ sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
+period for system_time (sys_periodFrom, sys_periodTo);
+alter table migtest_e_history set (system_versioning = on (history_table=dbo.migtest_e_history_history));
+-- foreign keys and indices
create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id);
@@ -111,16 +124,16 @@ alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_
create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id);
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key);
create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id);
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id);
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_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);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id);
alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id);
-alter table migtest_e_history
- add sys_periodFrom datetime2 GENERATED ALWAYS AS ROW START NOT NULL DEFAULT SYSUTCDATETIME(),
- sys_periodTo datetime2 GENERATED ALWAYS AS ROW END NOT NULL DEFAULT '9999-12-31T23:59:59.9999999',
-period for system_time (sys_periodFrom, sys_periodTo);
-alter table migtest_e_history set (system_versioning = on (history_table=dbo.migtest_e_history_history));
--- alter table migtest_e_history3 set (system_versioning = off (history_table=dbo.migtest_e_history3_history));
--- history migration goes here
--- alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history));
+create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql
index a49969d1e..36fa8d503 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.2__dropsFor_1.1.sql
@@ -1,16 +1,15 @@
-- Migrationscripts for ebean unittest
-- apply changes
+-- alter table migtest_e_history2 set (system_versioning = off (history_table=dbo.migtest_e_history2_history));
+-- history migration goes here
+-- alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+-- apply alter tables
EXEC usp_ebean_drop_column migtest_e_basic, description_file;
-
EXEC usp_ebean_drop_column migtest_e_basic, old_boolean;
-
EXEC usp_ebean_drop_column migtest_e_basic, old_boolean2;
-
EXEC usp_ebean_drop_column migtest_e_basic, eref_id;
-
EXEC usp_ebean_drop_column migtest_e_history2, obsolete_string1;
-
EXEC usp_ebean_drop_column migtest_e_history2, obsolete_string2;
-
+-- apply post alter
IF OBJECT_ID('migtest_e_ref', 'U') IS NOT NULL drop table migtest_e_ref;
IF OBJECT_ID('migtest_e_ref_seq', 'SO') IS NOT NULL drop sequence migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql
index fde85d001..408cb2287 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.3.sql
@@ -1,74 +1,88 @@
-- Migrationscripts for ebean unittest
+-- drop dependencies
+IF OBJECT_ID('fk_migtest_ckey_detail_parent', 'F') IS NOT NULL alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent;
+IF OBJECT_ID('fk_migtest_fk_cascade_one_id', 'F') IS NOT NULL alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
+IF OBJECT_ID('fk_migtest_fk_none_one_id', 'F') IS NOT NULL alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id;
+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;
+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_status2', 'C') IS NOT NULL alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2;
+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('fk_migtest_e_basic_user_id', 'F') IS NOT NULL alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id;
+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 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 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 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('ck_migtest_e_enum_test_status', 'C') IS NOT NULL alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status;
+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;
+IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest6') drop index ix_migtest_e_basic_indextest6 ON migtest_e_basic;
-- apply changes
create table migtest_e_ref (
id integer not null,
name nvarchar(127) not null,
constraint pk_migtest_e_ref primary key (id)
);
-alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
create sequence migtest_e_ref_seq as bigint start with 1;
-IF OBJECT_ID('fk_migtest_ckey_detail_parent', 'F') IS NOT NULL alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent;
-IF OBJECT_ID('fk_migtest_fk_cascade_one_id', 'F') IS NOT NULL alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
-IF OBJECT_ID('fk_migtest_fk_none_one_id', 'F') IS NOT NULL alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id;
-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;
-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 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;
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;
+-- alter table migtest_e_history2 set (system_versioning = off (history_table=dbo.migtest_e_history2_history));
+-- history migration goes here
+-- alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+-- alter table migtest_e_history3 set (system_versioning = off (history_table=dbo.migtest_e_history3_history));
+-- history migration goes here
+-- alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history));
+-- alter table migtest_e_history4 set (system_versioning = off (history_table=dbo.migtest_e_history4_history));
+-- history migration goes here
+-- alter table migtest_e_history4 set (system_versioning = on (history_table=dbo.migtest_e_history4_history));
+-- alter table migtest_e_history6 set (system_versioning = off (history_table=dbo.migtest_e_history6_history));
+-- history migration goes here
+-- alter table migtest_e_history6 set (system_versioning = on (history_table=dbo.migtest_e_history6_history));
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, status;
+alter table migtest_e_basic alter column status nvarchar(1);
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, status2;
+alter table migtest_e_basic alter column status2 nvarchar(1) not null;
+alter table migtest_e_basic add default 'N' for status2;
+EXEC usp_ebean_drop_default_constraint migtest_e_basic, user_id;
alter table migtest_e_basic alter column user_id integer not null;
+alter table migtest_e_basic add default 23 for user_id;
alter table migtest_e_basic add description_file image;
alter table migtest_e_basic add old_boolean bit default 0 not null;
alter table migtest_e_basic add old_boolean2 bit;
alter table migtest_e_basic add eref_id integer;
-
-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 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 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 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;
-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;
-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;
-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;
-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;
-IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('migtest_e_basic','U') AND name = 'ix_migtest_e_basic_indextest6') drop index ix_migtest_e_basic_indextest6 ON migtest_e_basic;
+alter table migtest_e_history6 add default 7 for test_number2;
+-- apply post alter
+alter table migtest_e_ref add constraint uq_migtest_e_ref_name unique (name);
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+create unique nonclustered index uq_migtest_e_basic_indextest2 on migtest_e_basic(indextest2) where indextest2 is not null;
+create unique nonclustered index uq_migtest_e_basic_indextest6 on migtest_e_basic(indextest6) where indextest6 is not null;
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null;
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id);
--- alter table migtest_e_history3 set (system_versioning = off (history_table=dbo.migtest_e_history3_history));
--- history migration goes here
--- alter table migtest_e_history3 set (system_versioning = on (history_table=dbo.migtest_e_history3_history));
+create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql
index 3f465ec78..00b08667c 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.4__dropsFor_1.3.sql
@@ -1,44 +1,38 @@
-- Migrationscripts for ebean unittest
-- apply changes
+-- dropping history support for migtest_e_history;
+alter table migtest_e_history set (system_versioning = off);
+alter table migtest_e_history drop period for system_time;
+
+-- alter table migtest_e_history2 set (system_versioning = off (history_table=dbo.migtest_e_history2_history));
+-- history migration goes here
+-- alter table migtest_e_history2 set (system_versioning = on (history_table=dbo.migtest_e_history2_history));
+-- alter table migtest_e_history5 set (system_versioning = off (history_table=dbo.migtest_e_history5_history));
+-- history migration goes here
+-- alter table migtest_e_history5 set (system_versioning = on (history_table=dbo.migtest_e_history5_history));
+-- apply alter tables
EXEC usp_ebean_drop_column migtest_ckey_detail, one_key;
-
EXEC usp_ebean_drop_column migtest_ckey_detail, two_key;
-
EXEC usp_ebean_drop_column migtest_ckey_parent, assoc_id;
-
EXEC usp_ebean_drop_column migtest_e_basic, new_string_field;
-
EXEC usp_ebean_drop_column migtest_e_basic, new_boolean_field;
-
EXEC usp_ebean_drop_column migtest_e_basic, new_boolean_field2;
-
EXEC usp_ebean_drop_column migtest_e_basic, progress;
-
EXEC usp_ebean_drop_column migtest_e_basic, new_integer;
-
+EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodFrom;
+EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodTo;
+EXEC usp_ebean_drop_column migtest_e_history, sys_periodFrom;
+EXEC usp_ebean_drop_column migtest_e_history, sys_periodTo;
EXEC usp_ebean_drop_column migtest_e_history2, test_string2;
-
EXEC usp_ebean_drop_column migtest_e_history2, test_string3;
-
EXEC usp_ebean_drop_column migtest_e_history2, new_column;
-
EXEC usp_ebean_drop_column migtest_e_history5, test_boolean;
-
EXEC usp_ebean_drop_column migtest_e_softdelete, deleted;
-
EXEC usp_ebean_drop_column migtest_oto_child, master_id;
-
+-- apply post alter
+IF OBJECT_ID('migtest_e_history_history', 'U') IS NOT NULL drop table migtest_e_history_history;
IF OBJECT_ID('migtest_e_user', 'U') IS NOT NULL drop table migtest_e_user;
IF OBJECT_ID('migtest_e_user_seq', 'SO') IS NOT NULL drop sequence migtest_e_user_seq;
IF OBJECT_ID('migtest_mtm_c_migtest_mtm_m', 'U') IS NOT NULL drop table migtest_mtm_c_migtest_mtm_m;
IF OBJECT_ID('migtest_mtm_m_migtest_mtm_c', 'U') IS NOT NULL drop table migtest_mtm_m_migtest_mtm_c;
IF OBJECT_ID('migtest_mtm_m_phone_numbers', 'U') IS NOT NULL drop table migtest_mtm_m_phone_numbers;
--- dropping history support for migtest_e_history;
-EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodFrom;
-EXEC usp_ebean_drop_default_constraint migtest_e_history, sys_periodTo;
-alter table migtest_e_history set (system_versioning = off);
-alter table migtest_e_history drop period for system_time;
-alter table migtest_e_history drop column sys_periodFrom;
-alter table migtest_e_history drop column sys_periodTo;
-IF OBJECT_ID('migtest_e_history_history', 'U') IS NOT NULL drop table migtest_e_history_history;
-
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations
index 95435eb0b..26cced804 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/idx_sqlserver.migrations
@@ -1,8 +1,8 @@
-2122378240, I__create_procs.sql
--813787447, 1.0__initial.sql
--898063858, 1.1.sql
-1019731053, 1.2__dropsFor_1.1.sql
--494373130, 1.3.sql
--1335541264, 1.4__dropsFor_1.3.sql
+-1941282829, 1.0__initial.sql
+-60811760, 1.1.sql
+-1687762822, 1.2__dropsFor_1.1.sql
+935437796, 1.3.sql
+-410961452, 1.4__dropsFor_1.3.sql
1607822082, R__order_views_mssql.sql
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql
index 88e5ba9cf..e804f6651 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql
@@ -162,18 +162,13 @@ create table migtest_oto_master (
constraint pk_migtest_oto_master primary key (id)
);
-create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-
-create index ix_migtest_fk_set_null_one_id on 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;
-
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+-- apply alter tables
alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+-- apply post alter
create table migtest_e_history2_history(
id integer,
test_string varchar(255),
@@ -182,40 +177,6 @@ create table migtest_e_history2_history(
sys_period tstzrange
);
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history3_history(
- id integer,
- test_string varchar(255),
- sys_period tstzrange
-);
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history4_history(
- id integer,
- test_number integer,
- sys_period tstzrange
-);
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history5_history(
- id integer,
- test_number integer,
- sys_period tstzrange
-);
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
-alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
-create table migtest_e_history6_history(
- id integer,
- test_number1 integer,
- test_number2 integer,
- sys_period tstzrange
-);
-create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
-
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -238,6 +199,13 @@ create trigger migtest_e_history2_history_upd
before update or delete on migtest_e_history2
for each row execute procedure migtest_e_history2_history_version();
+
+create table migtest_e_history3_history(
+ id integer,
+ test_string varchar(255),
+ sys_period tstzrange
+);
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
create or replace function migtest_e_history3_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -260,6 +228,13 @@ create trigger migtest_e_history3_history_upd
before update or delete on migtest_e_history3
for each row execute procedure migtest_e_history3_history_version();
+
+create table migtest_e_history4_history(
+ id integer,
+ test_number integer,
+ sys_period tstzrange
+);
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
create or replace function migtest_e_history4_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -282,6 +257,13 @@ create trigger migtest_e_history4_history_upd
before update or delete on migtest_e_history4
for each row execute procedure migtest_e_history4_history_version();
+
+create table migtest_e_history5_history(
+ id integer,
+ test_number integer,
+ sys_period tstzrange
+);
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
create or replace function migtest_e_history5_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -304,6 +286,14 @@ create trigger migtest_e_history5_history_upd
before update or delete on migtest_e_history5
for each row execute procedure migtest_e_history5_history_version();
+
+create table migtest_e_history6_history(
+ id integer,
+ test_number1 integer,
+ test_number2 integer,
+ sys_period tstzrange
+);
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
create or replace function migtest_e_history6_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -326,3 +316,16 @@ create trigger migtest_e_history6_history_upd
before update or delete on migtest_e_history6
for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id);
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+
+create index ix_migtest_fk_set_null_one_id on 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;
+
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.1.sql
index 7a911b54c..c386b8e42 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.1.sql
@@ -1,10 +1,14 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-drop view if exists migtest_e_history5_with_history;
-
+alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table if exists migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest1;
+drop index if exists ix_migtest_e_basic_indextest5;
-- apply changes
create table migtest_e_user (
id integer generated by default as identity not null,
@@ -28,57 +32,55 @@ create table migtest_mtm_m_phone_numbers (
value varchar(255) not null
);
-alter table migtest_ckey_detail add column one_key integer;
-alter table migtest_ckey_detail add column two_key varchar(127);
-
-alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
-alter table migtest_ckey_parent add column assoc_id integer;
-
-alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-alter table if exists migtest_fk_set_null drop constraint if exists 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 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) using status2::varchar(127);
-alter table migtest_e_basic alter column status2 drop default;
-alter table migtest_e_basic alter column status2 drop not null;
-- rename all collisions;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
-alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
-alter table migtest_e_basic alter column user_id drop not null;
-alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
-alter table migtest_e_basic add column new_boolean_field boolean default true not null;
-update migtest_e_basic set new_boolean_field = old_boolean;
-
-alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
-alter table migtest_e_basic add column progress integer default 0 not null;
-alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
-alter table migtest_e_basic add column new_integer integer default 42 not null;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
-alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
-alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
-alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
-comment on column migtest_e_history.test_string is 'Column altered to long now';
-alter table migtest_e_history alter column test_string type bigint using test_string::bigint;
-comment on table migtest_e_history is '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;
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+drop trigger if exists migtest_e_history3_history_upd on migtest_e_history3 cascade;
+drop function if exists migtest_e_history3_history_version();
+
+drop view migtest_e_history3_with_history;
+drop trigger if exists migtest_e_history4_history_upd on migtest_e_history4 cascade;
+drop function if exists migtest_e_history4_history_version();
+
+drop view migtest_e_history4_with_history;
+drop trigger if exists migtest_e_history5_history_upd on migtest_e_history5 cascade;
+drop function if exists migtest_e_history5_history_version();
+
+drop view migtest_e_history5_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
+drop trigger if exists migtest_e_history6_history_upd on migtest_e_history6 cascade;
+drop function if exists migtest_e_history6_history_version();
+
+drop view migtest_e_history6_with_history;
+-- apply alter tables
+alter table migtest_ckey_detail add column one_key integer;
+alter table migtest_ckey_detail add column two_key varchar(127);
+alter table migtest_ckey_parent add column assoc_id integer;
+alter table migtest_e_basic alter column status set default 'A';
+alter table migtest_e_basic alter column status set not null;
+alter table migtest_e_basic alter column status2 type varchar(127) using status2::varchar(127);
+alter table migtest_e_basic alter column status2 drop default;
+alter table migtest_e_basic alter column status2 drop not null;
+alter table migtest_e_basic alter column user_id drop not null;
+alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
+alter table migtest_e_basic add column new_boolean_field boolean default true not null;
+alter table migtest_e_basic add column new_boolean_field2 boolean default true not null;
+alter table migtest_e_basic add column progress integer default 0 not null;
+alter table migtest_e_basic add column new_integer integer default 42 not null;
+alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_history alter column test_string type bigint using test_string::bigint;
alter table migtest_e_history2 alter column test_string set default 'unknown';
alter table migtest_e_history2 alter column test_string set not null;
alter table migtest_e_history2 add column test_string2 varchar(255);
@@ -87,62 +89,33 @@ alter table migtest_e_history2 add column new_column varchar(20);
alter table migtest_e_history2_history add column test_string2 varchar(255);
alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown';
alter table migtest_e_history2_history add column new_column varchar(20);
-
alter table migtest_e_history4 alter column test_number type bigint using test_number::bigint;
alter table migtest_e_history4_history alter column test_number type bigint using test_number::bigint;
alter table migtest_e_history5 add column test_boolean boolean default false not null;
alter table migtest_e_history5_history add column test_boolean boolean default false;
-
-
--- 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 column test_number1 set default 42;
alter table migtest_e_history6 alter column test_number1 set not null;
alter table migtest_e_history6 alter column test_number2 drop not null;
+alter table migtest_e_history6_history alter column test_number2 drop not null;
alter table migtest_e_softdelete add column deleted boolean default false not null;
-
alter table migtest_oto_child add column master_id bigint;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_basic set new_boolean_field = old_boolean;
-create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
-create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
-drop index if exists ix_migtest_e_basic_indextest1;
-drop index if exists ix_migtest_e_basic_indextest5;
-create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
-alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
-
-create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
-alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
-
-create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
-alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
-
-create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
-alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
-
-create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
-alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
-
-create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
-alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
-
-alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
-
-alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null);
+alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
create table migtest_e_history_history(
id integer,
test_string bigint,
sys_period tstzrange
);
create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history;
-
-create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
create or replace function migtest_e_history_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -165,7 +138,10 @@ create trigger migtest_e_history_history_upd
before update or delete on migtest_e_history
for each row execute procedure migtest_e_history_history_version();
--- changes: [add test_string2, add test_string3, add new_column]
+
+comment on column migtest_e_history.test_string is 'Column altered to long now';
+comment on table migtest_e_history is 'We have history now';
+create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -184,7 +160,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [exclude test_string]
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
create or replace function migtest_e_history3_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -203,7 +183,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [alter test_number]
+create trigger migtest_e_history3_history_upd
+ before update or delete on migtest_e_history3
+ for each row execute procedure migtest_e_history3_history_version();
+
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
create or replace function migtest_e_history4_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -222,7 +206,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [add test_boolean]
+create trigger migtest_e_history4_history_upd
+ before update or delete on migtest_e_history4
+ for each row execute procedure migtest_e_history4_history_version();
+
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
create or replace function migtest_e_history5_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -241,3 +229,59 @@ begin
end;
$$ LANGUAGE plpgsql;
+create trigger migtest_e_history5_history_upd
+ before update or delete on migtest_e_history5
+ for each row execute procedure migtest_e_history5_history_version();
+
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create or replace function migtest_e_history6_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history6_history_upd
+ before update or delete on migtest_e_history6
+ for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id);
+alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id);
+alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict;
+
+create index ix_migtest_mtm_m_phone_numbers_migtest_mtm_m_id on migtest_mtm_m_phone_numbers (migtest_mtm_m_id);
+alter table migtest_mtm_m_phone_numbers add constraint fk_migtest_mtm_m_phone_numbers_migtest_mtm_m_id foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict;
+
+alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
+create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
+alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
+
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
+alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
+alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3);
+create index if not exists ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.2__dropsFor_1.1.sql
index 35a7e2b4a..a9fef454c 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.2__dropsFor_1.1.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.2__dropsFor_1.1.sql
@@ -1,27 +1,20 @@
-- Migrationscripts for ebean unittest
--- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-
-- apply changes
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+-- apply alter tables
alter table migtest_e_basic drop column description_file;
-
alter table migtest_e_basic drop column old_boolean;
-
alter table migtest_e_basic drop column old_boolean2;
-
alter table migtest_e_basic drop column eref_id;
-
alter table migtest_e_history2 drop column obsolete_string1;
-alter table migtest_e_history2_history drop column obsolete_string1;
-
alter table migtest_e_history2 drop column obsolete_string2;
+alter table migtest_e_history2_history drop column obsolete_string1;
alter table migtest_e_history2_history drop column obsolete_string2;
-
-drop table if exists migtest_e_ref cascade;
-drop sequence if exists migtest_e_ref_seq;
+-- apply post alter
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
--- changes: [drop obsolete_string1, drop obsolete_string2]
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -40,3 +33,9 @@ begin
end;
$$ LANGUAGE plpgsql;
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+drop table if exists migtest_e_ref cascade;
+drop sequence if exists migtest_e_ref_seq;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.3.sql
index 5a5ef8226..b1630f0f1 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.3.sql
@@ -1,9 +1,21 @@
-- Migrationscripts for ebean unittest
-- drop dependencies
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history3_with_history;
-drop view if exists migtest_e_history4_with_history;
-
+alter table if exists migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
+alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
+alter table if exists migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
+alter table if exists migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
+alter table if exists migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
+alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
+alter table if exists migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
+alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
+alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
+drop index if exists ix_migtest_e_basic_indextest3;
+drop index if exists ix_migtest_e_basic_indextest6;
-- apply changes
create table migtest_e_ref (
id integer generated by default as identity not null,
@@ -12,75 +24,64 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id)
);
-alter table if exists migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
-alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
-alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
-alter table if exists migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
-alter table if exists migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
-alter table if exists migtest_fk_set_null drop constraint if exists 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 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;
+
+update migtest_e_basic set user_id = 23 where user_id is null;
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+drop trigger if exists migtest_e_history3_history_upd on migtest_e_history3 cascade;
+drop function if exists migtest_e_history3_history_version();
+
+drop view migtest_e_history3_with_history;
+drop trigger if exists migtest_e_history4_history_upd on migtest_e_history4 cascade;
+drop function if exists migtest_e_history4_history_version();
+
+drop view migtest_e_history4_with_history;
+drop trigger if exists migtest_e_history6_history_upd on migtest_e_history6 cascade;
+drop function if exists migtest_e_history6_history_version();
+
+drop view migtest_e_history6_with_history;
+
+-- NOTE: table has @History - special migration may be necessary
+update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
+-- apply alter tables
+alter table migtest_e_basic alter column status drop default;
+alter table migtest_e_basic alter column status drop not null;
alter table migtest_e_basic alter column status2 type varchar(1) using status2::varchar(1);
alter table migtest_e_basic alter column status2 set default 'N';
alter table migtest_e_basic alter column status2 set not null;
-alter table migtest_e_basic 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;
-alter table if exists migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
alter table migtest_e_basic alter column user_id set default 23;
alter table migtest_e_basic alter column user_id set not null;
alter table migtest_e_basic add column description_file bytea;
alter table migtest_e_basic add column old_boolean boolean default false not null;
alter table migtest_e_basic add column old_boolean2 boolean;
alter table migtest_e_basic add column eref_id integer;
-
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
-alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
-alter table migtest_e_basic drop constraint 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_enum drop constraint if exists 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'));
-comment on column migtest_e_history.test_string is '';
-comment on table migtest_e_history is '';
alter table migtest_e_history2 alter column test_string drop default;
alter table migtest_e_history2 alter column test_string drop not null;
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 alter column test_string drop not null;
alter table migtest_e_history2_history add column obsolete_string1 varchar(255);
alter table migtest_e_history2_history add column obsolete_string2 varchar(255);
-
alter table migtest_e_history4 alter column test_number type integer using test_number::integer;
alter table migtest_e_history4_history alter column test_number type integer using test_number::integer;
alter table migtest_e_history6 alter column test_number1 drop default;
alter table migtest_e_history6 alter column test_number1 drop not null;
-
--- 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 column test_number2 set default 7;
alter table migtest_e_history6 alter column test_number2 set not null;
-create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
-create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
-drop index if exists ix_migtest_e_basic_indextest3;
-drop index if exists ix_migtest_e_basic_indextest6;
-create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
-
+alter table migtest_e_history6_history alter column test_number1 drop not null;
+-- apply post alter
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
+alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
+alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
+alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
+comment on column migtest_e_history.test_string is '';
+comment on table migtest_e_history is '';
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
-
-create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
-
--- changes: [add obsolete_string1, add obsolete_string2]
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -99,7 +100,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [include test_string]
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history;
create or replace function migtest_e_history3_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -118,7 +123,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [alter test_number]
+create trigger migtest_e_history3_history_upd
+ before update or delete on migtest_e_history3
+ for each row execute procedure migtest_e_history3_history_version();
+
+create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history;
create or replace function migtest_e_history4_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -137,3 +146,38 @@ begin
end;
$$ LANGUAGE plpgsql;
+create trigger migtest_e_history4_history_upd
+ before update or delete on migtest_e_history4
+ for each row execute procedure migtest_e_history4_history_version();
+
+create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history;
+create or replace function migtest_e_history6_history_version() returns trigger as $$
+declare
+ lowerTs timestamptz;
+ upperTs timestamptz;
+begin
+ lowerTs = lower(OLD.sys_period);
+ upperTs = greatest(lowerTs + '1 microsecond',current_timestamp);
+ if (TG_OP = 'UPDATE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ NEW.sys_period = tstzrange(upperTs,null);
+ return new;
+ elsif (TG_OP = 'DELETE') then
+ insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2);
+ return old;
+ end if;
+end;
+$$ LANGUAGE plpgsql;
+
+create trigger migtest_e_history6_history_upd
+ before update or delete on migtest_e_history6
+ for each row execute procedure migtest_e_history6_history_version();
+
+-- foreign keys and indices
+alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
+alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
+create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
+alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
+
+create index if not exists ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
+create index if not exists ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.4__dropsFor_1.3.sql
index 4524d4a40..822e9f61a 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.4__dropsFor_1.3.sql
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.4__dropsFor_1.3.sql
@@ -4,55 +4,39 @@ drop trigger if exists migtest_e_history_history_upd on migtest_e_history cascad
drop function if exists migtest_e_history_history_version();
drop view migtest_e_history_with_history;
-alter table migtest_e_history drop column sys_period;
drop table migtest_e_history_history;
-drop view if exists migtest_e_history2_with_history;
-drop view if exists migtest_e_history5_with_history;
-
-- apply changes
+drop trigger if exists migtest_e_history2_history_upd on migtest_e_history2 cascade;
+drop function if exists migtest_e_history2_history_version();
+
+drop view migtest_e_history2_with_history;
+drop trigger if exists migtest_e_history5_history_upd on migtest_e_history5 cascade;
+drop function if exists migtest_e_history5_history_version();
+
+drop view migtest_e_history5_with_history;
+-- apply alter tables
alter table migtest_ckey_detail drop column one_key;
-
alter table migtest_ckey_detail drop column two_key;
-
alter table migtest_ckey_parent drop column assoc_id;
-
alter table migtest_e_basic drop column new_string_field;
-
alter table migtest_e_basic drop column new_boolean_field;
-
alter table migtest_e_basic drop column new_boolean_field2;
-
alter table migtest_e_basic drop column progress;
-
alter table migtest_e_basic drop column new_integer;
-
+alter table migtest_e_history drop column sys_period;
alter table migtest_e_history2 drop column test_string2;
-alter table migtest_e_history2_history drop column test_string2;
-
alter table migtest_e_history2 drop column test_string3;
-alter table migtest_e_history2_history drop column test_string3;
-
alter table migtest_e_history2 drop column new_column;
+alter table migtest_e_history2_history drop column test_string2;
+alter table migtest_e_history2_history drop column test_string3;
alter table migtest_e_history2_history drop column new_column;
-
alter table migtest_e_history5 drop column test_boolean;
alter table migtest_e_history5_history drop column test_boolean;
-
alter table migtest_e_softdelete drop column deleted;
-
alter table migtest_oto_child drop column master_id;
-
-drop table if exists migtest_e_user cascade;
-drop sequence if exists migtest_e_user_seq;
-drop table if exists migtest_mtm_c_migtest_mtm_m cascade;
-drop table if exists migtest_mtm_m_migtest_mtm_c cascade;
-drop table if exists migtest_mtm_m_phone_numbers cascade;
+-- apply post alter
create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history;
-
-create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
-
--- changes: [drop test_string2, drop test_string3, drop new_column]
create or replace function migtest_e_history2_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -71,7 +55,11 @@ begin
end;
$$ LANGUAGE plpgsql;
--- changes: [drop test_boolean]
+create trigger migtest_e_history2_history_upd
+ before update or delete on migtest_e_history2
+ for each row execute procedure migtest_e_history2_history_version();
+
+create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history;
create or replace function migtest_e_history5_history_version() returns trigger as $$
declare
lowerTs timestamptz;
@@ -90,3 +78,12 @@ begin
end;
$$ LANGUAGE plpgsql;
+create trigger migtest_e_history5_history_upd
+ before update or delete on migtest_e_history5
+ for each row execute procedure migtest_e_history5_history_version();
+
+drop table if exists migtest_e_user cascade;
+drop sequence if exists migtest_e_user_seq;
+drop table if exists migtest_mtm_c_migtest_mtm_m cascade;
+drop table if exists migtest_mtm_m_migtest_mtm_c cascade;
+drop table if exists migtest_mtm_m_phone_numbers cascade;
diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations
index 0d28a6487..c10df2ab7 100644
--- a/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations
+++ b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/idx_yugabyte.migrations
@@ -1,7 +1,7 @@
-78788203, 1.0__initial.sql
-1985413053, 1.1.sql
-1360771849, 1.2__dropsFor_1.1.sql
--1862150074, 1.3.sql
--1991941691, 1.4__dropsFor_1.3.sql
+-1111753161, 1.0__initial.sql
+-558299616, 1.1.sql
+-1098989118, 1.2__dropsFor_1.1.sql
+930822202, 1.3.sql
+1729345905, 1.4__dropsFor_1.3.sql
561281075, R__order_views.sql
diff --git a/ebean-test/testplatforms.sh b/ebean-test/testplatforms.sh
new file mode 100644
index 000000000..1e19717c0
--- /dev/null
+++ b/ebean-test/testplatforms.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# A small script, to run a certain test on all platforms
+# invoke with ./testplatforms.sh -Dtest=DbMigrationTest
+# Hint: in case of DbMigrationTest, you may disable ddl.run temporary
+
+# default H2 platform
+set -e
+mvn test "$@"
+
+mvn surefire:test -Dprops.file=testconfig/ebean-mysql.properties "$@"
+
+mvn surefire:test -Dprops.file=testconfig/ebean-mariadb.properties "$@"
+mvn surefire:test -Dprops.file=testconfig/ebean-mariadb-10.3.properties "$@"
+
+mvn surefire:test -Dprops.file=testconfig/ebean-sqlserver17.properties "$@"
+mvn surefire:test -Dprops.file=testconfig/ebean-sqlserver19.properties "$@"
+
+mvn surefire:test -Dprops.file=testconfig/ebean-postgres.properties "$@"
+
+#mvn surefire:test -Dprops.file=testconfig/ebean-oracle.properties "$@"
+
+#mvn surefire:test -Dprops.file=testconfig/ebean-sqlite.properties "$@"
+
+mvn surefire:test -Dprops.file=testconfig/ebean-hana.properties "$@"
+
+mvn surefire:test -Dprops.file=testconfig/ebean-db2.properties "$@"
+
+## Test ignored
+## mvn surefire:test -Dprops.file=testconfig/ebean-yugabyte.properties "$@"
+
+## Scripts are not correct
+## mvn surefire:test -Dprops.file=testconfig/ebean-cockroach.properties "$@"
+
+## Transactions are not supported
+## mvn surefire:test -Dprops.file=testconfig/ebean-clickhouse.properties "$@"
+
+## I cannot start nuodb
+## mvn surefire:test -Dprops.file=testconfig/ebean-nuodb.properties.properties "$@"
+
+