Noemis Änderungen übernommen

This commit is contained in:
Roland Praml committed 2022-02-02 12:51:25 +01:00
1 parent c1cdfb41f6
commit 3442dd9547
6 files changed
+36 -18

No files matched your search

@@ -1,33 +1,31 @@
package io.ebeaninternal.dbmigration.run; package io.ebeaninternal.dbmigration.run;
import io.ebean.config.DatabaseConfig; import io.ebean.config.DatabaseConfig;
import io.ebean.migration.auto.AutoMigrationRunner; import io.ebean.migration.MigrationConfig;
import io.ebean.migration.MigrationRunner;
import io.ebean.plugin.Plugin; import io.ebean.plugin.Plugin;
import io.ebean.plugin.SpiServer; import io.ebean.plugin.SpiServer;
import io.ebeaninternal.server.core.ServiceUtil;
public class DbRunMigrationPlugin implements Plugin { public class DbRunMigrationPlugin implements Plugin {
private SpiServer server; private SpiServer server;
private AutoMigrationRunner migrationRunner; private MigrationConfig migrationConfig;
@Override @Override
public void configure(SpiServer server) { public void configure(SpiServer server) {
this.server = server; this.server = server;
DatabaseConfig config = server.config(); DatabaseConfig config = server.config();
if (config.isRunMigration()) { if (config.isRunMigration()) {
migrationRunner = ServiceUtil.service(AutoMigrationRunner.class); migrationConfig = new MigrationConfig();
if (migrationRunner == null) {
throw new IllegalStateException(
"No AutoMigrationRunner found. Probably ebean-migration is not in the classpath?");
}
final String dbSchema = config.getDbSchema(); final String dbSchema = config.getDbSchema();
if (dbSchema != null) { if (dbSchema != null) {
migrationRunner.setDefaultDbSchema(dbSchema); migrationConfig.setSetCurrentSchema(false);
migrationConfig.setDbSchema(dbSchema);
} }
migrationRunner.setName(config.getName()); migrationConfig.setName(config.getName());
migrationRunner.setPlatform(config.getDatabasePlatform().getPlatform().base().name().toLowerCase()); migrationConfig.setPlatform(config.getDatabasePlatform().getPlatform().base().name().toLowerCase());
migrationRunner.loadProperties(config.getProperties()); migrationConfig.load(config.getProperties());
migrationConfig.setRunPlaceholderMap(config.getDdlPlaceholderMap());
} }
} }
@@ -43,8 +41,8 @@ public class DbRunMigrationPlugin implements Plugin {
@Override @Override
public void start() { public void start() {
if (migrationRunner != null) { if (migrationConfig != null) {
migrationRunner.run(server.dataSource()); new MigrationRunner(migrationConfig).run(server.dataSource());
} }
} }
} }
@@ -50,6 +50,7 @@ public class DbMigrationTest extends BaseTestCase {
"migtest_fk_set_null", "migtest_fk_set_null",
"migtest_mtm_c", "migtest_mtm_c",
"migtest_mtm_m", "migtest_mtm_m",
"migtest_mtm_m_phone_numbers",
"migtest_mtm_c_migtest_mtm_m", "migtest_mtm_c_migtest_mtm_m",
"migtest_mtm_m_migtest_mtm_c", "migtest_mtm_m_migtest_mtm_c",
"migtest_oto_child", "migtest_oto_child",
@@ -184,7 +185,7 @@ public class DbMigrationTest extends BaseTestCase {
sb.append("drop view ").append(table).append("_with_history;\n"); sb.append("drop view ").append(table).append("_with_history;\n");
sb.append("drop sequence ").append(table).append("_seq;\n"); sb.append("drop sequence ").append(table).append("_seq;\n");
} }
System.err.println(sb);
runScript(true, sb.toString(), "cleanup"); runScript(true, sb.toString(), "cleanup");
runScript(true, sb.toString(), "cleanup"); runScript(true, sb.toString(), "cleanup");
} }
@@ -37,6 +37,7 @@ public class MysqlGenerateMigrationTest {
config.getProperties().put("ebean.migrationtest.migration.pathToResources", pathToResources); config.getProperties().put("ebean.migrationtest.migration.pathToResources", pathToResources);
config.getProperties().put("ebean.migrationtest.migration.platforms", "mysql"); config.getProperties().put("ebean.migrationtest.migration.platforms", "mysql");
config.getProperties().put("ebean.migrationtest.migration.migrationPath", "dbmigration/migrationtest-procedures/"); config.getProperties().put("ebean.migrationtest.migration.migrationPath", "dbmigration/migrationtest-procedures/");
config.getProperties().put("ebean.migrationtest.migration.migrationInitPath", "dbinit/migrationtest-procedures/");
config.setPackages(Arrays.asList("misc.migration.mysql_v1_0")); config.setPackages(Arrays.asList("misc.migration.mysql_v1_0"));
// First, we clean up the output-directory // First, we clean up the output-directory
@@ -2,6 +2,7 @@ package io.ebeaninternal.dbmigration.ddlgeneration.platform;
import io.ebean.DB; import io.ebean.DB;
import io.ebean.config.DatabaseConfig; import io.ebean.config.DatabaseConfig;
import io.ebean.config.dbplatform.db2.DB2LuwPlatform;
import io.ebean.config.dbplatform.h2.H2Platform; import io.ebean.config.dbplatform.h2.H2Platform;
import io.ebean.config.dbplatform.hana.HanaPlatform; import io.ebean.config.dbplatform.hana.HanaPlatform;
import io.ebean.config.dbplatform.mysql.MySqlPlatform; import io.ebean.config.dbplatform.mysql.MySqlPlatform;
@@ -23,6 +24,7 @@ public class PlatformDdl_CreateIndexTest {
private final PlatformDdl oraDdl = PlatformDdlBuilder.create(new OraclePlatform()); private final PlatformDdl oraDdl = PlatformDdlBuilder.create(new OraclePlatform());
private final PlatformDdl sqlServerDdl = PlatformDdlBuilder.create(new SqlServer17Platform()); private final PlatformDdl sqlServerDdl = PlatformDdlBuilder.create(new SqlServer17Platform());
private final PlatformDdl hanaDdl = PlatformDdlBuilder.create(new HanaPlatform()); private final PlatformDdl hanaDdl = PlatformDdlBuilder.create(new HanaPlatform());
private final PlatformDdl db2LuwDdl = PlatformDdlBuilder.create(new DB2LuwPlatform());
{ {
DatabaseConfig config = DB.getDefault().pluginApi().config(); DatabaseConfig config = DB.getDefault().pluginApi().config();
@@ -32,6 +34,7 @@ public class PlatformDdl_CreateIndexTest {
oraDdl.configure(config); oraDdl.configure(config);
sqlServerDdl.configure(config); sqlServerDdl.configure(config);
hanaDdl.configure(config); hanaDdl.configure(config);
db2LuwDdl.configure(config);
} }
WriteCreateIndex writeCreateIndex() { WriteCreateIndex writeCreateIndex() {
@@ -71,6 +74,8 @@ public class PlatformDdl_CreateIndexTest {
assertEquals("create unique index ix_mytab_acol on mytab (acol)", sql); assertEquals("create unique index ix_mytab_acol on mytab (acol)", sql);
sql = hanaDdl.createIndex(createIndex); sql = hanaDdl.createIndex(createIndex);
assertThat(sql).isEqualTo("-- explicit index \"ix_mytab_acol\" for single column \"acol\" of table \"mytab\" is not necessary"); assertThat(sql).isEqualTo("-- explicit index \"ix_mytab_acol\" for single column \"acol\" of table \"mytab\" is not necessary");
sql = db2LuwDdl.createIndex(createIndex);
assertThat(sql).isEqualTo("create unique index ix_mytab_acol on mytab (acol)");
} }
@Test @Test
@@ -95,4 +100,13 @@ public class PlatformDdl_CreateIndexTest {
assertEquals("create index ix_mytab_acol on mytab (acol)", sql); assertEquals("create index ix_mytab_acol on mytab (acol)", sql);
} }
@Test
public void db2luw_fkeyCreateIndex() {
String sql = db2LuwDdl.createIndex(fkeyCreateIndex(true));
assertEquals("create unique index ix_mytab_acol on mytab (acol)", sql);
sql = db2LuwDdl.createIndex(fkeyCreateIndex(false));
assertEquals("create index ix_mytab_acol on mytab (acol)", sql);
}
} }
@@ -2,6 +2,7 @@ package misc.migration.v1_1;
import java.util.List; import java.util.List;
import javax.persistence.ElementCollection;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.ManyToMany; import javax.persistence.ManyToMany;
@@ -19,6 +20,9 @@ public class MtmMaster {
@ManyToMany @ManyToMany
List<MtmChild> children; List<MtmChild> children;
@ElementCollection
List<String> phoneNumbers;
public Long getId() { public Long getId() {
return id; return id;
} }
@@ -5,7 +5,7 @@ datasource.default=h2
datasource.h2.username=sa datasource.h2.username=sa
datasource.h2.password= datasource.h2.password=
datasource.h2.url=jdbc:h2:mem:h2AutoTune datasource.h2.url=jdbc:h2:mem:h2AutoTune;NON_KEYWORDS=KEY,VALUE
datasource.db2.username=migtest datasource.db2.username=migtest
datasource.db2.password=migtest datasource.db2.password=migtest
@@ -18,7 +18,7 @@ datasource.pg.url=jdbc:h2:mem:h2AutoTune
# parameters for migration test # parameters for migration test
datasource.migrationtest.username=SA datasource.migrationtest.username=SA
datasource.migrationtest.password=SA datasource.migrationtest.password=SA
datasource.migrationtest.url=jdbc:h2:mem:migration datasource.migrationtest.url=jdbc:h2:mem:migration;NON_KEYWORDS=KEY,VALUE
ebean.migrationtest.applyPrefix=V ebean.migrationtest.applyPrefix=V
ebean.migrationtest.ddl.generate=false ebean.migrationtest.ddl.generate=false
ebean.migrationtest.ddl.run=false ebean.migrationtest.ddl.run=false
@@ -31,7 +31,7 @@ ebean.migrationtest.migration.run=true
ebean.migrationtest.migration.includeIndex=true ebean.migrationtest.migration.includeIndex=true
ebean.migrationtest.migration.generateInit=true ebean.migrationtest.migration.generateInit=true
ebean.migrationtest.migration.generatePendingDrop=auto ebean.migrationtest.migration.generatePendingDrop=auto
ebean.migrationtest.migration.platforms=db2,h2,hsqldb,mysql,mysql55=mysql55,postgres,oracle,sqlite,sqlserver17=sqlserver17,hana ebean.migrationtest.migration.platforms=db2luw=db2,h2,hsqldb,mysql,mysql55=mysql55,postgres,oracle,sqlite,sqlserver17=sqlserver17,hana
# need to generate unique statements to prevent them from being filtered out as duplicates by the DdlRunner # need to generate unique statements to prevent them from being filtered out as duplicates by the DdlRunner
ebean.hana.generateUniqueDdl=true ebean.hana.generateUniqueDdl=true