From e0669e9a9f513bcf6184017d37c85899d3d8ebd1 Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Fri, 25 Feb 2022 11:01:36 +0100 Subject: [PATCH] DDL generation fixes fpr oracle platform (fix drop default, do "drop if exists" with error handlers) --- .../ddlgeneration/platform/OracleDdl.java | 34 +++++++ .../migrationtest/dbmigration/oracle/1.1.sql | 57 +++++++++-- .../dbmigration/oracle/1.2__dropsFor_1.1.sql | 11 ++- .../migrationtest/dbmigration/oracle/1.3.sql | 94 ++++++++++++++++--- .../dbmigration/oracle/1.4__dropsFor_1.3.sql | 11 ++- .../dbmigration/oracle/idx_oracle.migrations | 8 +- .../dbmigration/oracle11/1.1.sql | 57 +++++++++-- .../oracle11/1.2__dropsFor_1.1.sql | 11 ++- .../dbmigration/oracle11/1.3.sql | 94 ++++++++++++++++--- .../oracle11/1.4__dropsFor_1.3.sql | 11 ++- .../oracle11/idx_oracle.migrations | 8 +- 11 files changed, 350 insertions(+), 46 deletions(-) diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/OracleDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/OracleDdl.java index 740870b09..f94b559d2 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/OracleDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/OracleDdl.java @@ -20,6 +20,8 @@ public class OracleDdl extends PlatformDdl { this.columnSetNotnull = "not null"; this.columnSetNull = "null"; this.columnSetDefault = "default"; + this.columnDropDefault = "default null"; // dropping default is not supported. See: + // https://stackoverflow.com/questions/8481532/how-do-i-remove-the-default-value-from-a-column-in-oracle this.identitySuffix = " generated by default as identity"; } @@ -33,6 +35,21 @@ public class OracleDdl extends PlatformDdl { } } + @Override + public String dropSequence(String sequenceName) { + return ignoreError(-2289, super.dropSequence(sequenceName)); + } + + @Override + public String alterTableDropConstraint(String tableName, String constraintName) { + return ignoreError(-2443, super.alterTableDropConstraint(tableName, constraintName)); + } + + @Override + public String alterTableDropUniqueConstraint(String tableName, String uniqueConstraintName) { + return ignoreError(-2443, super.alterTableDropUniqueConstraint(tableName, uniqueConstraintName)); + } + @Override protected void appendForeignKeyOnUpdate(StringBuilder buffer, ConstraintMode mode) { // do nothing, no on update clause for oracle @@ -57,4 +74,21 @@ public class OracleDdl extends PlatformDdl { return asIdentityStandardOptions(columnDefn, identity); } + /** + * generates anonymous pl/sql block that catches expected error so that we can + * effectively do a 'drop if exists' + */ + private String ignoreError(int errorNr, String statement) { + StringBuilder sb = new StringBuilder(); + sb.append("delimiter $$\n") + .append("declare\n") + .append(" expected_error exception;\n") + .append(" pragma exception_init(expected_error, ").append(errorNr).append(");\n") + .append("begin\n") + .append(" execute immediate '").append(statement).append("';\n") + .append("exception\n") + .append(" when expected_error then null;\n") + .append("end;\n$$"); + return sb.toString(); + } } diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql index 3a706374e..d8cd56c0a 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.1.sql @@ -36,13 +36,31 @@ alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id); update migtest_e_basic set status = 'A' where status is null; -alter table migtest_e_basic drop constraint ck_migtest_e_basic_status; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status'; +exception + when expected_error then null; +end; +$$; alter table migtest_e_basic modify status default 'A'; alter table migtest_e_basic modify status not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); -alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2'; +exception + when expected_error then null; +end; +$$; alter table migtest_e_basic modify status2 varchar2(127); -alter table migtest_e_basic modify status2 drop default; +alter table migtest_e_basic modify status2 default null; alter table migtest_e_basic modify status2 null; -- rename all collisions; @@ -60,13 +78,40 @@ alter table migtest_e_basic add progress number(10) default 0 not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)); alter table migtest_e_basic add new_integer number(10) default 42 not null; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2'; +exception + when expected_error then null; +end; +$$; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6'; +exception + when expected_error then null; +end; +$$; -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_mgtst__bsc_stts_ndxtst1 unique (status,indextest1); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); -alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status'; +exception + when expected_error then null; +end; +$$; comment on column migtest_e_history.test_string is 'Column altered to long now'; alter table migtest_e_history modify test_string number(19); comment on table migtest_e_history is 'We have history now'; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql index ee9cc6325..25ba7f1ea 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.2__dropsFor_1.1.sql @@ -13,4 +13,13 @@ alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; drop table migtest_e_ref cascade constraints purge; -drop sequence migtest_e_ref_seq; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2289); +begin + execute immediate 'drop sequence migtest_e_ref_seq'; +exception + when expected_error then null; +end; +$$; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql index 3dc30312f..d8bc8ee66 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.3.sql @@ -14,18 +14,45 @@ alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id; alter table migtest_fk_none_via_join drop constraint fk_mgtst_fk_nn_v_jn_n_d; alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null; -alter table migtest_e_basic drop constraint ck_migtest_e_basic_status; -alter table migtest_e_basic modify status drop default; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status'; +exception + when expected_error then null; +end; +$$; +alter table migtest_e_basic modify status default null; alter table migtest_e_basic modify status null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); update migtest_e_basic set status2 = 'N' where status2 is null; -alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2'; +exception + when expected_error then null; +end; +$$; alter table migtest_e_basic modify status2 varchar2(1); alter table migtest_e_basic modify status2 default 'N'; alter table migtest_e_basic modify status2 not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); -alter table migtest_e_basic drop constraint uq_migtest_e_basic_description; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_description'; +exception + when expected_error then null; +end; +$$; update migtest_e_basic set user_id = 23 where user_id is null; alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id; @@ -36,23 +63,68 @@ alter table migtest_e_basic add old_boolean number(1) default 0 not null; alter table migtest_e_basic add old_boolean2 number(1); alter table migtest_e_basic add eref_id number(10); -alter table migtest_e_basic drop constraint uq_mgtst__bsc_stts_ndxtst1; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_name; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_mgtst__bsc_stts_ndxtst1'; +exception + when expected_error then null; +end; +$$; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_name'; +exception + when expected_error then null; +end; +$$; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4'; +exception + when expected_error then null; +end; +$$; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5'; +exception + when expected_error then null; +end; +$$; -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); -alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status'; +exception + when expected_error then null; +end; +$$; alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -alter table migtest_e_history2 modify test_string drop default; +alter table migtest_e_history2 modify test_string default null; alter table migtest_e_history2 modify test_string null; alter table migtest_e_history2 add obsolete_string1 varchar2(255); alter table migtest_e_history2 add obsolete_string2 varchar2(255); alter table migtest_e_history4 modify test_number number(10); -alter table migtest_e_history6 modify test_number1 drop default; +alter table migtest_e_history6 modify test_number1 default null; alter table migtest_e_history6 modify test_number1 null; -- NOTE: table has @History - special migration may be necessary diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql index 34fe0bed4..42bff6949 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/1.4__dropsFor_1.3.sql @@ -29,7 +29,16 @@ alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; drop table migtest_e_user cascade constraints purge; -drop sequence migtest_e_user_seq; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2289); +begin + execute immediate 'drop sequence migtest_e_user_seq'; +exception + when expected_error then null; +end; +$$; drop table migtest_mtm_c_migtest_mtm_m cascade constraints purge; drop table migtest_mtm_m_migtest_mtm_c cascade constraints purge; drop table migtest_mtm_m_phone_numbers cascade constraints purge; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations index 86e8f1206..98d613833 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle/idx_oracle.migrations @@ -1,8 +1,8 @@ 1732845114, 1.0__initial.sql --411370666, 1.1.sql --1698942539, 1.2__dropsFor_1.1.sql -1355736100, 1.3.sql --629809805, 1.4__dropsFor_1.3.sql +-769875282, 1.1.sql +1140013965, 1.2__dropsFor_1.1.sql +-1374341416, 1.3.sql +1340223598, 1.4__dropsFor_1.3.sql 1357801733, R__oracle_only_views.sql 561281075, R__order_views.sql diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql index b6de2b755..d337abc34 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.1.sql @@ -37,13 +37,31 @@ alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id); update migtest_e_basic set status = 'A' where status is null; -alter table migtest_e_basic drop constraint ck_migtest_e_basic_status; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status'; +exception + when expected_error then null; +end; +$$; alter table migtest_e_basic modify status default 'A'; alter table migtest_e_basic modify status not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); -alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2'; +exception + when expected_error then null; +end; +$$; alter table migtest_e_basic modify status2 varchar2(127); -alter table migtest_e_basic modify status2 drop default; +alter table migtest_e_basic modify status2 default null; alter table migtest_e_basic modify status2 null; -- rename all collisions; @@ -61,13 +79,40 @@ alter table migtest_e_basic add progress number(10) default 0 not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)); alter table migtest_e_basic add new_integer number(10) default 42 not null; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2'; +exception + when expected_error then null; +end; +$$; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6'; +exception + when expected_error then null; +end; +$$; -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_mgtst__bsc_stts_ndxtst1 unique (status,indextest1); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); -alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status'; +exception + when expected_error then null; +end; +$$; comment on column migtest_e_history.test_string is 'Column altered to long now'; alter table migtest_e_history modify test_string number(19); comment on table migtest_e_history is 'We have history now'; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql index ee9cc6325..25ba7f1ea 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.2__dropsFor_1.1.sql @@ -13,4 +13,13 @@ alter table migtest_e_history2 drop column obsolete_string1; alter table migtest_e_history2 drop column obsolete_string2; drop table migtest_e_ref cascade constraints purge; -drop sequence migtest_e_ref_seq; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2289); +begin + execute immediate 'drop sequence migtest_e_ref_seq'; +exception + when expected_error then null; +end; +$$; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql index a40a2bece..1e7511caf 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.3.sql @@ -15,18 +15,45 @@ alter table migtest_fk_none drop constraint fk_migtest_fk_none_one_id; alter table migtest_fk_none_via_join drop constraint fk_mgtst_fk_nn_v_jn_n_d; alter table migtest_fk_set_null drop constraint fk_migtest_fk_set_null_one_id; alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null; -alter table migtest_e_basic drop constraint ck_migtest_e_basic_status; -alter table migtest_e_basic modify status drop default; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status'; +exception + when expected_error then null; +end; +$$; +alter table migtest_e_basic modify status default null; alter table migtest_e_basic modify status null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); update migtest_e_basic set status2 = 'N' where status2 is null; -alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint ck_migtest_e_basic_status2'; +exception + when expected_error then null; +end; +$$; alter table migtest_e_basic modify status2 varchar2(1); alter table migtest_e_basic modify status2 default 'N'; alter table migtest_e_basic modify status2 not null; alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); -alter table migtest_e_basic drop constraint uq_migtest_e_basic_description; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_description'; +exception + when expected_error then null; +end; +$$; update migtest_e_basic set user_id = 23 where user_id is null; alter table migtest_e_basic drop constraint fk_migtest_e_basic_user_id; @@ -37,23 +64,68 @@ alter table migtest_e_basic add old_boolean number(1) default 0 not null; alter table migtest_e_basic add old_boolean2 number(1); alter table migtest_e_basic add eref_id number(10); -alter table migtest_e_basic drop constraint uq_mgtst__bsc_stts_ndxtst1; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_name; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4; -alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_mgtst__bsc_stts_ndxtst1'; +exception + when expected_error then null; +end; +$$; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_name'; +exception + when expected_error then null; +end; +$$; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4'; +exception + when expected_error then null; +end; +$$; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5'; +exception + when expected_error then null; +end; +$$; -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); -- NOT YET IMPLEMENTED: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); -alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2443); +begin + execute immediate 'alter table migtest_e_enum drop constraint ck_migtest_e_enum_test_status'; +exception + when expected_error then null; +end; +$$; alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); comment on column migtest_e_history.test_string is ''; comment on table migtest_e_history is ''; -alter table migtest_e_history2 modify test_string drop default; +alter table migtest_e_history2 modify test_string default null; alter table migtest_e_history2 modify test_string null; alter table migtest_e_history2 add obsolete_string1 varchar2(255); alter table migtest_e_history2 add obsolete_string2 varchar2(255); alter table migtest_e_history4 modify test_number number(10); -alter table migtest_e_history6 modify test_number1 drop default; +alter table migtest_e_history6 modify test_number1 default null; alter table migtest_e_history6 modify test_number1 null; -- NOTE: table has @History - special migration may be necessary diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql index 34fe0bed4..42bff6949 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/1.4__dropsFor_1.3.sql @@ -29,7 +29,16 @@ alter table migtest_e_softdelete drop column deleted; alter table migtest_oto_child drop column master_id; drop table migtest_e_user cascade constraints purge; -drop sequence migtest_e_user_seq; +delimiter $$ +declare + expected_error exception; + pragma exception_init(expected_error, -2289); +begin + execute immediate 'drop sequence migtest_e_user_seq'; +exception + when expected_error then null; +end; +$$; drop table migtest_mtm_c_migtest_mtm_m cascade constraints purge; drop table migtest_mtm_m_migtest_mtm_c cascade constraints purge; drop table migtest_mtm_m_phone_numbers cascade constraints purge; diff --git a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations index fc08855e1..7af94d4e5 100644 --- a/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations +++ b/ebean-test/src/test/resources/migrationtest/dbmigration/oracle11/idx_oracle.migrations @@ -1,8 +1,8 @@ -756544611, 1.0__initial.sql -1927010726, 1.1.sql --1698942539, 1.2__dropsFor_1.1.sql -1883580424, 1.3.sql --629809805, 1.4__dropsFor_1.3.sql +-1128902470, 1.1.sql +1140013965, 1.2__dropsFor_1.1.sql +-1534972229, 1.3.sql +1340223598, 1.4__dropsFor_1.3.sql 1357801733, R__oracle_only_views.sql 561281075, R__order_views.sql