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-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java index 11e016efe..e6cbea55c 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_AlterColumnTest.java @@ -232,7 +232,7 @@ public class PlatformDdl_AlterColumnTest { assertEquals("alter table mytab alter column acol drop default", sql); sql = oraDdl.alterColumnDefaultValue("mytab", "acol", "DROP DEFAULT"); - assertEquals("alter table mytab modify acol drop default", sql); + assertEquals("alter table mytab modify acol default null", sql); sql = mysqlDdl.alterColumnDefaultValue("mytab", "acol", "DROP DEFAULT"); assertEquals("alter table mytab alter acol drop default", sql); diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java index 00a6e271d..7833898f7 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl_dropUniqueConstraintTest.java @@ -29,7 +29,16 @@ public class PlatformDdl_dropUniqueConstraintTest { sql = pgDdl.alterTableDropUniqueConstraint("mytab", "uq_name"); assertEquals("alter table mytab drop constraint uq_name", sql); sql = oraDdl.alterTableDropUniqueConstraint("mytab", "uq_name"); - assertEquals("alter table mytab drop constraint uq_name", sql); + assertEquals("delimiter $$\n" + + "declare\n" + + " expected_error exception;\n" + + " pragma exception_init(expected_error, -2443);\n" + + "begin\n" + + " execute immediate 'alter table mytab drop constraint uq_name';\n" + + "exception\n" + + " when expected_error then null;\n" + + "end;\n" + + "$$", sql); sql = sqlServerDdl.alterTableDropUniqueConstraint("mytab", "uq_name"); assertEquals( "IF EXISTS (SELECT name FROM sys.indexes WHERE object_id = OBJECT_ID('mytab','U') AND name = 'uq_name') drop index uq_name ON mytab;\n" diff --git a/ebean-test/src/test/resources/ebean.properties b/ebean-test/src/test/resources/ebean.properties index 544fd08d4..dd5d255ff 100644 --- a/ebean-test/src/test/resources/ebean.properties +++ b/ebean-test/src/test/resources/ebean.properties @@ -149,7 +149,7 @@ datasource.yugabyte.username=unit datasource.yugabyte.password=test datasource.yugabyte.url=jdbc:postgresql://localhost:6433/unit?sslmode=disable -datasource.oracle.username=test_ebean +datasource.oracle.username=test_eb datasource.oracle.password=test datasource.oracle.url=jdbc:oracle:thin:@localhost:1521:XE #datasource.oracle.driver=oracle.jdbc.driver.OracleDriver 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