From a8892292fbcd3e067ff4ce184502972131316e30 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Mon, 3 Dec 2018 22:05:18 +1300 Subject: [PATCH] #1569 - Ebean generates wrong ddl (datetime(6) vs timestamp) for H2 with `@History` annotation --- pom.xml | 2 +- .../ddlgeneration/platform/H2HistoryDdl.java | 2 + .../migrationtest-history/1.0__initial.sql | 12 +-- .../migrationtest/h2/1.0__initial.sql | 76 +++++++++++-------- .../dbmigration/migrationtest/h2/1.1.sql | 14 ++-- 5 files changed, 61 insertions(+), 45 deletions(-) diff --git a/pom.xml b/pom.xml index 7965ca52b..c733942fa 100644 --- a/pom.xml +++ b/pom.xml @@ -238,7 +238,7 @@ com.h2database h2 - 1.4.196 + 1.4.197 provided diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdl.java index 4240c30d9..a1f8f1806 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdl.java @@ -15,6 +15,8 @@ public class H2HistoryDdl extends DbTriggerBasedHistoryDdl { private static final String TRIGGER_CLASS = H2HistoryTrigger.class.getName(); public H2HistoryDdl() { + this.sysPeriodType = "timestamp"; + this.currentTimestamp = "now()"; } @Override diff --git a/src/test/resources/dbmigration/migrationtest-history/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest-history/1.0__initial.sql index 16fa48f95..68987746a 100644 --- a/src/test/resources/dbmigration/migrationtest-history/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest-history/1.0__initial.sql @@ -5,12 +5,14 @@ create table migtest_e_history7 ( constraint pk_migtest_e_history7 primary key (id) ); -alter table migtest_e_history7 add column sys_period_start datetime(6) default now(6); -alter table migtest_e_history7 add column sys_period_end datetime(6); +alter table migtest_e_history7 + add column sys_period_start timestamp default now(); +alter table migtest_e_history7 + add column sys_period_end timestamp; create table migtest_e_history7_history( - id integer, - sys_period_start datetime(6), - sys_period_end datetime(6) + id integer, + sys_period_start timestamp, + 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; diff --git a/src/test/resources/dbmigration/migrationtest/h2/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/h2/1.0__initial.sql index 204b1f555..30ba59c08 100644 --- a/src/test/resources/dbmigration/migrationtest/h2/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/h2/1.0__initial.sql @@ -170,56 +170,66 @@ 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 datetime(6) default now(6); -alter table migtest_e_history2 add column sys_period_end datetime(6); +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 datetime(6), - sys_period_end datetime(6) + 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 datetime(6) default now(6); -alter table migtest_e_history3 add column sys_period_end datetime(6); +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 datetime(6), - sys_period_end datetime(6) + 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 datetime(6) default now(6); -alter table migtest_e_history4 add column sys_period_end datetime(6); +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 datetime(6), - sys_period_end datetime(6) + 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 datetime(6) default now(6); -alter table migtest_e_history5 add column sys_period_end datetime(6); +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 datetime(6), - sys_period_end datetime(6) + 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 datetime(6) default now(6); -alter table migtest_e_history6 add column sys_period_end datetime(6); +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 datetime(6), - sys_period_end datetime(6) + 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; diff --git a/src/test/resources/dbmigration/migrationtest/h2/1.1.sql b/src/test/resources/dbmigration/migrationtest/h2/1.1.sql index 9c8af60f4..75be16374 100644 --- a/src/test/resources/dbmigration/migrationtest/h2/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/h2/1.1.sql @@ -115,13 +115,15 @@ alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id f 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); +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 datetime(6), - sys_period_end datetime(6) + 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;