Merge remote-tracking branch 'upstream/master'

# Conflicts:
#	ebean-api/pom.xml
#	ebean-api/src/main/java/io/ebean/config/dbplatform/db2/BaseDB2Platform.java
#	ebean-ddl-generator/src/test/resources/dbmigration/migrationtest/db2/1.1.sql
#	ebean-ddl-generator/src/test/resources/dbmigration/migrationtest/db2/1.3.sql
#	ebean-ddl-generator/src/test/resources/dbmigration/migrationtest/db2/idx_db2.migrations
This commit is contained in:
Roland Praml committed 2022-01-28 07:53:45 +01:00
commit 4493f1b266
35 files changed
+340 -66

No files matched your search

@@ -25,7 +25,10 @@ import io.ebean.config.PropertiesWrapper;
import io.ebean.config.dbplatform.DatabasePlatform;
import io.ebean.config.dbplatform.clickhouse.ClickHousePlatform;
import io.ebean.config.dbplatform.cockroach.CockroachPlatform;
import io.ebean.config.dbplatform.db2.DB2Platform;
import io.ebean.config.dbplatform.db2.DB2ForIPlatform;
import io.ebean.config.dbplatform.db2.DB2LegacyPlatform;
import io.ebean.config.dbplatform.db2.DB2LuwPlatform;
import io.ebean.config.dbplatform.db2.DB2ZosPlatform;
import io.ebean.config.dbplatform.h2.H2Platform;
import io.ebean.config.dbplatform.hana.HanaPlatform;
import io.ebean.config.dbplatform.hsqldb.HsqldbPlatform;
@@ -918,7 +921,14 @@ public class DefaultDbMigration implements DbMigration {
case SQLSERVER:
throw new IllegalArgumentException("Please choose the more specific SQLSERVER16 or SQLSERVER17 platform. Refer to issue #1340 for details");
case DB2:
return new DB2Platform();
logger.warn("Using DB2LegacyPlatform. It is recommended to migrate to db2luw/db2zos/db2fori. Refer to issue #2514 for details");
return new DB2LegacyPlatform();
case DB2LUW:
return new DB2LuwPlatform();
case DB2ZOS:
return new DB2ZosPlatform();
case DB2FORI:
return new DB2ForIPlatform();
case SQLITE:
return new SQLitePlatform();
case HANA:
@@ -1,21 +1,7 @@
package io.ebeaninternal.dbmigration.ddlgeneration;
import io.ebean.config.dbplatform.DatabasePlatform;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.ClickHouseDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.CockroachDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.DB2Ddl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.H2Ddl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.HanaColumnStoreDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.HsqldbDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.MariaDbDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.MySqlDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.NuoDbDdl;
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;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.SQLiteDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.SqlServerDdl;
import io.ebeaninternal.dbmigration.ddlgeneration.platform.*;
/**
* Builds platform specific DDL handler.
@@ -31,6 +17,9 @@ public class PlatformDdlBuilder {
case H2:
return new H2Ddl(platform);
case DB2:
case DB2LUW:
case DB2FORI:
case DB2ZOS:
return new DB2Ddl(platform);
case MARIADB:
return new MariaDbDdl(platform);
@@ -50,6 +39,8 @@ public class PlatformDdlBuilder {
return new Postgres9Ddl(platform);
case POSTGRES:
return new PostgresDdl(platform);
case YUGABYTE:
return new YugabyteDdl(platform);
case COCKROACH:
return new CockroachDdl(platform);
case SQLSERVER16:
@@ -174,16 +174,21 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl {
}
protected void createHistoryTable(DdlBuffer apply, MTable table) throws IOException {
createHistoryTableAs(apply, table);
createHistoryTableWithPeriod(apply);
}
protected void createHistoryTableAs(DdlBuffer apply, MTable table) throws IOException {
apply.append(platformDdl.getCreateTableCommandPrefix()).append(" ").append(table.getName()).append(historySuffix).append("(").newLine();
Collection<MColumn> cols = table.allColumns();
for (MColumn column : cols) {
for (MColumn column : table.allColumns()) {
if (!column.isDraftOnly()) {
writeColumnDefinition(apply, column.getName(), column.getType());
apply.append(",").newLine();
}
}
}
protected void createHistoryTableWithPeriod(DdlBuffer apply) throws IOException {
writeColumnDefinition(apply, sysPeriodStart, sysPeriodType);
apply.append(",").newLine();
writeColumnDefinition(apply, sysPeriodEnd, sysPeriodType);
@@ -22,11 +22,8 @@ public class PostgresHistoryDdl extends DbTriggerBasedHistoryDdl {
*/
@Override
protected void createHistoryTable(DdlBuffer apply, MTable table) throws IOException {
String baseTable = table.getName();
apply
.append("create table ").append(baseTable).append(historySuffix)
.append("(like ").append(baseTable).append(")").endOfStatement();
apply.append("create table ").append(table.getName()).append(historySuffix)
.append("(like ").append(table.getName()).append(")").endOfStatement();
}
/**
@@ -57,7 +54,6 @@ public class PostgresHistoryDdl extends DbTriggerBasedHistoryDdl {
@Override
protected void createTriggers(DdlWrite writer, MTable table) throws IOException {
String baseTableName = table.getName();
String procedureName = procedureName(baseTableName);
String triggerName = triggerName(baseTableName);
@@ -110,7 +106,6 @@ public class PostgresHistoryDdl extends DbTriggerBasedHistoryDdl {
@Override
protected void createStoredFunction(DdlWrite writer, MTable table) throws IOException {
String procedureName = procedureName(table.getName());
String historyTable = historyTableName(table.getName());
@@ -120,16 +115,13 @@ public class PostgresHistoryDdl extends DbTriggerBasedHistoryDdl {
@Override
protected void updateHistoryTriggers(DbTriggerUpdate update) throws IOException {
String procedureName = procedureName(update.getBaseTable());
recreateHistoryView(update);
createOrReplaceFunction(update.historyTriggerBuffer(), procedureName, update.getHistoryTable(), update.getColumns());
}
@Override
protected void appendInsertIntoHistory(DdlBuffer buffer, String historyTable, List<String> columns) throws IOException {
buffer.append(" insert into ").append(historyTable).append(" (").append(sysPeriod).append(",");
appendColumnNames(buffer, columns, "");
buffer.append(") values (tstzrange(lowerTs,upperTs), ");
@@ -0,0 +1,11 @@
package io.ebeaninternal.dbmigration.ddlgeneration.platform;
import io.ebean.config.dbplatform.DatabasePlatform;
public class YugabyteDdl extends PostgresDdl {
public YugabyteDdl(DatabasePlatform platform) {
super(platform);
this.historyDdl = new YugabyteHistoryDdl();
}
}
@@ -0,0 +1,16 @@
package io.ebeaninternal.dbmigration.ddlgeneration.platform;
import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer;
import io.ebeaninternal.dbmigration.model.MTable;
import java.io.IOException;
public class YugabyteHistoryDdl extends PostgresHistoryDdl {
@Override
protected void createHistoryTable(DdlBuffer apply, MTable table) throws IOException {
createHistoryTableAs(apply, table);
writeColumnDefinition(apply, sysPeriod, "tstzrange");
apply.newLine().append(")").endOfStatement();
}
}