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 "$@" + +