From ecf650c9bc4dc8123eb4be200c56b17eae46df70 Mon Sep 17 00:00:00 2001 From: "robin.bygrave" Date: Thu, 25 May 2023 20:22:18 +1200 Subject: [PATCH] Postgres DDL - Use IF NOT EXISTS with ADD COLUMN --- .../ddlgeneration/platform/PostgresDdl.java | 2 +- .../ddlgeneration/BaseDdlHandlerTest.java | 6 +-- .../dbmigration/postgres/1.0__initial.sql | 12 ++--- .../dbmigration/postgres/1.1.sql | 46 +++++++++---------- .../dbmigration/postgres/1.3.sql | 16 +++---- .../postgres/idx_postgres.migrations | 6 +-- .../dbmigration/postgres9/1.0__initial.sql | 12 ++--- .../dbmigration/postgres9/1.1.sql | 46 +++++++++---------- .../dbmigration/postgres9/1.3.sql | 16 +++---- .../postgres9/idx_postgres.migrations | 6 +-- .../dbmigration/yugabyte/1.0__initial.sql | 12 ++--- .../dbmigration/yugabyte/1.1.sql | 46 +++++++++---------- .../dbmigration/yugabyte/1.3.sql | 16 +++---- .../yugabyte/idx_yugabyte.migrations | 6 +-- 14 files changed, 124 insertions(+), 124 deletions(-) diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java index e7567f90e..071c0538d 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java @@ -9,7 +9,6 @@ import io.ebeaninternal.dbmigration.migration.Column; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; @@ -31,6 +30,7 @@ public class PostgresDdl extends PlatformDdl { this.columnSetNull = "drop not null"; this.addForeignKeySkipCheck = " not valid"; this.indexConcurrent = "concurrently "; + this.addColumn = "add column if not exists"; } @Override diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java index e8b526dca..a0f376607 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/BaseDdlHandlerTest.java @@ -87,7 +87,7 @@ public class BaseDdlHandlerTest extends BaseTestCase { DdlHandler postgresHandler = postgresHandler(); postgresHandler.generate(writer, Helper.getAlterTableAddDbArrayColumn()); - assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_added_to_foo varchar[];\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column if not exists dbarray_added_to_foo varchar[];\n"); writer = new DdlWrite(); @@ -109,7 +109,7 @@ public class BaseDdlHandlerTest extends BaseTestCase { DdlWrite writer = new DdlWrite(); postgresHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnWithLength()); - assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_ninety varchar[];\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column if not exists dbarray_ninety varchar[];\n"); writer = new DdlWrite(); h2Handler().generate(writer, Helper.getAlterTableAddDbArrayColumnWithLength()); @@ -134,7 +134,7 @@ public class BaseDdlHandlerTest extends BaseTestCase { DdlWrite writer = new DdlWrite(); postgresHandler().generate(writer, Helper.getAlterTableAddDbArrayColumnIntegerWithLength()); - assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column dbarray_integer integer[];\n"); + assertThat(writer.toString()).isEqualTo("-- apply alter tables\nalter table foo add column if not exists dbarray_integer integer[];\n"); writer = new DdlWrite(); h2Handler().generate(writer, Helper.getAlterTableAddDbArrayColumnIntegerWithLength()); 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 5ad40246f..eaff8a84d 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 @@ -210,12 +210,12 @@ create table migtest_oto_master ( ); -- apply alter tables -alter table "table" 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); +alter table "table" add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history2 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history3 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history4 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history5 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history6 add column if not exists 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; 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 c8273e6e4..3ff4ee016 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 @@ -79,11 +79,11 @@ drop function if exists table_history_version(); drop view table_with_history; -- apply alter tables alter table "table" alter column textfield drop not null; -alter table "table" add column "select" varchar(255); -alter table "table" add column textfield2 varchar(255); -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 "table" add column if not exists "select" varchar(255); +alter table "table" add column if not exists textfield2 varchar(255); +alter table migtest_ckey_detail add column if not exists one_key integer; +alter table migtest_ckey_detail add column if not exists two_key varchar(127); +alter table migtest_ckey_parent add column if not exists 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); @@ -92,34 +92,34 @@ alter table migtest_e_basic alter column status2 drop not null; alter table migtest_e_basic alter column a_lob drop default; alter table migtest_e_basic alter column a_lob 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_basic add column if not exists new_string_field varchar(255) default 'foo''bar' not null; +alter table migtest_e_basic add column if not exists new_boolean_field boolean default true not null; +alter table migtest_e_basic add column if not exists new_boolean_field2 boolean default true not null; +alter table migtest_e_basic add column if not exists progress integer default 0 not null; +alter table migtest_e_basic add column if not exists new_integer integer default 42 not null; +alter table migtest_e_history add column if not exists 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_history2 add column if not exists test_string2 varchar(255); +alter table migtest_e_history2 add column if not exists test_string3 varchar(255) default 'unknown' not null; +alter table migtest_e_history2 add column if not exists new_column varchar(20); +alter table migtest_e_history2_history add column if not exists test_string2 varchar(255); +alter table migtest_e_history2_history add column if not exists test_string3 varchar(255) default 'unknown'; +alter table migtest_e_history2_history add column if not exists 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_history5 add column if not exists test_boolean boolean default false not null; +alter table migtest_e_history5_history add column if not exists 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; +alter table migtest_e_softdelete add column if not exists deleted boolean default false not null; +alter table migtest_oto_child add column if not exists master_id bigint; alter table table_history alter column textfield drop not null; -alter table table_history add column "select" varchar(255); -alter table table_history add column textfield2 varchar(255); +alter table table_history add column if not exists "select" varchar(255); +alter table table_history add column if not exists textfield2 varchar(255); -- 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); 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 e9a619dcd..b0dae0e99 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 @@ -76,17 +76,17 @@ alter table migtest_e_basic alter column a_lob set default 'X'; alter table migtest_e_basic alter column a_lob 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_basic add column if not exists description_file bytea; +alter table migtest_e_basic add column if not exists old_boolean boolean default false not null; +alter table migtest_e_basic add column if not exists old_boolean2 boolean; +alter table migtest_e_basic add column if not exists 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 add column if not exists obsolete_string1 varchar(255); +alter table migtest_e_history2 add column if not exists 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_history2_history add column if not exists obsolete_string1 varchar(255); +alter table migtest_e_history2_history add column if not exists 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; 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 59e6a24ce..101abc8da 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 @@ --73982981, 1.0__initial.sql --1076179036, 1.1.sql +-22203872, 1.0__initial.sql +-1442773235, 1.1.sql 274267648, 1.2__dropsFor_1.1.sql --634032267, 1.3.sql +-203030537, 1.3.sql -709144111, 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.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql index 0f344cdc2..af6cf0911 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/postgres9/1.0__initial.sql @@ -210,12 +210,12 @@ create table migtest_oto_master ( ); -- apply alter tables -alter table "table" 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); +alter table "table" add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history2 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history3 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history4 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history5 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history6 add column if not exists 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; 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 5cc39012b..1c1ab2035 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 @@ -79,11 +79,11 @@ drop function if exists table_history_version(); drop view table_with_history; -- apply alter tables alter table "table" alter column textfield drop not null; -alter table "table" add column "select" varchar(255); -alter table "table" add column textfield2 varchar(255); -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 "table" add column if not exists "select" varchar(255); +alter table "table" add column if not exists textfield2 varchar(255); +alter table migtest_ckey_detail add column if not exists one_key integer; +alter table migtest_ckey_detail add column if not exists two_key varchar(127); +alter table migtest_ckey_parent add column if not exists 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); @@ -92,34 +92,34 @@ alter table migtest_e_basic alter column status2 drop not null; alter table migtest_e_basic alter column a_lob drop default; alter table migtest_e_basic alter column a_lob 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_basic add column if not exists new_string_field varchar(255) default 'foo''bar' not null; +alter table migtest_e_basic add column if not exists new_boolean_field boolean default true not null; +alter table migtest_e_basic add column if not exists new_boolean_field2 boolean default true not null; +alter table migtest_e_basic add column if not exists progress integer default 0 not null; +alter table migtest_e_basic add column if not exists new_integer integer default 42 not null; +alter table migtest_e_history add column if not exists 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_history2 add column if not exists test_string2 varchar(255); +alter table migtest_e_history2 add column if not exists test_string3 varchar(255) default 'unknown' not null; +alter table migtest_e_history2 add column if not exists new_column varchar(20); +alter table migtest_e_history2_history add column if not exists test_string2 varchar(255); +alter table migtest_e_history2_history add column if not exists test_string3 varchar(255) default 'unknown'; +alter table migtest_e_history2_history add column if not exists 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_history5 add column if not exists test_boolean boolean default false not null; +alter table migtest_e_history5_history add column if not exists 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; +alter table migtest_e_softdelete add column if not exists deleted boolean default false not null; +alter table migtest_oto_child add column if not exists master_id bigint; alter table table_history alter column textfield drop not null; -alter table table_history add column "select" varchar(255); -alter table table_history add column textfield2 varchar(255); +alter table table_history add column if not exists "select" varchar(255); +alter table table_history add column if not exists textfield2 varchar(255); -- 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); 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 5b92e11b8..f495a429a 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 @@ -76,17 +76,17 @@ alter table migtest_e_basic alter column a_lob set default 'X'; alter table migtest_e_basic alter column a_lob 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_basic add column if not exists description_file bytea; +alter table migtest_e_basic add column if not exists old_boolean boolean default false not null; +alter table migtest_e_basic add column if not exists old_boolean2 boolean; +alter table migtest_e_basic add column if not exists 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 add column if not exists obsolete_string1 varchar(255); +alter table migtest_e_history2 add column if not exists 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_history2_history add column if not exists obsolete_string1 varchar(255); +alter table migtest_e_history2_history add column if not exists 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; 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 e64bb01b0..380f02be8 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 @@ --1033742102, 1.0__initial.sql --1861202915, 1.1.sql +559327334, 1.0__initial.sql +1742277951, 1.1.sql 274267648, 1.2__dropsFor_1.1.sql -601885195, 1.3.sql +210028005, 1.3.sql -709144111, 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/yugabyte/1.0__initial.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/yugabyte/1.0__initial.sql index 16c3fc75d..71e927175 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 @@ -210,12 +210,12 @@ create table migtest_oto_master ( ); -- apply alter tables -alter table "table" 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); +alter table "table" add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history2 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history3 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history4 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history5 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); +alter table migtest_e_history6 add column if not exists sys_period tstzrange not null default tstzrange(current_timestamp, null); -- apply post alter create table migtest_e_history2_history( id integer, 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 1714a3346..479bbab03 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 @@ -74,11 +74,11 @@ drop function if exists table_history_version(); drop view table_with_history; -- apply alter tables alter table "table" alter column textfield drop not null; -alter table "table" add column "select" varchar(255); -alter table "table" add column textfield2 varchar(255); -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 "table" add column if not exists "select" varchar(255); +alter table "table" add column if not exists textfield2 varchar(255); +alter table migtest_ckey_detail add column if not exists one_key integer; +alter table migtest_ckey_detail add column if not exists two_key varchar(127); +alter table migtest_ckey_parent add column if not exists 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); @@ -87,34 +87,34 @@ alter table migtest_e_basic alter column status2 drop not null; alter table migtest_e_basic alter column a_lob drop default; alter table migtest_e_basic alter column a_lob 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_basic add column if not exists new_string_field varchar(255) default 'foo''bar' not null; +alter table migtest_e_basic add column if not exists new_boolean_field boolean default true not null; +alter table migtest_e_basic add column if not exists new_boolean_field2 boolean default true not null; +alter table migtest_e_basic add column if not exists progress integer default 0 not null; +alter table migtest_e_basic add column if not exists new_integer integer default 42 not null; +alter table migtest_e_history add column if not exists 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_history2 add column if not exists test_string2 varchar(255); +alter table migtest_e_history2 add column if not exists test_string3 varchar(255) default 'unknown' not null; +alter table migtest_e_history2 add column if not exists new_column varchar(20); +alter table migtest_e_history2_history add column if not exists test_string2 varchar(255); +alter table migtest_e_history2_history add column if not exists test_string3 varchar(255) default 'unknown'; +alter table migtest_e_history2_history add column if not exists 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_history5 add column if not exists test_boolean boolean default false not null; +alter table migtest_e_history5_history add column if not exists 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; +alter table migtest_e_softdelete add column if not exists deleted boolean default false not null; +alter table migtest_oto_child add column if not exists master_id bigint; alter table table_history alter column textfield drop not null; -alter table table_history add column "select" varchar(255); -alter table table_history add column textfield2 varchar(255); +alter table table_history add column if not exists "select" varchar(255); +alter table table_history add column if not exists textfield2 varchar(255); -- 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); 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 748634b8c..bed798649 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 @@ -76,17 +76,17 @@ alter table migtest_e_basic alter column a_lob set default 'X'; alter table migtest_e_basic alter column a_lob 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_basic add column if not exists description_file bytea; +alter table migtest_e_basic add column if not exists old_boolean boolean default false not null; +alter table migtest_e_basic add column if not exists old_boolean2 boolean; +alter table migtest_e_basic add column if not exists 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 add column if not exists obsolete_string1 varchar(255); +alter table migtest_e_history2 add column if not exists 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_history2_history add column if not exists obsolete_string1 varchar(255); +alter table migtest_e_history2_history add column if not exists 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; 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 99c68d769..af16e829d 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 @@ -113365976, 1.0__initial.sql -637070078, 1.1.sql +1799266243, 1.0__initial.sql +-1937988544, 1.1.sql 274267648, 1.2__dropsFor_1.1.sql --1383541363, 1.3.sql +2132297964, 1.3.sql -709144111, 1.4__dropsFor_1.3.sql 561281075, R__order_views.sql