From 4d62958645f0f7166e62ed4ea84f5c79d18802f1 Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Mon, 14 Mar 2022 14:13:56 +0100 Subject: [PATCH] Updated DDL scripts to support notnull -> null transitions --- .../dbmigration/1.0__initial.sql | 3 +- .../migrationtest/dbmigration/h2/1.1.sql | 5 ++++ .../migrationtest/dbmigration/h2/1.3.sql | 6 ++++ .../dbmigration/h2/idx_h2.migrations | 4 +-- .../migrationtest/dbmigration/mysql/1.1.sql | 16 ++++++++++ .../migrationtest/dbmigration/mysql/1.3.sql | 17 +++++++++++ .../dbmigration/mysql/idx_mysql.migrations | 4 +-- .../migrationtest/dbmigration/mysql55/1.1.sql | 16 ++++++++++ .../migrationtest/dbmigration/mysql55/1.3.sql | 17 +++++++++++ .../dbmigration/mysql55/idx_mysql.migrations | 4 +-- .../migrationtest/dbmigration/nuodb/1.1.sql | 18 ++++++++++++ .../migrationtest/dbmigration/nuodb/1.3.sql | 19 ++++++++++++ .../dbmigration/nuodb/idx_nuodb.migrations | 4 +-- .../dbmigration/postgres/1.1.sql | 28 ++++++++++++++++++ .../dbmigration/postgres/1.3.sql | 29 +++++++++++++++++++ .../postgres/idx_postgres.migrations | 4 +-- .../dbmigration/postgres9/1.1.sql | 28 ++++++++++++++++++ .../dbmigration/postgres9/1.3.sql | 29 +++++++++++++++++++ .../postgres9/idx_postgres.migrations | 4 +-- .../dbmigration/sqlserver16/1.1.sql | 3 ++ .../dbmigration/sqlserver16/1.3.sql | 3 ++ .../sqlserver16/idx_sqlserver.migrations | 4 +-- .../dbmigration/sqlserver17/1.1.sql | 3 ++ .../dbmigration/sqlserver17/1.3.sql | 3 ++ .../sqlserver17/idx_sqlserver.migrations | 4 +-- .../dbmigration/yugabyte/1.1.sql | 28 ++++++++++++++++++ .../dbmigration/yugabyte/1.3.sql | 29 +++++++++++++++++++ .../yugabyte/idx_yugabyte.migrations | 4 +-- 28 files changed, 316 insertions(+), 20 deletions(-) diff --git a/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.0__initial.sql index 43a438d07..6c49b58a9 100644 --- a/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest-history/dbmigration/1.0__initial.sql @@ -15,6 +15,5 @@ create table migtest_e_history7_history( sys_period_end timestamp ); create view migtest_e_history7_with_history as select * from migtest_e_history7 union all select * from migtest_e_history7_history; - --- apply history trigger create trigger migtest_e_history7_history_upd before update,delete on migtest_e_history7 for each row call "io.ebean.config.dbplatform.h2.H2HistoryTrigger"; + diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/h2/1.1.sql index de2cdb548..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 @@ -52,6 +52,8 @@ 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); @@ -85,6 +87,7 @@ alter table migtest_e_history5_history add column test_boolean boolean default f 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 @@ -117,6 +120,8 @@ create view migtest_e_history4_with_history as select * from migtest_e_history4 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; 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 0a8be48a4..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 @@ -34,6 +34,8 @@ 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; @@ -53,6 +55,7 @@ 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; @@ -61,6 +64,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 set null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +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')); @@ -75,6 +79,8 @@ create view migtest_e_history3_with_history as select * from migtest_e_history3 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; 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 049ac027a..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,7 +1,7 @@ 1200492722, 1.0__initial.sql -374062636, 1.1.sql +-475634933, 1.1.sql -1366392410, 1.2__dropsFor_1.1.sql -1367061136, 1.3.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/mysql/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql/1.1.sql index 951b8635a..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 @@ -53,6 +53,9 @@ 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); @@ -81,6 +84,7 @@ alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not alter table migtest_e_history5_history add column test_boolean tinyint(1) default 0; alter table migtest_e_history6 modify test_number1 integer not null default 42; alter table migtest_e_history6 modify test_number2 integer; +alter table migtest_e_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 @@ -160,6 +164,18 @@ 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, 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; 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 8d28ec00a..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 @@ -34,6 +34,9 @@ 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; @@ -48,12 +51,14 @@ alter table migtest_e_basic add column eref_id integer; alter table migtest_e_history2 modify test_string varchar(255); alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255); +alter table migtest_e_history2_history 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 modify test_number1 integer; 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); @@ -94,6 +99,18 @@ 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 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 414065153..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 -1623464972, 1.0__initial.sql --781178785, 1.1.sql +-882132850, 1.1.sql -1332434945, 1.2__dropsFor_1.1.sql -408766420, 1.3.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.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/mysql55/1.1.sql index 951b8635a..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 @@ -53,6 +53,9 @@ 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); @@ -81,6 +84,7 @@ alter table migtest_e_history5 add column test_boolean tinyint(1) default 0 not alter table migtest_e_history5_history add column test_boolean tinyint(1) default 0; alter table migtest_e_history6 modify test_number1 integer not null default 42; alter table migtest_e_history6 modify test_number2 integer; +alter table migtest_e_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 @@ -160,6 +164,18 @@ 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, 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; 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 8d28ec00a..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 @@ -34,6 +34,9 @@ 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; @@ -48,12 +51,14 @@ alter table migtest_e_basic add column eref_id integer; alter table migtest_e_history2 modify test_string varchar(255); alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255); +alter table migtest_e_history2_history 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 modify test_number1 integer; 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); @@ -94,6 +99,18 @@ 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 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 85fbea0b1..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,8 +1,8 @@ 1835064798, I__create_procs.sql 529930619, 1.0__initial.sql --781178785, 1.1.sql +-882132850, 1.1.sql -1332434945, 1.2__dropsFor_1.1.sql -408766420, 1.3.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/nuodb/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql index 9f15579ce..c7bf4e1f3 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.1.sql @@ -56,6 +56,9 @@ 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); @@ -89,6 +92,7 @@ alter table migtest_e_history5_history add column test_boolean boolean default f 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 @@ -179,6 +183,20 @@ create or replace trigger migtest_e_history5_history_del for migtest_e_history5 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); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql index 3b67a3d66..8c28ad2ad 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/1.3.sql @@ -37,6 +37,9 @@ 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; @@ -56,6 +59,7 @@ 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; @@ -64,6 +68,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 set null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +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')); @@ -112,6 +117,20 @@ create or replace trigger migtest_e_history4_history_del for migtest_e_history4 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); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations index 35f9cbc70..716175603 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/nuodb/idx_nuodb.migrations @@ -1,7 +1,7 @@ 1041350610, 1.0__initial.sql --87564347, 1.1.sql +-1144238347, 1.1.sql -424253630, 1.2__dropsFor_1.1.sql --258639752, 1.3.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/postgres/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres/1.1.sql index a04a4d1b2..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 @@ -65,6 +65,10 @@ 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); @@ -97,6 +101,7 @@ alter table migtest_e_history5_history add column test_boolean boolean default f 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 @@ -229,6 +234,29 @@ 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; 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 eb67a9670..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 @@ -40,6 +40,10 @@ drop trigger if exists migtest_e_history4_history_upd on migtest_e_history4 casc 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; @@ -59,6 +63,7 @@ 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; @@ -67,6 +72,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +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')); @@ -144,6 +150,29 @@ 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; 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 54ec929dc..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,7 +1,7 @@ -125847545, 1.0__initial.sql -1782158364, 1.1.sql +-962575173, 1.1.sql -1098989118, 1.2__dropsFor_1.1.sql --1852757328, 1.3.sql +808262548, 1.3.sql 1729345905, 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/postgres9/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql index 7f0aa76ec..852771f46 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.1.sql @@ -65,6 +65,10 @@ 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); @@ -97,6 +101,7 @@ alter table migtest_e_history5_history add column test_boolean boolean default f 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 @@ -229,6 +234,29 @@ 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; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql index c1215359c..33d980263 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.3.sql @@ -40,6 +40,10 @@ drop trigger if exists migtest_e_history4_history_upd on migtest_e_history4 casc 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; @@ -59,6 +63,7 @@ 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; @@ -67,6 +72,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +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')); @@ -144,6 +150,29 @@ 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; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations index 78bf4574e..e9d7134dc 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/idx_postgres.migrations @@ -1,7 +1,7 @@ -1050466540, 1.0__initial.sql --480020430, 1.1.sql +-976679466, 1.1.sql -1098989118, 1.2__dropsFor_1.1.sql --762160636, 1.3.sql +303027582, 1.3.sql 1729345905, 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/sqlserver16/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql index 729bcf3e2..cf7074030 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.1.sql @@ -58,6 +58,9 @@ 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; +-- 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); diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql index 6e366f802..1c4007cd9 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/1.3.sql @@ -41,6 +41,9 @@ update migtest_e_basic set user_id = 23 where user_id is null; -- 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; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations index 8739b5795..7c1d620b0 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver16/idx_sqlserver.migrations @@ -1,8 +1,8 @@ -2122378240, I__create_procs.sql 1067515901, 1.0__initial.sql --2109871331, 1.1.sql +91948674, 1.1.sql -1687762822, 1.2__dropsFor_1.1.sql -1214882237, 1.3.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.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/sqlserver17/1.1.sql index 3af1e9633..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 @@ -59,6 +59,9 @@ 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; +-- 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); 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 edb2749e6..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 @@ -42,6 +42,9 @@ update migtest_e_basic set user_id = 23 where user_id is null; -- 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; 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 5efab7d68..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 -1941282829, 1.0__initial.sql --2026784932, 1.1.sql +-60811760, 1.1.sql -1687762822, 1.2__dropsFor_1.1.sql --627698384, 1.3.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.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.1.sql index 4d431443b..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 @@ -60,6 +60,10 @@ 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); @@ -92,6 +96,7 @@ alter table migtest_e_history5_history add column test_boolean boolean default f 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 @@ -228,6 +233,29 @@ 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; 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 8ceab575a..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 @@ -40,6 +40,10 @@ drop trigger if exists migtest_e_history4_history_upd on migtest_e_history4 casc 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; @@ -59,6 +63,7 @@ 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; @@ -67,6 +72,7 @@ alter table migtest_e_history6 alter column test_number1 drop default; alter table migtest_e_history6 alter column test_number1 drop not null; alter table migtest_e_history6 alter column test_number2 set default 7; alter table migtest_e_history6 alter column test_number2 set not null; +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')); @@ -144,6 +150,29 @@ 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; 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 cf1a79ac0..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 @@ -1111753161, 1.0__initial.sql --794033493, 1.1.sql +-558299616, 1.1.sql -1098989118, 1.2__dropsFor_1.1.sql -1468123571, 1.3.sql +930822202, 1.3.sql 1729345905, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql