Change OraclePlatform to default to use Identity (rather than sequence) (#1976)

* Change OraclePlatform to default to use Identity

- Keep Oracle11Platform to default to Sequence
- Refactor rename Oracle10Ddl to OracleDdl

* Change OraclePlatform to default to use Identity

- DDL review changes in src/test

* Bump ebean-test-docker for StartOracle
This commit is contained in:
Rob Bygrave
2020-04-30 23:35:20 +12:00
committed by GitHub
parent 7c17098f17
commit 02bdace144
13 changed files with 399 additions and 1114 deletions
+1 -1
View File
@@ -200,7 +200,7 @@
<dependency>
<groupId>io.ebean.test</groupId>
<artifactId>ebean-test-docker</artifactId>
<version>3.1.3</version>
<version>3.1.5</version>
<scope>test</scope>
</dependency>
@@ -1,6 +1,7 @@
package io.ebean.config.dbplatform.oracle;
import io.ebean.annotation.Platform;
import io.ebean.config.dbplatform.IdType;
/**
* Oracle 11 platform using rownum sql limiting.
@@ -12,5 +13,6 @@ public class Oracle11Platform extends OraclePlatform {
this.platform = Platform.ORACLE11;
this.columnAliasPrefix = "c";
this.sqlLimiter = new OracleRownumSqlLimiter();
dbIdentity.setIdType(IdType.SEQUENCE);
}
}
@@ -30,7 +30,7 @@ public class OraclePlatform extends DatabasePlatform {
this.basicSqlLimiter = new BasicSqlAnsiLimiter();
this.historySupport = new OracleDbHistorySupport();
this.truncateTable = "truncate table %s cascade";
dbIdentity.setIdType(IdType.SEQUENCE);
dbIdentity.setIdType(IdType.IDENTITY);
dbIdentity.setSupportsSequence(true);
dbIdentity.setSupportsIdentity(true);
dbIdentity.setSupportsGetGeneratedKeys(true);
@@ -6,9 +6,9 @@ import io.ebean.config.dbplatform.DatabasePlatform;
/**
* Oracle platform specific DDL.
*/
public class Oracle10Ddl extends PlatformDdl {
public class OracleDdl extends PlatformDdl {
public Oracle10Ddl(DatabasePlatform platform) {
public OracleDdl(DatabasePlatform platform) {
super(platform);
this.dropTableIfExists = "drop table ";
this.dropSequenceIfExists = "drop sequence ";
@@ -48,4 +48,12 @@ public class Oracle10Ddl extends PlatformDdl {
}
}
/**
* Modify and return the column definition for autoincrement or identity definition.
*/
@Override
public String asIdentityColumn(String columnDefn, DdlIdentity identity) {
return asIdentityStandardOptions(columnDefn, identity);
}
}
@@ -195,7 +195,6 @@ public class PlatformDdl {
* SQl2003 standard identity definition.
*/
protected String asIdentityStandardOptions(String columnDefn, DdlIdentity identity) {
StringBuilder sb = new StringBuilder(columnDefn.length() + 60);
sb.append(columnDefn).append(identity.optionGenerated());
sb.append(identity.identityOptions(identityStartWith, identityIncrementBy, identityCache));
@@ -9,7 +9,7 @@ import io.ebeaninternal.dbmigration.ddlgeneration.platform.HanaColumnStoreDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.HsqldbDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.MySqlDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.NuoDbDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.Oracle10Ddl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.OracleDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.Postgres9Ddl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.PostgresDdl;
@@ -40,7 +40,7 @@ public class PlatformDdlBuilder {
return new NuoDbDdl(platform);
case ORACLE:
case ORACLE11:
return new Oracle10Ddl(platform);
return new OracleDdl(platform);
case SQLITE:
return new SQLiteDdl(platform);
case POSTGRES9:
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -6,16 +6,16 @@ import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class Oracle10DdlTest {
public class OracleDdlTest {
Oracle10Ddl create() {
return new Oracle10Ddl(new OraclePlatform());
OracleDdl create() {
return new OracleDdl(new OraclePlatform());
}
@Test
public void appendForeignKeyOnDelete_expectEmtpy_when_nullRestrictSetDefault() {
Oracle10Ddl oracle = create();
OracleDdl oracle = create();
StringBuilder sb = new StringBuilder();
oracle.appendForeignKeyOnDelete(sb, oracle.withDefault(null));
@@ -34,7 +34,7 @@ public class Oracle10DdlTest {
@Test
public void appendForeignKeyOnDelete_setNull() {
Oracle10Ddl oracle = create();
OracleDdl oracle = create();
StringBuilder sb = new StringBuilder();
oracle.appendForeignKeyOnDelete(sb, ConstraintMode.SET_NULL);
@@ -44,7 +44,7 @@ public class Oracle10DdlTest {
@Test
public void appendForeignKeyOnDelete_cascade() {
Oracle10Ddl oracle = create();
OracleDdl oracle = create();
StringBuilder sb = new StringBuilder();
oracle.appendForeignKeyOnDelete(sb, ConstraintMode.CASCADE);
@@ -267,7 +267,7 @@ public class PlatformDdl_AlterColumnTest {
@Test
public void useIdentityType_oracle() {
assertEquals(oraDdl.useIdentityType(null), IdType.SEQUENCE);
assertEquals(oraDdl.useIdentityType(null), IdType.IDENTITY);
assertEquals(oraDdl.useIdentityType(IdType.SEQUENCE), IdType.SEQUENCE);
assertEquals(oraDdl.useIdentityType(IdType.IDENTITY), IdType.IDENTITY);
assertEquals(oraDdl.useIdentityType(IdType.GENERATOR), IdType.GENERATOR);
@@ -1,18 +1,16 @@
-- Migrationscripts for ebean unittest
-- apply changes
create table migtest_ckey_assoc (
id number(10) not null,
id number(10) generated by default as identity not null,
assoc_one varchar2(255),
constraint pk_migtest_ckey_assoc primary key (id)
);
create sequence migtest_ckey_assoc_seq;
create table migtest_ckey_detail (
id number(10) not null,
id number(10) generated by default as identity not null,
something varchar2(255),
constraint pk_migtest_ckey_detail primary key (id)
);
create sequence migtest_ckey_detail_seq;
create table migtest_ckey_parent (
one_key number(10) not null,
@@ -23,47 +21,41 @@ create table migtest_ckey_parent (
);
create table migtest_fk_cascade (
id number(19) not null,
id number(19) generated by default as identity not null,
one_id number(19),
constraint pk_migtest_fk_cascade primary key (id)
);
create sequence migtest_fk_cascade_seq;
create table migtest_fk_cascade_one (
id number(19) not null,
id number(19) generated by default as identity not null,
constraint pk_migtest_fk_cascade_one primary key (id)
);
create sequence migtest_fk_cascade_one_seq;
create table migtest_fk_none (
id number(19) not null,
id number(19) generated by default as identity not null,
one_id number(19),
constraint pk_migtest_fk_none primary key (id)
);
create sequence migtest_fk_none_seq;
create table migtest_fk_none_via_join (
id number(19) not null,
id number(19) generated by default as identity not null,
one_id number(19),
constraint pk_migtest_fk_none_via_join primary key (id)
);
create sequence migtest_fk_none_via_join_seq;
create table migtest_fk_one (
id number(19) not null,
id number(19) generated by default as identity not null,
constraint pk_migtest_fk_one primary key (id)
);
create sequence migtest_fk_one_seq;
create table migtest_fk_set_null (
id number(19) not null,
id number(19) generated by default as identity not null,
one_id number(19),
constraint pk_migtest_fk_set_null primary key (id)
);
create sequence migtest_fk_set_null_seq;
create table migtest_e_basic (
id number(10) not null,
id number(10) generated by default as identity not null,
status varchar2(1),
status2 varchar2(1) default 'N' not null,
name varchar2(127),
@@ -85,103 +77,89 @@ create table migtest_e_basic (
constraint uq_migtest_e_basic_indextest6 unique (indextest6),
constraint pk_migtest_e_basic primary key (id)
);
create sequence migtest_e_basic_seq;
create table migtest_e_enum (
id number(10) not null,
id number(10) generated by default as identity not null,
test_status varchar2(1),
constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')),
constraint pk_migtest_e_enum primary key (id)
);
create sequence migtest_e_enum_seq;
create table migtest_e_history (
id number(10) not null,
id number(10) generated by default as identity not null,
test_string varchar2(255),
constraint pk_migtest_e_history primary key (id)
);
create sequence migtest_e_history_seq;
create table migtest_e_history2 (
id number(10) not null,
id number(10) generated by default as identity not null,
test_string varchar2(255),
obsolete_string1 varchar2(255),
obsolete_string2 varchar2(255),
constraint pk_migtest_e_history2 primary key (id)
);
create sequence migtest_e_history2_seq;
create table migtest_e_history3 (
id number(10) not null,
id number(10) generated by default as identity not null,
test_string varchar2(255),
constraint pk_migtest_e_history3 primary key (id)
);
create sequence migtest_e_history3_seq;
create table migtest_e_history4 (
id number(10) not null,
id number(10) generated by default as identity not null,
test_number number(10),
constraint pk_migtest_e_history4 primary key (id)
);
create sequence migtest_e_history4_seq;
create table migtest_e_history5 (
id number(10) not null,
id number(10) generated by default as identity not null,
test_number number(10),
constraint pk_migtest_e_history5 primary key (id)
);
create sequence migtest_e_history5_seq;
create table migtest_e_history6 (
id number(10) not null,
id number(10) generated by default as identity not null,
test_number1 number(10),
test_number2 number(10) not null,
constraint pk_migtest_e_history6 primary key (id)
);
create sequence migtest_e_history6_seq;
create table migtest_e_ref (
id number(10) not null,
id number(10) generated by default as identity not null,
name varchar2(127) not null,
constraint uq_migtest_e_ref_name unique (name),
constraint pk_migtest_e_ref primary key (id)
);
create sequence migtest_e_ref_seq;
create table migtest_e_softdelete (
id number(10) not null,
id number(10) generated by default as identity not null,
test_string varchar2(255),
constraint pk_migtest_e_softdelete primary key (id)
);
create sequence migtest_e_softdelete_seq;
create table migtest_mtm_c (
id number(10) not null,
id number(10) generated by default as identity not null,
name varchar2(255),
constraint pk_migtest_mtm_c primary key (id)
);
create sequence migtest_mtm_c_seq;
create table migtest_mtm_m (
id number(19) not null,
id number(19) generated by default as identity not null,
name varchar2(255),
constraint pk_migtest_mtm_m primary key (id)
);
create sequence migtest_mtm_m_seq;
create table migtest_oto_child (
id number(10) not null,
id number(10) generated by default as identity not null,
name varchar2(255),
constraint pk_migtest_oto_child primary key (id)
);
create sequence migtest_oto_child_seq;
create table migtest_oto_master (
id number(19) not null,
id number(19) generated by default as identity not null,
name varchar2(255),
constraint pk_migtest_oto_master primary key (id)
);
create sequence migtest_oto_master_seq;
create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
@@ -1,10 +1,9 @@
-- Migrationscripts for ebean unittest
-- apply changes
create table migtest_e_user (
id number(10) not null,
id number(10) generated by default as identity not null,
constraint pk_migtest_e_user primary key (id)
);
create sequence migtest_e_user_seq;
create table migtest_mtm_c_migtest_mtm_m (
migtest_mtm_c_id number(10) not null,
@@ -1,12 +1,11 @@
-- Migrationscripts for ebean unittest
-- apply changes
create table migtest_e_ref (
id number(10) not null,
id number(10) generated by default as identity not null,
name varchar2(127) not null,
constraint uq_migtest_e_ref_name unique (name),
constraint pk_migtest_e_ref primary key (id)
);
create sequence migtest_e_ref_seq;
alter table migtest_ckey_detail drop constraint fk_migtest_ckey_detail_parent;
alter table migtest_fk_cascade drop constraint fk_migtest_fk_cascade_one_id;