diff --git a/pom.xml b/pom.xml index c9c9687e6..c47919e2e 100644 --- a/pom.xml +++ b/pom.xml @@ -88,7 +88,7 @@ io.ebean ebean-annotation - 6.4 + 6.5 diff --git a/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java b/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java index 369be3917..b97adadc7 100644 --- a/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java @@ -278,7 +278,7 @@ public class DatabasePlatform { * Return true if this matches the given platform. */ public boolean isPlatform(Platform platform) { - return this.platform == platform; + return this.platform.base() == platform; } /** diff --git a/src/main/java/io/ebean/config/dbplatform/postgres/Postgres9Platform.java b/src/main/java/io/ebean/config/dbplatform/postgres/Postgres9Platform.java new file mode 100644 index 000000000..47d554621 --- /dev/null +++ b/src/main/java/io/ebean/config/dbplatform/postgres/Postgres9Platform.java @@ -0,0 +1,14 @@ +package io.ebean.config.dbplatform.postgres; + +import io.ebean.annotation.Platform; + +/** + * Postgres9 platform - uses serial type for identity columns. + */ +public class Postgres9Platform extends PostgresPlatform { + + public Postgres9Platform() { + super(); + this.platform = Platform.POSTGRES9; + } +} diff --git a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java index 05fe2d026..66e64dc91 100644 --- a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java @@ -19,16 +19,15 @@ import java.sql.SQLException; import java.sql.Types; /** - * Postgres v9 specific platform. + * Postgres 10+ specific platform. *

- * Uses serial types and getGeneratedKeys. - *

+ * Defaults to use "generated by default as identity". */ public class PostgresPlatform extends DatabasePlatform { public PostgresPlatform() { super(); - this.platform = Platform.POSTGRES; + this.platform = Platform.POSTGRES10; this.supportsNativeIlike = true; this.supportsDeleteTableAlias = true; this.selectCountWithAlias = true; diff --git a/src/main/java/io/ebeaninternal/api/PlatformMatch.java b/src/main/java/io/ebeaninternal/api/PlatformMatch.java new file mode 100644 index 000000000..a333008e9 --- /dev/null +++ b/src/main/java/io/ebeaninternal/api/PlatformMatch.java @@ -0,0 +1,27 @@ +package io.ebeaninternal.api; + +import io.ebean.annotation.Platform; +import io.ebean.util.StringHelper; + +public class PlatformMatch { + + /** + * Return true if the script platforms is a match/supported for the given platform. + * + * @param platform The database platform we are generating/running DDL for + * @param platforms The platforms (comma delimited) this script should run for + */ + public static boolean matchPlatform(Platform platform, String platforms) { + if (platforms == null || platforms.trim().isEmpty()) { + return true; + } + + // match on base platform name and platform name + for (String name : StringHelper.splitNames(platforms)) { + if (name.equalsIgnoreCase(platform.base().name()) || name.equalsIgnoreCase(platform.name())) { + return true; + } + } + return false; + } +} diff --git a/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java b/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java index 95ed4c942..132e357cb 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java +++ b/src/main/java/io/ebeaninternal/dbmigration/DdlGenerator.java @@ -1,9 +1,9 @@ package io.ebeaninternal.dbmigration; +import io.ebean.annotation.Platform; import io.ebean.config.DbMigrationConfig; import io.ebean.config.ServerConfig; import io.ebean.config.dbplatform.DatabasePlatform; -import io.ebean.migration.ddl.DdlAutoCommit; import io.ebean.migration.ddl.DdlRunner; import io.ebean.migration.runner.ScriptTransform; import io.ebean.util.JdbcClose; @@ -48,6 +48,7 @@ public class DdlGenerator { private final boolean ddlAutoCommit; private final String dbSchema; private final ScriptTransform scriptTransform; + private final Platform platform; private final String platformName; private CurrentModel currentModel; @@ -63,7 +64,8 @@ public class DdlGenerator { this.createOnly = serverConfig.isDdlCreateOnly(); this.dbSchema = serverConfig.getDbSchema(); final DatabasePlatform databasePlatform = server.getDatabasePlatform(); - this.platformName = databasePlatform.getPlatform().base().name(); + this.platform = databasePlatform.getPlatform(); + this.platformName = platform.base().name(); if (!serverConfig.getTenantMode().isDdlEnabled() && serverConfig.isDdlRun()) { log.warn("DDL can't be run on startup with TenantMode " + serverConfig.getTenantMode()); this.runDdl = false; @@ -188,7 +190,7 @@ public class DdlGenerator { protected void runDropSql(Connection connection) throws IOException { if (!createOnly) { if (extraDdl && jaxbPresent) { - String extraApply = ExtraDdlXmlReader.buildExtra(server.getDatabasePlatform().getName(), true); + String extraApply = ExtraDdlXmlReader.buildExtra(platform, true); if (extraApply != null) { runScript(connection, false, extraApply, "extra-ddl"); } @@ -209,13 +211,13 @@ public class DdlGenerator { if (extraDdl && jaxbPresent) { if (currentModel().isTablePartitioning()) { - String extraPartitioning = ExtraDdlXmlReader.buildPartitioning(server.getDatabasePlatform().getName()); + String extraPartitioning = ExtraDdlXmlReader.buildPartitioning(platform); if (extraPartitioning != null && !extraPartitioning.isEmpty()) { runScript(connection, false, extraPartitioning, "builtin-partitioning-ddl"); } } - String extraApply = ExtraDdlXmlReader.buildExtra(server.getDatabasePlatform().getName(), false); + String extraApply = ExtraDdlXmlReader.buildExtra(platform, false); if (extraApply != null) { runScript(connection, false, extraApply, "extra-ddl"); } diff --git a/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java b/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java index f57cdb5de..dec46fef6 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java +++ b/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java @@ -19,6 +19,7 @@ import io.ebean.config.dbplatform.mysql.MySql55Platform; import io.ebean.config.dbplatform.mysql.MySqlPlatform; import io.ebean.config.dbplatform.nuodb.NuoDbPlatform; import io.ebean.config.dbplatform.oracle.OraclePlatform; +import io.ebean.config.dbplatform.postgres.Postgres9Platform; import io.ebean.config.dbplatform.postgres.PostgresPlatform; import io.ebean.config.dbplatform.sqlanywhere.SqlAnywherePlatform; import io.ebean.config.dbplatform.sqlite.SQLitePlatform; @@ -49,6 +50,8 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import static io.ebeaninternal.api.PlatformMatch.matchPlatform; + /** * Generates DB Migration xml and sql scripts. *

@@ -406,7 +409,7 @@ public class DefaultDbMigration implements DbMigration { if (extraDdl != null) { List ddlScript = extraDdl.getDdlScript(); for (DdlScript script : ddlScript) { - if (!script.isDrop() && ExtraDdlXmlReader.matchPlatform(dbPlatform.getName(), script.getPlatforms())) { + if (!script.isDrop() && matchPlatform(dbPlatform.getPlatform(), script.getPlatforms())) { writeExtraDdl(migrationDir, script); } } @@ -812,7 +815,10 @@ public class DefaultDbMigration implements DbMigration { return new H2Platform(); case HSQLDB: return new HsqldbPlatform(); + case POSTGRES9: + return new Postgres9Platform(); case POSTGRES: + case POSTGRES10: return new PostgresPlatform(); case MYSQL55: return new MySql55Platform(); diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java index 2bdaab066..6f7e09b37 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/BaseTableDdl.java @@ -1,5 +1,6 @@ package io.ebeaninternal.dbmigration.ddlgeneration.platform; +import io.ebean.annotation.Platform; import io.ebean.config.DbConstraintNaming; import io.ebean.config.NamingConvention; import io.ebean.config.ServerConfig; @@ -37,6 +38,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import static io.ebeaninternal.api.PlatformMatch.matchPlatform; import static io.ebeaninternal.dbmigration.ddlgeneration.platform.SplitColumns.split; /** @@ -168,18 +170,14 @@ public class BaseTableDdl implements TableDdl { } private List getScriptsForPlatform(List scripts) { - String searchPlatform = platformDdl.getPlatform().getName(); - List ret = Collections.emptyList(); + Platform searchPlatform = platformDdl.getPlatform().getPlatform(); for (DdlScript script : scripts) { - if (script.getPlatforms() == null || script.getPlatforms().isEmpty()) { - ret = script.getDdl(); - } else for (String platform : StringHelper.splitNames(script.getPlatforms())) { - if (platform.equals(searchPlatform)) { - return script.getDdl(); - } + if (matchPlatform(searchPlatform, script.getPlatforms())) { + // just returns the first match (rather than appends them) + return script.getDdl(); } } - return ret; + return Collections.emptyList(); } /** @@ -511,16 +509,7 @@ public class BaseTableDdl implements TableDdl { } private boolean platformInclude(String platforms) { - if (platforms == null || platforms.isEmpty()) { - return true; - } - String currentPlatform = platformDdl.getPlatform().getPlatform().name(); - for (String name : StringHelper.splitNames(platforms)) { - if (currentPlatform.equalsIgnoreCase(name)) { - return true; - } - } - return false; + return matchPlatform(platformDdl.getPlatform().getPlatform(), platforms); } /** diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Oracle10Ddl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Oracle10Ddl.java index 9481660ea..c09a95108 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Oracle10Ddl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Oracle10Ddl.java @@ -19,7 +19,7 @@ public class Oracle10Ddl extends PlatformDdl { this.columnSetNotnull = "not null"; this.columnSetNull = "null"; this.columnSetDefault = "default"; - this.identitySuffix = " generated always as identity"; + this.identitySuffix = " generated by default as identity"; } @Override diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java index dc99cbed5..0b29db556 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java @@ -21,8 +21,6 @@ import io.ebeaninternal.dbmigration.migration.Column; import io.ebeaninternal.dbmigration.migration.DropHistoryTable; import io.ebeaninternal.dbmigration.migration.IdentityType; import io.ebeaninternal.dbmigration.model.MTable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.Collection; @@ -33,8 +31,6 @@ import java.util.List; */ public class PlatformDdl { - private static final Logger logger = LoggerFactory.getLogger(PlatformDdl.class); - protected final DatabasePlatform platform; protected PlatformHistoryDdl historyDdl = new NoHistorySupportDdl(); @@ -572,7 +568,6 @@ public class PlatformDdl { *

*/ public String alterColumnType(String tableName, String columnName, String type) { - return "alter table " + tableName + " " + alterColumn + " " + columnName + " " + columnSetType + convert(type, false) + alterColumnSuffix; } @@ -583,7 +578,6 @@ public class PlatformDdl { *

*/ public String alterColumnNotnull(String tableName, String columnName, boolean notnull) { - String suffix = notnull ? columnSetNotnull : columnSetNull; return "alter table " + tableName + " " + alterColumn + " " + columnName + " " + suffix + alterColumnSuffix; } @@ -592,7 +586,6 @@ public class PlatformDdl { * Alter table adding the check constraint. */ public String alterTableAddCheckConstraint(String tableName, String checkConstraintName, String checkConstraint) { - return "alter table " + tableName + " " + addConstraint + " " + maxConstraintName(checkConstraintName) + " " + checkConstraint; } @@ -627,12 +620,6 @@ public class PlatformDdl { buffer.append(")"); } - protected void appendWithSpace(String content, StringBuilder buffer) { - if (hasValue(content)) { - buffer.append(" ").append(content); - } - } - /** * Convert the table to lower case. *

diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Postgres9Ddl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Postgres9Ddl.java new file mode 100644 index 000000000..89bd55bdc --- /dev/null +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/Postgres9Ddl.java @@ -0,0 +1,27 @@ +package io.ebeaninternal.dbmigration.ddlgeneration.platform; + +import io.ebean.config.dbplatform.DatabasePlatform; + +public class Postgres9Ddl extends PostgresDdl { + + public Postgres9Ddl(DatabasePlatform platform) { + super(platform); + } + + /** + * Map bigint, integer and smallint into their equivalent serial types. + */ + @Override + public String asIdentityColumn(String columnDefn) { + if ("bigint".equalsIgnoreCase(columnDefn)) { + return "bigserial"; + } + if ("integer".equalsIgnoreCase(columnDefn)) { + return "serial"; + } + if ("smallint".equalsIgnoreCase(columnDefn)) { + return "smallserial"; + } + return columnDefn; + } +} diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java index 8a36b57b7..b77145041 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java @@ -21,6 +21,7 @@ public class PostgresDdl extends PlatformDdl { this.columnSetNull = "drop not null"; this.addForeignKeySkipCheck = " not valid"; this.indexConcurrent = "concurrently "; + this.identitySuffix = " generated by default as identity"; } public String setLockTimeout(int lockTimeoutSeconds) { @@ -37,23 +38,6 @@ public class PostgresDdl extends PlatformDdl { return NativeDbArray.logicalToNative(logicalArrayType); } - /** - * Map bigint, integer and smallint into their equivalent serial types. - */ - @Override - public String asIdentityColumn(String columnDefn) { - if ("bigint".equalsIgnoreCase(columnDefn)) { - return "bigserial"; - } - if ("integer".equalsIgnoreCase(columnDefn)) { - return "serial"; - } - if ("smallint".equalsIgnoreCase(columnDefn)) { - return "smallserial"; - } - return columnDefn; - } - @Override public void addTablePartition(DdlBuffer apply, String partitionMode, String partitionColumn) throws IOException { apply.append(" partition by range (").append(partitionColumn).append(")"); diff --git a/src/main/java/io/ebeaninternal/dbmigration/model/CurrentModel.java b/src/main/java/io/ebeaninternal/dbmigration/model/CurrentModel.java index 726220cac..9ac2478ba 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/model/CurrentModel.java +++ b/src/main/java/io/ebeaninternal/dbmigration/model/CurrentModel.java @@ -17,6 +17,8 @@ import io.ebeaninternal.extraddl.model.ExtraDdlXmlReader; import java.io.IOException; import java.util.List; +import static io.ebeaninternal.api.PlatformMatch.matchPlatform; + /** * Reads EbeanServer bean descriptors to build the current model. */ @@ -146,7 +148,7 @@ public class CurrentModel { if (extraDdl != null) { List ddlScript = extraDdl.getDdlScript(); for (DdlScript script : ddlScript) { - if (script.isInit() && ExtraDdlXmlReader.matchPlatform(server.getDatabasePlatform().getName(), script.getPlatforms())) { + if (script.isInit() && matchPlatform(server.getDatabasePlatform().getPlatform(), script.getPlatforms())) { ddl.append(prefix).append(script.getName()).append('\n'); ddl.append(script.getValue()); } diff --git a/src/main/java/io/ebeaninternal/extraddl/model/ExtraDdlXmlReader.java b/src/main/java/io/ebeaninternal/extraddl/model/ExtraDdlXmlReader.java index 34b7381a5..eac6284d5 100644 --- a/src/main/java/io/ebeaninternal/extraddl/model/ExtraDdlXmlReader.java +++ b/src/main/java/io/ebeaninternal/extraddl/model/ExtraDdlXmlReader.java @@ -1,7 +1,6 @@ package io.ebeaninternal.extraddl.model; import io.ebean.annotation.Platform; -import io.ebean.util.StringHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,6 +10,8 @@ import javax.xml.bind.Unmarshaller; import java.io.IOException; import java.io.InputStream; +import static io.ebeaninternal.api.PlatformMatch.matchPlatform; + /** * Read ExtraDdl from an XML document. */ @@ -18,25 +19,21 @@ public class ExtraDdlXmlReader { private static final Logger logger = LoggerFactory.getLogger(ExtraDdlXmlReader.class); - private static final String SQLSERVER = Platform.SQLSERVER.name().toLowerCase(); - /** * Return the combined extra DDL that should be run given the platform name. */ - public static String buildExtra(String platformName, boolean drops) { - - ExtraDdl read = ExtraDdlXmlReader.read("/extra-ddl.xml"); - return buildExtra(platformName, drops, read); + public static String buildExtra(Platform platform, boolean drops) { + return buildExtra(platform, drops, read("/extra-ddl.xml")); } /** * Return any extra DDL for supporting partitioning given the database platform. */ - public static String buildPartitioning(String platformName) { - return buildExtra(platformName, false, readBuiltinTablePartitioning()); + public static String buildPartitioning(Platform platform) { + return buildExtra(platform, false, readBuiltinTablePartitioning()); } - private static String buildExtra(String platformName, boolean drops, ExtraDdl read) { + private static String buildExtra(Platform platform, boolean drops, ExtraDdl read) { if (read == null) { return null; @@ -44,7 +41,7 @@ public class ExtraDdlXmlReader { StringBuilder sb = new StringBuilder(300); for (DdlScript script : read.getDdlScript()) { - if (script.isDrop() == drops && matchPlatform(platformName, script.getPlatforms())) { + if (script.isDrop() == drops && matchPlatform(platform, script.getPlatforms())) { logger.debug("include script {}", script.getName()); String value = script.getValue(); sb.append(value); @@ -58,44 +55,6 @@ public class ExtraDdlXmlReader { return sb.toString(); } - /** - * Return true if the script platforms is a match/supported for the given platform. - * - * @param platformName The database platform we are generating/running DDL for - * @param platforms The platforms (comma delimited) this script should run for - */ - public static boolean matchPlatform(String platformName, String platforms) { - if (platforms == null || platforms.trim().isEmpty()) { - return true; - } - - String genericMatch = genericPlatformMatch(platformName); - - for (String name : StringHelper.splitNames(platforms)) { - if (name.toLowerCase().contains(platformName)) { - return true; - } else if (genericMatch != null && genericMatch.equals(name.toLowerCase())) { - // allow sqlserver ... to match sqlserver17 and sqlserver16 platforms - return true; - } - } - return false; - } - - /** - * Return a "generic" platform name that can be used. e.g. sqlserver17 -> sqlserver. - */ - private static String genericPlatformMatch(String platformName) { - switch (platformName) { - case "sqlserver17": - return SQLSERVER; - case "sqlserver16": - return SQLSERVER; - default: - return null; - } - } - /** * Read the builtin extra ddl. (Stored procedures, tvp types etc) */ diff --git a/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java b/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java index 88c172875..9c0e4b439 100644 --- a/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java +++ b/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java @@ -13,6 +13,7 @@ import io.ebean.config.dbplatform.mysql.MySqlPlatform; import io.ebean.config.dbplatform.nuodb.NuoDbPlatform; import io.ebean.config.dbplatform.oracle.OraclePlatform; import io.ebean.config.dbplatform.postgres.Postgres8Platform; +import io.ebean.config.dbplatform.postgres.Postgres9Platform; import io.ebean.config.dbplatform.postgres.PostgresPlatform; import io.ebean.config.dbplatform.sqlanywhere.SqlAnywherePlatform; import io.ebean.config.dbplatform.sqlite.SQLitePlatform; @@ -166,7 +167,7 @@ public class DatabasePlatformFactory { } else if (dbProductName.contains("hsql database engine")) { return new HsqldbPlatform(); } else if (dbProductName.contains("postgres")) { - return readPostgres(connection); + return readPostgres(connection, majorVersion); } else if (dbProductName.contains("nuo")) { return new NuoDbPlatform(); } else if (dbProductName.contains("sqlite")) { @@ -195,28 +196,23 @@ public class DatabasePlatformFactory { /** * Use a select version() query as it could be Postgres or CockroachDB. */ - private static DatabasePlatform readPostgres(Connection connection) { - // Postgres driver uses a hardcoded product name so use version() query - PreparedStatement statement = null; - ResultSet resultSet = null; - try { - statement = connection.prepareStatement("SELECT version() AS \"version\""); - resultSet = statement.executeQuery(); - if (resultSet.next()) { - String productVersion = resultSet.getString("version").toLowerCase(); - if (productVersion.contains("cockroach")) { - return new CockroachPlatform(); + private static DatabasePlatform readPostgres(Connection connection, int majorVersion) { + try (PreparedStatement statement = connection.prepareStatement("select version() as \"version\"")) { + try (ResultSet resultSet = statement.executeQuery()) { + if (resultSet.next()) { + String productVersion = resultSet.getString("version").toLowerCase(); + if (productVersion.contains("cockroach")) { + return new CockroachPlatform(); + } } } } catch (SQLException e) { logger.warn("Error running detection query on Postgres", e); - - } finally { - JdbcClose.close(resultSet); - JdbcClose.close(statement); } - // Real Postgres + if (majorVersion <= 9) { + return new Postgres9Platform(); + } return new PostgresPlatform(); } } diff --git a/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java b/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java index d422fe6df..811a36acf 100644 --- a/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java +++ b/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java @@ -343,7 +343,7 @@ public class InternalConfiguration { private MultiValueBind createMultiValueBind(Platform platform) { // only Postgres at this stage - if (platform == Platform.POSTGRES) { + if (platform.base() == Platform.POSTGRES) { return new PostgresMultiValueBind(); } return new MultiValueBind(); diff --git a/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java b/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java index f6aadfa83..543d9bf02 100644 --- a/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java +++ b/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java @@ -11,6 +11,7 @@ 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.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; @@ -41,14 +42,13 @@ public class PlatformDdlBuilder { return new Oracle10Ddl(platform); case SQLITE: return new SQLiteDdl(platform); - case GENERIC: - return new PlatformDdl(platform); + case POSTGRES9: + return new Postgres9Ddl(platform); case POSTGRES: + case POSTGRES10: return new PostgresDdl(platform); case COCKROACH: return new CockroachDdl(platform); - case SQLANYWHERE: - return new PlatformDdl(platform); case SQLSERVER16: case SQLSERVER17: case SQLSERVER: diff --git a/src/main/java/io/ebeaninternal/server/expression/platform/DbExpressionHandlerFactory.java b/src/main/java/io/ebeaninternal/server/expression/platform/DbExpressionHandlerFactory.java index 14bcb1e95..0d7872416 100644 --- a/src/main/java/io/ebeaninternal/server/expression/platform/DbExpressionHandlerFactory.java +++ b/src/main/java/io/ebeaninternal/server/expression/platform/DbExpressionHandlerFactory.java @@ -16,6 +16,8 @@ public class DbExpressionHandlerFactory { case H2: return new H2DbExpression(); case POSTGRES: + case POSTGRES9: + case POSTGRES10: return new PostgresDbExpression(); case MYSQL55: case MYSQL: diff --git a/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java b/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java index 7a4f91cd3..bada29fe1 100644 --- a/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java +++ b/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java @@ -264,7 +264,7 @@ public final class DefaultTypeManager implements TypeManager { } private boolean isPostgres(DatabasePlatform databasePlatform) { - return databasePlatform.getPlatform() == Platform.POSTGRES; + return databasePlatform.getPlatform().base() == Platform.POSTGRES; } /** diff --git a/src/test/ddl-review/pg-create-all.sql b/src/test/ddl-review/pg-create-all.sql index 996afc929..723b44fee 100644 --- a/src/test/ddl-review/pg-create-all.sql +++ b/src/test/ddl-review/pg-create-all.sql @@ -1,13 +1,13 @@ --- Generated by ebean unknown at 2020-01-29T03:58:42.859353Z +-- Generated by ebean unknown at 2020-01-29T09:37:27.117523Z create table asimple_bean ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_asimple_bean primary key (id) ); create table bar ( bar_type varchar(31) not null, - bar_id serial not null, + bar_id integer generated by default as identity not null, foo_id integer not null, version integer not null, constraint pk_bar primary key (bar_id) @@ -15,7 +15,7 @@ create table bar ( create table block ( case_type integer not null, - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, notes varchar(255), @@ -23,7 +23,7 @@ create table block ( ); create table oto_account ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -32,20 +32,20 @@ create table oto_account ( ); create table acl ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_acl primary key (id) ); create table acl_container_relation ( - id bigserial not null, + id bigint generated by default as identity not null, container_id bigint not null, acl_entry_id bigint not null, constraint pk_acl_container_relation primary key (id) ); create table addr ( - id bigserial not null, + id bigint generated by default as identity not null, employee_id bigint, name varchar(255), address_line1 varchar(255), @@ -56,14 +56,14 @@ create table addr ( ); create table address ( - oid bigserial not null, + oid bigint generated by default as identity not null, street varchar(255), version integer not null, constraint pk_address primary key (oid) ); create table o_address ( - id serial not null, + id integer generated by default as identity not null, line_1 varchar(100), line_2 varchar(100), city varchar(100), @@ -74,7 +74,7 @@ create table o_address ( ); create table album ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), cover_id bigint, deleted boolean default false not null, @@ -86,7 +86,7 @@ create table album ( create table animal ( species varchar(255) not null, - id bigserial not null, + id bigint generated by default as identity not null, shelter_id bigint, version bigint not null, name varchar(255), @@ -97,14 +97,14 @@ create table animal ( ); create table animal_shelter ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_animal_shelter primary key (id) ); create table article ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), author varchar(255), cretime timestamptz not null, @@ -115,7 +115,7 @@ create table article ( create table attribute ( option_type integer not null, - id serial not null, + id integer generated by default as identity not null, attribute_holder_id integer, cretime timestamptz not null, updtime timestamptz not null, @@ -124,7 +124,7 @@ create table attribute ( ); create table attribute_holder ( - id serial not null, + id integer generated by default as identity not null, cretime timestamptz not null, updtime timestamptz not null, version bigint not null, @@ -132,27 +132,27 @@ create table attribute_holder ( ); create table audit_log ( - id bigserial not null, + id bigint generated by default as identity not null, description varchar(255), modified_description varchar(255), constraint pk_audit_log primary key (id) ); create table bbookmark ( - id serial not null, + id integer generated by default as identity not null, bookmark_reference varchar(255), user_id integer, constraint pk_bbookmark primary key (id) ); create table bbookmark_org ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_bbookmark_org primary key (id) ); create table bbookmark_user ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), password varchar(255), email_address varchar(255), @@ -162,7 +162,7 @@ create table bbookmark_user ( ); create table bsimple_with_gen ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_bsimple_with_gen primary key (id) ); @@ -220,7 +220,7 @@ create table buser ( ); create table bwith_qident ( - id serial not null, + id integer generated by default as identity not null, "Name" varchar(191), "CODE" varchar(255), last_updated timestamptz not null, @@ -229,7 +229,7 @@ create table bwith_qident ( ); create table basic_draftable_bean ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -238,7 +238,7 @@ create table basic_draftable_bean ( ); create table basic_draftable_bean_draft ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -247,7 +247,7 @@ create table basic_draftable_bean_draft ( ); create table basic_joda_entity ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), period varchar(50), local_date date, @@ -258,7 +258,7 @@ create table basic_joda_entity ( ); create table bean_with_time_zone ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), timezone varchar(20), constraint pk_bean_with_time_zone primary key (id) @@ -278,7 +278,7 @@ create table drel_booking ( create sequence drel_booking_seq; create table bw_bean ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), flags integer not null, version bigint not null, @@ -286,14 +286,14 @@ create table bw_bean ( ); create table cepcategory ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_cepcategory primary key (id) ); create table cepproduct ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_cepproduct primary key (id) @@ -308,7 +308,7 @@ create table cepproduct_category ( ); create table cinh_ref ( - id serial not null, + id integer generated by default as identity not null, ref_id integer, cretime timestamptz not null, updtime timestamptz not null, @@ -318,7 +318,7 @@ create table cinh_ref ( create table cinh_root ( dtype varchar(3) not null, - id serial not null, + id integer generated by default as identity not null, license_number varchar(255), cretime timestamptz not null, updtime timestamptz not null, @@ -330,13 +330,13 @@ create table cinh_root ( ); create table ckey_assoc ( - id serial not null, + id integer generated by default as identity not null, assoc_one varchar(255), constraint pk_ckey_assoc primary key (id) ); create table ckey_detail ( - id serial not null, + id integer generated by default as identity not null, something varchar(255), one_key integer, two_key varchar(127), @@ -353,13 +353,13 @@ create table ckey_parent ( ); create table coone ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_coone primary key (id) ); create table coone_many ( - id bigserial not null, + id bigint generated by default as identity not null, coone_id bigint not null, name varchar(255), deleted boolean default false not null, @@ -367,7 +367,7 @@ create table coone_many ( ); create table coroot ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), one_id bigint, constraint uq_coroot_one_id unique (one_id), @@ -375,7 +375,7 @@ create table coroot ( ); create table calculation_result ( - id serial not null, + id integer generated by default as identity not null, charge float not null, product_configuration_id integer, group_configuration_id integer, @@ -420,7 +420,7 @@ create table sa_car ( create sequence sa_car_seq; create table car_accessory ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), fuse_id bigint not null, car_id integer, @@ -431,13 +431,13 @@ create table car_accessory ( ); create table car_fuse ( - id bigserial not null, + id bigint generated by default as identity not null, location_code varchar(255), constraint pk_car_fuse primary key (id) ); create table category ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), surveyobjectid bigint, sequence_number integer not null, @@ -445,7 +445,7 @@ create table category ( ); create table e_save_test_d ( - id bigserial not null, + id bigint generated by default as identity not null, parent_id bigint, test_property boolean default false not null, version bigint not null, @@ -454,7 +454,7 @@ create table e_save_test_d ( ); create table child_person ( - identifier serial not null, + identifier integer generated by default as identity not null, name varchar(255), age integer, some_bean_id integer, @@ -481,7 +481,7 @@ create table cke_user ( create table class_super ( dtype varchar(31) not null, - sid bigserial not null, + sid bigint generated by default as identity not null, constraint pk_class_super primary key (sid) ); @@ -494,7 +494,7 @@ create table class_super_monkey ( create table configuration ( type varchar(21) not null, - id serial not null, + id integer generated by default as identity not null, name varchar(255), configurations_id integer, group_name varchar(255), @@ -503,13 +503,13 @@ create table configuration ( ); create table configurations ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_configurations primary key (id) ); create table contact ( - id serial not null, + id integer generated by default as identity not null, first_name varchar(127), last_name varchar(127), phone varchar(255), @@ -524,7 +524,7 @@ create table contact ( ); create table contact_group ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), cretime timestamptz not null, updtime timestamptz not null, @@ -533,7 +533,7 @@ create table contact_group ( ); create table contact_note ( - id serial not null, + id integer generated by default as identity not null, contact_id integer, title varchar(255), note text, @@ -544,20 +544,20 @@ create table contact_note ( ); create table contract ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_contract primary key (id) ); create table contract_costs ( - id bigserial not null, + id bigint generated by default as identity not null, status varchar(255), position_id bigint not null, constraint pk_contract_costs primary key (id) ); create table c_conversation ( - id bigserial not null, + id bigint generated by default as identity not null, title varchar(255), isopen boolean default false not null, group_id bigint, @@ -574,14 +574,14 @@ create table o_country ( ); create table cover ( - id bigserial not null, + id bigint generated by default as identity not null, s3_url varchar(255), deleted boolean default false not null, constraint pk_cover primary key (id) ); create table o_customer ( - id serial not null, + id integer generated by default as identity not null, status varchar(1), name varchar(40) not null, smallnote varchar(100), @@ -600,7 +600,7 @@ comment on column o_customer.smallnote is 'Short notes regarding the customer'; comment on column o_customer.anniversary is 'Join date of the customer'; create table dcredit ( - id bigserial not null, + id bigint generated by default as identity not null, credit varchar(255), constraint pk_dcredit primary key (id) ); @@ -612,7 +612,7 @@ create table dcredit_drol ( ); create table dexh_entity ( - oid bigserial not null, + oid bigint generated by default as identity not null, exhange varchar(255), an_enum_type varchar(255), last_updated timestamptz not null, @@ -621,14 +621,14 @@ create table dexh_entity ( create table dint_parent ( type integer not null, - id bigserial not null, + id bigint generated by default as identity not null, val integer, more varchar(255), constraint pk_dint_parent primary key (id) ); create table dmachine ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), organisation_id bigint, version bigint not null, @@ -636,7 +636,7 @@ create table dmachine ( ); create table d_machine_aux_use ( - id bigserial not null, + id bigint generated by default as identity not null, machine_id bigint not null, name varchar(255), date date, @@ -647,7 +647,7 @@ create table d_machine_aux_use ( ); create table d_machine_stats ( - id bigserial not null, + id bigint generated by default as identity not null, machine_id bigint not null, date date, total_kms bigint not null, @@ -659,7 +659,7 @@ create table d_machine_stats ( ); create table d_machine_use ( - id bigserial not null, + id bigint generated by default as identity not null, machine_id bigint not null, date date, distance_kms bigint not null, @@ -670,14 +670,14 @@ create table d_machine_use ( ); create table dorg ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_dorg primary key (id) ); create table dperson ( - id bigserial not null, + id bigint generated by default as identity not null, first_name varchar(255), last_name varchar(255), salary decimal(38), @@ -685,13 +685,13 @@ create table dperson ( ); create table drol ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_drol primary key (id) ); create table drot ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_drot primary key (id) ); @@ -703,7 +703,7 @@ create table drot_drol ( ); create table rawinherit_data ( - id bigserial not null, + id bigint generated by default as identity not null, val integer, constraint pk_rawinherit_data primary key (id) ); @@ -715,7 +715,7 @@ create table data_container ( ); create table dc_detail ( - id bigserial not null, + id bigint generated by default as identity not null, master_id bigint, description varchar(255), version bigint not null, @@ -723,41 +723,41 @@ create table dc_detail ( ); create table dc_master ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_dc_master primary key (id) ); create table dfk_cascade ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), one_id bigint, constraint pk_dfk_cascade primary key (id) ); create table dfk_cascade_one ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_dfk_cascade_one primary key (id) ); create table dfk_none ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), one_id bigint, constraint pk_dfk_none primary key (id) ); create table dfk_none_via_join ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), one_id bigint, constraint pk_dfk_none_via_join primary key (id) ); create table dfk_none_via_mto_m ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_dfk_none_via_mto_m primary key (id) ); @@ -769,20 +769,20 @@ create table dfk_none_via_mto_m_dfk_one ( ); create table dfk_one ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_dfk_one primary key (id) ); create table dfk_set_null ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), one_id bigint, constraint pk_dfk_set_null primary key (id) ); create table doc ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -803,7 +803,7 @@ create table doc_link_draft ( ); create table doc_draft ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -812,7 +812,7 @@ create table doc_draft ( ); create table document ( - id bigserial not null, + id bigint generated by default as identity not null, title varchar(127), body varchar(255), organisation_id bigint, @@ -824,7 +824,7 @@ create table document ( ); create table document_draft ( - id bigserial not null, + id bigint generated by default as identity not null, title varchar(127), body varchar(255), when_publish timestamptz, @@ -837,7 +837,7 @@ create table document_draft ( ); create table document_media ( - id bigserial not null, + id bigint generated by default as identity not null, document_id bigint, name varchar(255), description varchar(255), @@ -848,7 +848,7 @@ create table document_media ( ); create table document_media_draft ( - id bigserial not null, + id bigint generated by default as identity not null, document_id bigint, name varchar(255), description varchar(255), @@ -867,7 +867,7 @@ create table sp_car_door ( create sequence sp_car_door_seq; create table earray_bean ( - id bigserial not null, + id bigint generated by default as identity not null, foo integer, name varchar(255), phone_numbers varchar[], @@ -884,7 +884,7 @@ create table earray_bean ( ); create table earray_set_bean ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), phone_numbers varchar[], uids uuid[], @@ -895,7 +895,7 @@ create table earray_set_bean ( ); create table e_basic ( - id serial not null, + id integer generated by default as identity not null, status varchar(1), name varchar(127), description varchar(255), @@ -905,7 +905,7 @@ create table e_basic ( ); create table ebasic_change_log ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(20), short_description varchar(50), long_description varchar(100), @@ -918,7 +918,7 @@ create table ebasic_change_log ( ); create table ebasic_clob ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), title varchar(255), description text, @@ -927,7 +927,7 @@ create table ebasic_clob ( ); create table ebasic_clob_fetch_eager ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), title varchar(255), description text, @@ -936,14 +936,14 @@ create table ebasic_clob_fetch_eager ( ); create table ebasic_clob_no_ver ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), description text, constraint pk_ebasic_clob_no_ver primary key (id) ); create table e_basicenc ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), description bytea, dob bytea, @@ -953,7 +953,7 @@ create table e_basicenc ( ); create table e_basicenc_bin ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), description varchar(255), data bytea, @@ -963,7 +963,7 @@ create table e_basicenc_bin ( ); create table e_basicenc_client ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), description bytea, dob bytea, @@ -973,7 +973,7 @@ create table e_basicenc_client ( ); create table e_basicenc_relate ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), other_id integer, constraint pk_e_basicenc_relate primary key (id) @@ -988,7 +988,7 @@ create table e_basic_enum_id ( ); create table e_basic_eni ( - id serial not null, + id integer generated by default as identity not null, status integer, name varchar(255), description varchar(255), @@ -998,7 +998,7 @@ create table e_basic_eni ( ); create table ebasic_hstore ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), map hstore, version bigint not null, @@ -1006,7 +1006,7 @@ create table ebasic_hstore ( ); create table ebasic_json_jackson ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), value_set json, value_list jsonb, @@ -1017,7 +1017,7 @@ create table ebasic_json_jackson ( ); create table ebasic_json_jackson2 ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), value_set json, value_list jsonb, @@ -1028,7 +1028,7 @@ create table ebasic_json_jackson2 ( ); create table ebasic_json_list ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), bean_set json, bean_list jsonb, @@ -1041,7 +1041,7 @@ create table ebasic_json_list ( ); create table ebasic_json_map ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content json, version bigint not null, @@ -1049,7 +1049,7 @@ create table ebasic_json_map ( ); create table ebasic_json_map_blob ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content bytea, version bigint not null, @@ -1057,7 +1057,7 @@ create table ebasic_json_map_blob ( ); create table ebasic_json_map_clob ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content text, version bigint not null, @@ -1065,7 +1065,7 @@ create table ebasic_json_map_clob ( ); create table ebasic_json_map_detail ( - id bigserial not null, + id bigint generated by default as identity not null, owner_id bigint, name varchar(255), content json, @@ -1074,7 +1074,7 @@ create table ebasic_json_map_detail ( ); create table ebasic_json_map_json_b ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content jsonb, version bigint not null, @@ -1082,7 +1082,7 @@ create table ebasic_json_map_json_b ( ); create table ebasic_json_map_varchar ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content varchar(3000), version bigint not null, @@ -1090,7 +1090,7 @@ create table ebasic_json_map_varchar ( ); create table ebasic_json_node ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content json, version bigint not null, @@ -1098,7 +1098,7 @@ create table ebasic_json_node ( ); create table ebasic_json_node_blob ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content bytea, version bigint not null, @@ -1106,7 +1106,7 @@ create table ebasic_json_node_blob ( ); create table ebasic_json_node_json_b ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content jsonb, version bigint not null, @@ -1114,7 +1114,7 @@ create table ebasic_json_node_json_b ( ); create table ebasic_json_node_varchar ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content varchar(1000), version bigint not null, @@ -1122,20 +1122,20 @@ create table ebasic_json_node_varchar ( ); create table ebasic_json_unmapped ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_ebasic_json_unmapped primary key (id) ); create table e_basic_ndc ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_e_basic_ndc primary key (id) ); create table ebasic_no_sdchild ( - id bigserial not null, + id bigint generated by default as identity not null, owner_id bigint not null, child_name varchar(255), amount bigint not null, @@ -1144,7 +1144,7 @@ create table ebasic_no_sdchild ( ); create table ebasic_sdchild ( - id bigserial not null, + id bigint generated by default as identity not null, owner_id bigint not null, child_name varchar(255), amount bigint not null, @@ -1154,7 +1154,7 @@ create table ebasic_sdchild ( ); create table ebasic_soft_delete ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), description varchar(255), version bigint not null, @@ -1163,7 +1163,7 @@ create table ebasic_soft_delete ( ); create table e_basicver ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), description varchar(255), other varchar(255), @@ -1172,7 +1172,7 @@ create table e_basicver ( ); create table e_basic_withlife ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), other varchar(255), deleted boolean default false not null, @@ -1181,14 +1181,14 @@ create table e_basic_withlife ( ); create table e_basic_with_ex ( - id bigserial not null, + id bigint generated by default as identity not null, deleted boolean default false not null, version bigint not null, constraint pk_e_basic_with_ex primary key (id) ); create table e_basicverucon ( - id serial not null, + id integer generated by default as identity not null, name varchar(127), other varchar(127), other_one varchar(127), @@ -1213,7 +1213,7 @@ create table ecache_root ( ); create table e_col_ab ( - id bigserial not null, + id bigint generated by default as identity not null, column_a varchar(255), column_b varchar(255), constraint pk_e_col_ab primary key (id) @@ -1226,7 +1226,7 @@ create table ecustom_id ( ); create table edefault_prop ( - id serial not null, + id integer generated by default as identity not null, e_simple_usertypeid integer, name varchar(255), constraint uq_edefault_prop_e_simple_usertypeid unique (e_simple_usertypeid), @@ -1234,7 +1234,7 @@ create table edefault_prop ( ); create table eemb_inner ( - id serial not null, + id integer generated by default as identity not null, nome_inner varchar(255), outer_id integer, update_count integer not null, @@ -1242,7 +1242,7 @@ create table eemb_inner ( ); create table eemb_outer ( - id serial not null, + id integer generated by default as identity not null, nome_outer varchar(255), date1 timestamptz, date2 timestamptz, @@ -1276,7 +1276,7 @@ create table efile_no_fk_euser_no_fk_soft_del ( ); create table egen_props ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -1297,7 +1297,7 @@ create table egen_props ( ); create table eid_uid_bean ( - id bigserial not null, + id bigint generated by default as identity not null, uuid uuid not null, name varchar(255), constraint uq_eid_uid_bean_uuid unique (uuid), @@ -1305,7 +1305,7 @@ create table eid_uid_bean ( ); create table einvoice ( - id bigserial not null, + id bigint generated by default as identity not null, invoice_date timestamptz, state integer, person_id bigint, @@ -1325,7 +1325,7 @@ create table einvoice ( ); create table e_main ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), description varchar(255), version bigint not null, @@ -1333,20 +1333,20 @@ create table e_main ( ); create table enull_collection ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_enull_collection primary key (id) ); create table enull_collection_detail ( - id serial not null, + id integer generated by default as identity not null, enull_collection_id integer not null, something varchar(255), constraint pk_enull_collection_detail primary key (id) ); create table eopt_one_a ( - id serial not null, + id integer generated by default as identity not null, name_for_a varchar(255), b_id integer, cretime timestamptz not null, @@ -1356,7 +1356,7 @@ create table eopt_one_a ( ); create table eopt_one_b ( - id serial not null, + id integer generated by default as identity not null, name_for_b varchar(255), c_id integer not null, cretime timestamptz not null, @@ -1366,7 +1366,7 @@ create table eopt_one_b ( ); create table eopt_one_c ( - id serial not null, + id integer generated by default as identity not null, name_for_c varchar(255), cretime timestamptz not null, updtime timestamptz not null, @@ -1375,7 +1375,7 @@ create table eopt_one_c ( ); create table eper_addr ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), ma_street varchar(255), ma_suburb varchar(255), @@ -1386,7 +1386,7 @@ create table eper_addr ( ); create table eperson ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), notes varchar(255), street varchar(255), @@ -1399,7 +1399,7 @@ create table eperson ( ); create table e_person_online ( - id bigserial not null, + id bigint generated by default as identity not null, email varchar(127), online_status boolean default false not null, when_updated timestamptz not null, @@ -1408,13 +1408,13 @@ create table e_person_online ( ); create table esimple ( - usertypeid serial not null, + usertypeid integer generated by default as identity not null, name varchar(255), constraint pk_esimple primary key (usertypeid) ); create table esoft_del_book ( - id bigserial not null, + id bigint generated by default as identity not null, book_title varchar(255), lend_by_id bigint, version bigint not null, @@ -1429,7 +1429,7 @@ create table esoft_del_book_esoft_del_user ( ); create table esoft_del_down ( - id bigserial not null, + id bigint generated by default as identity not null, esoft_del_mid_id bigint not null, down varchar(255), version bigint not null, @@ -1438,7 +1438,7 @@ create table esoft_del_down ( ); create table esoft_del_mid ( - id bigserial not null, + id bigint generated by default as identity not null, top_id bigint, mid varchar(255), up_id bigint, @@ -1448,7 +1448,7 @@ create table esoft_del_mid ( ); create table esoft_del_one_a ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), oneb_id bigint, deleted boolean default false not null, @@ -1458,14 +1458,14 @@ create table esoft_del_one_a ( ); create table esoft_del_one_b ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_esoft_del_one_b primary key (id) ); create table esoft_del_role ( - id bigserial not null, + id bigint generated by default as identity not null, role_name varchar(255), version bigint not null, deleted boolean default false not null, @@ -1479,7 +1479,7 @@ create table esoft_del_role_esoft_del_user ( ); create table esoft_del_top ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, deleted boolean default false not null, @@ -1487,7 +1487,7 @@ create table esoft_del_top ( ); create table esoft_del_up ( - id bigserial not null, + id bigint generated by default as identity not null, up varchar(255), version bigint not null, deleted boolean default false not null, @@ -1495,7 +1495,7 @@ create table esoft_del_up ( ); create table esoft_del_user ( - id bigserial not null, + id bigint generated by default as identity not null, user_name varchar(255), version bigint not null, deleted boolean default false not null, @@ -1509,14 +1509,14 @@ create table esoft_del_user_esoft_del_role ( ); create table esome_convert_type ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), money decimal(38), constraint pk_esome_convert_type primary key (id) ); create table esome_type ( - id serial not null, + id integer generated by default as identity not null, currency varchar(3), locale varchar(20), time_zone varchar(20), @@ -1524,13 +1524,13 @@ create table esome_type ( ); create table etrans_many ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_etrans_many primary key (id) ); create table rawinherit_uncle ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), parent_id bigint not null, version bigint not null, @@ -1538,32 +1538,32 @@ create table rawinherit_uncle ( ); create table euser_no_fk ( - user_id serial not null, + user_id integer generated by default as identity not null, user_name varchar(255), constraint pk_euser_no_fk primary key (user_id) ); create table euser_no_fk_soft_del ( - user_id serial not null, + user_id integer generated by default as identity not null, user_name varchar(255), constraint pk_euser_no_fk_soft_del primary key (user_id) ); create table evanilla_collection ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_evanilla_collection primary key (id) ); create table evanilla_collection_detail ( - id serial not null, + id integer generated by default as identity not null, evanilla_collection_id integer not null, something varchar(255), constraint pk_evanilla_collection_detail primary key (id) ); create table ewho_props ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -1574,7 +1574,7 @@ create table ewho_props ( ); create table e_withinet ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), inet_address inet, inet2 inet, @@ -1584,7 +1584,7 @@ create table e_withinet ( ); create table ec_enum_person ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_ec_enum_person primary key (id) @@ -1597,7 +1597,7 @@ create table ec_enum_person_tags ( ); create table ec_person ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_ec_person primary key (id) @@ -1609,7 +1609,7 @@ create table ec_person_phone ( ); create table ec_top ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), person_id bigint, version bigint not null, @@ -1623,7 +1623,7 @@ create table ec_top_ecs_person ( ); create table ecbl_person ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_ecbl_person primary key (id) @@ -1637,7 +1637,7 @@ create table ecbl_person_phone_numbers ( ); create table ecbm_person ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_ecbm_person primary key (id) @@ -1652,7 +1652,7 @@ create table ecbm_person_phone_numbers ( ); create table ecm_person ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_ecm_person primary key (id) @@ -1665,7 +1665,7 @@ create table ecm_person_phone_numbers ( ); create table ecmc_person ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_ecmc_person primary key (id) @@ -1678,7 +1678,7 @@ create table ecmc_person_phone_numbers ( ); create table ecs_person ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_ecs_person primary key (id) @@ -1710,7 +1710,7 @@ create table ecsm_one ( ); create table ecsm_parent ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_ecsm_parent primary key (id) @@ -1724,7 +1724,7 @@ create table ecsm_two ( ); create table td_child ( - child_id serial not null, + child_id integer generated by default as identity not null, child_name varchar(255), parent_id integer not null, constraint pk_td_child primary key (child_id) @@ -1732,21 +1732,21 @@ create table td_child ( create table td_parent ( parent_type varchar(31) not null, - parent_id serial not null, + parent_id integer generated by default as identity not null, parent_name varchar(255), extended_name varchar(255), constraint pk_td_parent primary key (parent_id) ); create table element_bean ( - id bigserial not null, + id bigint generated by default as identity not null, complex_bean_id uuid not null, value varchar(255) not null, constraint pk_element_bean primary key (id) ); create table empl ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), age integer, default_address_id bigint, @@ -1754,7 +1754,7 @@ create table empl ( ); create table esd_detail ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), master_id bigint not null, version bigint not null, @@ -1763,7 +1763,7 @@ create table esd_detail ( ); create table esd_master ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, deleted boolean default false not null, @@ -1771,27 +1771,27 @@ create table esd_master ( ); create table feature_desc ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), description varchar(255), constraint pk_feature_desc primary key (id) ); create table f_first ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_f_first primary key (id) ); create table foo ( - foo_id serial not null, + foo_id integer generated by default as identity not null, important_text varchar(255), version integer not null, constraint pk_foo primary key (foo_id) ); create table gen_key_identity ( - id bigserial not null, + id bigint generated by default as identity not null, description varchar(255), constraint pk_gen_key_identity primary key (id) ); @@ -1804,13 +1804,13 @@ create table gen_key_sequence ( create sequence SEQ; create table gen_key_table ( - id bigserial not null, + id bigint generated by default as identity not null, description varchar(255), constraint pk_gen_key_table primary key (id) ); create table grand_parent_person ( - identifier serial not null, + identifier integer generated by default as identity not null, name varchar(255), age integer, some_bean_id integer, @@ -1820,7 +1820,7 @@ create table grand_parent_person ( ); create table survey_group ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), categoryobjectid bigint, sequence_number integer not null, @@ -1828,7 +1828,7 @@ create table survey_group ( ); create table c_group ( - id bigserial not null, + id bigint generated by default as identity not null, inactive boolean default false not null, name varchar(255), version bigint not null, @@ -1838,7 +1838,7 @@ create table c_group ( ); create table he_doc ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -1847,7 +1847,7 @@ create table he_doc ( ); create table hx_link ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), location varchar(255), comments varchar(255), @@ -1865,7 +1865,7 @@ create table hx_link_doc ( ); create table hi_doc ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -1874,7 +1874,7 @@ create table hi_doc ( ); create table hi_link ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), location varchar(255), comments varchar(255), @@ -1891,7 +1891,7 @@ create table hi_link_doc ( ); create table hi_tone ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), comments varchar(255), version bigint not null, @@ -1901,7 +1901,7 @@ create table hi_tone ( ); create table hi_tthree ( - id bigserial not null, + id bigint generated by default as identity not null, hi_ttwo_id bigint not null, three varchar(255), version bigint not null, @@ -1911,7 +1911,7 @@ create table hi_tthree ( ); create table hi_ttwo ( - id bigserial not null, + id bigint generated by default as identity not null, hi_tone_id bigint not null, two varchar(255), version bigint not null, @@ -1921,7 +1921,7 @@ create table hi_ttwo ( ); create table hsd_setting ( - id bigserial not null, + id bigint generated by default as identity not null, code varchar(255), content varchar(255), user_id bigint, @@ -1934,7 +1934,7 @@ create table hsd_setting ( ); create table hsd_user ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -1945,20 +1945,20 @@ create table hsd_user ( create table iaf_segment ( ptype varchar(31) not null, - id bigserial not null, + id bigint generated by default as identity not null, segment_id_zat bigint not null, status_id bigint not null, constraint pk_iaf_segment primary key (id) ); create table iaf_segment_status ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_iaf_segment_status primary key (id) ); create table imrelated ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), owner_id bigint not null, constraint pk_imrelated primary key (id) @@ -1966,7 +1966,7 @@ create table imrelated ( create table imroot ( dtype varchar(31) not null, - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), title varchar(255), when_title timestamptz, @@ -1981,14 +1981,14 @@ create table ixresource ( ); create table info_company ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_info_company primary key (id) ); create table info_contact ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), company_id bigint not null, version bigint not null, @@ -1996,7 +1996,7 @@ create table info_contact ( ); create table info_customer ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), company_id bigint, version bigint not null, @@ -2005,7 +2005,7 @@ create table info_customer ( ); create table inner_report ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), forecast_id bigint, constraint uq_inner_report_forecast_id unique (forecast_id), @@ -2036,7 +2036,7 @@ create table item ( ); create table monkey ( - mid bigserial not null, + mid bigint generated by default as identity not null, name varchar(255), food_preference varchar(255), version bigint not null, @@ -2044,7 +2044,7 @@ create table monkey ( ); create table mkeygroup ( - pid bigserial not null, + pid bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_mkeygroup primary key (pid) @@ -2058,7 +2058,7 @@ create table mkeygroup_monkey ( ); create table trainer ( - tid bigserial not null, + tid bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_trainer primary key (tid) @@ -2072,7 +2072,7 @@ create table trainer_monkey ( ); create table troop ( - pid bigserial not null, + pid bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_troop primary key (pid) @@ -2086,19 +2086,19 @@ create table troop_monkey ( ); create table l2_cldf_reset_bean ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_l2_cldf_reset_bean primary key (id) ); create table l2_cldf_reset_bean_child ( - id bigserial not null, + id bigint generated by default as identity not null, parent_id bigint, constraint pk_l2_cldf_reset_bean_child primary key (id) ); create table level1 ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_level1 primary key (id) ); @@ -2116,7 +2116,7 @@ create table level1_level2 ( ); create table level2 ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_level2 primary key (id) ); @@ -2128,19 +2128,19 @@ create table level2_level3 ( ); create table level3 ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_level3 primary key (id) ); create table level4 ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_level4 primary key (id) ); create table link ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), location varchar(255), when_publish timestamptz, @@ -2153,7 +2153,7 @@ create table link ( ); create table link_draft ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), location varchar(255), when_publish timestamptz, @@ -2167,7 +2167,7 @@ create table link_draft ( ); create table la_attr_value ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), cretime timestamptz not null, updtime timestamptz not null, @@ -2182,7 +2182,7 @@ create table la_attr_value_attribute ( ); create table looney ( - id bigserial not null, + id bigint generated by default as identity not null, tune_id bigint, name varchar(255), constraint pk_looney primary key (id) @@ -2227,13 +2227,13 @@ create table mcustomer ( ); create table mgroup ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_mgroup primary key (id) ); create table mmachine ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_mmachine primary key (id) @@ -2247,14 +2247,14 @@ create table mmachine_mgroup ( create table mmedia ( type varchar(31) not null, - id bigserial not null, + id bigint generated by default as identity not null, url varchar(255), note varchar(255), constraint pk_mmedia primary key (id) ); create table non_updateprop ( - id serial not null, + id integer generated by default as identity not null, non_enum varchar(5), name varchar(255), note varchar(255), @@ -2263,7 +2263,7 @@ create table non_updateprop ( ); create table mprinter ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), flags bigint not null, current_state_id bigint, @@ -2280,7 +2280,7 @@ create table mprinter ( ); create table mprinter_state ( - id bigserial not null, + id bigint generated by default as identity not null, flags bigint not null, printer_id bigint, version bigint not null, @@ -2288,20 +2288,20 @@ create table mprinter_state ( ); create table mprofile ( - id bigserial not null, + id bigint generated by default as identity not null, picture_id bigint, name varchar(255), constraint pk_mprofile primary key (id) ); create table mprotected_construct_bean ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_mprotected_construct_bean primary key (id) ); create table mrole ( - roleid serial not null, + roleid integer generated by default as identity not null, role_name varchar(255), constraint pk_mrole primary key (roleid) ); @@ -2313,33 +2313,33 @@ create table mrole_muser ( ); create table msome_other ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_msome_other primary key (id) ); create table muser ( - userid serial not null, + userid integer generated by default as identity not null, user_name varchar(255), user_type_id integer, constraint pk_muser primary key (userid) ); create table muser_type ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_muser_type primary key (id) ); create table mail_box ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_mail_box primary key (id) ); create table mail_user ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_mail_user primary key (id) @@ -2373,7 +2373,7 @@ create table main_entity_relation ( ); create table map_super_actual ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), when_created timestamptz not null, when_updated timestamptz not null, @@ -2381,7 +2381,7 @@ create table map_super_actual ( ); create table c_message ( - id bigserial not null, + id bigint generated by default as identity not null, title varchar(255), body varchar(255), conversation_id bigint, @@ -2429,14 +2429,14 @@ create table meter_version ( ); create table mnoc_role ( - role_id serial not null, + role_id integer generated by default as identity not null, role_name varchar(255), version integer not null, constraint pk_mnoc_role primary key (role_id) ); create table mnoc_user ( - user_id serial not null, + user_id integer generated by default as identity not null, user_name varchar(255), version integer not null, constraint pk_mnoc_user primary key (user_id) @@ -2449,7 +2449,7 @@ create table mnoc_user_mnoc_role ( ); create table mny_a ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -2458,7 +2458,7 @@ create table mny_a ( ); create table mny_b ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), a_id bigint, version bigint not null, @@ -2474,7 +2474,7 @@ create table mny_b_mny_c ( ); create table mny_c ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -2483,7 +2483,7 @@ create table mny_c ( ); create table mny_topic ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_mny_topic primary key (id) @@ -2496,7 +2496,7 @@ create table subtopics ( ); create table mp_role ( - id bigserial not null, + id bigint generated by default as identity not null, mp_user_id bigint not null, code varchar(255), organization_id bigint, @@ -2504,13 +2504,13 @@ create table mp_role ( ); create table mp_user ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_mp_user primary key (id) ); create table ms_many_a ( - aid bigserial not null, + aid bigint generated by default as identity not null, name varchar(255), ms_many_a_many_b boolean default false not null, ms_many_b boolean default false not null, @@ -2525,7 +2525,7 @@ create table ms_many_a_many_b ( ); create table ms_many_b ( - bid bigserial not null, + bid bigint generated by default as identity not null, name varchar(255), deleted boolean default false not null, constraint pk_ms_many_b primary key (bid) @@ -2538,7 +2538,7 @@ create table ms_many_b_many_a ( ); create table my_lob_size ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), my_count integer not null, my_lob text, @@ -2546,7 +2546,7 @@ create table my_lob_size ( ); create table my_lob_size_join_many ( - id serial not null, + id integer generated by default as identity not null, something varchar(255), other varchar(255), parent_id integer, @@ -2560,13 +2560,13 @@ create table noidbean ( ); create table o_bean_child ( - id bigserial not null, + id bigint generated by default as identity not null, cached_bean_id bigint, constraint pk_o_bean_child primary key (id) ); create table ocached_app ( - id bigserial not null, + id bigint generated by default as identity not null, app_name varchar(255), version bigint not null, constraint uq_ocached_app_app_name unique (app_name), @@ -2574,7 +2574,7 @@ create table ocached_app ( ); create table ocached_app_detail ( - id bigserial not null, + id bigint generated by default as identity not null, app_id bigint not null, detail varchar(255), version bigint not null, @@ -2583,7 +2583,7 @@ create table ocached_app_detail ( ); create table o_cached_bean ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_o_cached_bean primary key (id) ); @@ -2595,14 +2595,14 @@ create table o_cached_bean_country ( ); create table o_cached_bean_child ( - id bigserial not null, + id bigint generated by default as identity not null, cached_bean_id bigint, constraint pk_o_cached_bean_child primary key (id) ); create table o_cached_inherit ( dtype varchar(31) not null, - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), child_adata varchar(255), child_bdata varchar(255), @@ -2610,7 +2610,7 @@ create table o_cached_inherit ( ); create table o_cached_natkey ( - id bigserial not null, + id bigint generated by default as identity not null, store varchar(255), sku varchar(255), description varchar(255), @@ -2618,7 +2618,7 @@ create table o_cached_natkey ( ); create table o_cached_natkey3 ( - id bigserial not null, + id bigint generated by default as identity not null, store varchar(255), code integer not null, sku varchar(255), @@ -2627,7 +2627,7 @@ create table o_cached_natkey3 ( ); create table ocached_nkey_uid ( - id bigserial not null, + id bigint generated by default as identity not null, uid uuid, other varchar(255), version bigint not null, @@ -2635,7 +2635,7 @@ create table ocached_nkey_uid ( ); create table ocar ( - id serial not null, + id integer generated by default as identity not null, vin varchar(255), name varchar(255), cretime timestamptz not null, @@ -2645,7 +2645,7 @@ create table ocar ( ); create table ocompany ( - id serial not null, + id integer generated by default as identity not null, corp_id varchar(50), cretime timestamptz not null, updtime timestamptz not null, @@ -2686,7 +2686,7 @@ create table omvertex_other ( ); create table oroad_show_msg ( - id serial not null, + id integer generated by default as identity not null, company_id integer not null, cretime timestamptz not null, updtime timestamptz not null, @@ -2696,20 +2696,20 @@ create table oroad_show_msg ( ); create table om_account_child_dbo ( - id bigserial not null, + id bigint generated by default as identity not null, description varchar(255), banana_rama_id bigint, constraint pk_om_account_child_dbo primary key (id) ); create table om_account_dbo ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_om_account_dbo primary key (id) ); create table om_basic_child ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), parent_id bigint, version bigint not null, @@ -2717,14 +2717,14 @@ create table om_basic_child ( ); create table om_basic_parent ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_om_basic_parent primary key (id) ); create table om_ordered_detail ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), master_id bigint, version bigint not null, @@ -2733,19 +2733,19 @@ create table om_ordered_detail ( ); create table om_ordered_master ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_om_ordered_master primary key (id) ); create table only_id_entity ( - id bigserial not null, + id bigint generated by default as identity not null, constraint pk_only_id_entity primary key (id) ); create table o_order ( - id serial not null, + id integer generated by default as identity not null, status integer, order_date date, ship_date date, @@ -2757,7 +2757,7 @@ create table o_order ( ); create table o_order_detail ( - id serial not null, + id integer generated by default as identity not null, order_id integer not null, order_qty integer, ship_qty integer, @@ -2783,7 +2783,7 @@ create table s_order_items ( ); create table or_order_ship ( - id serial not null, + id integer generated by default as identity not null, order_id integer, ship_time timestamptz, cretime timestamptz not null, @@ -2793,7 +2793,7 @@ create table or_order_ship ( ); create table organisation ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -2803,7 +2803,7 @@ create table organisation ( create table organization_node ( kind varchar(31) not null, - id bigserial not null, + id bigint generated by default as identity not null, parent_tree_node_id bigint not null, title varchar(255), constraint uq_organization_node_parent_tree_node_id unique (parent_tree_node_id), @@ -2811,7 +2811,7 @@ create table organization_node ( ); create table organization_tree_node ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_organization_tree_node primary key (id) ); @@ -2868,13 +2868,13 @@ create table oto_bchild ( ); create table oto_bmaster ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_oto_bmaster primary key (id) ); create table oto_child ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), master_id bigint, constraint uq_oto_child_master_id unique (master_id), @@ -2882,14 +2882,14 @@ create table oto_child ( ); create table oto_cust ( - cid bigserial not null, + cid bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_oto_cust primary key (cid) ); create table oto_cust_address ( - aid bigserial not null, + aid bigint generated by default as identity not null, line1 varchar(255), line2 varchar(255), line3 varchar(255), @@ -2900,7 +2900,7 @@ create table oto_cust_address ( ); create table oto_level_a ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), b_id bigint, constraint uq_oto_level_a_b_id unique (b_id), @@ -2908,7 +2908,7 @@ create table oto_level_a ( ); create table oto_level_b ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), c_id bigint, constraint uq_oto_level_b_c_id unique (c_id), @@ -2916,19 +2916,19 @@ create table oto_level_b ( ); create table oto_level_c ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_oto_level_c primary key (id) ); create table oto_master ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_oto_master primary key (id) ); create table oto_prime ( - pid bigserial not null, + pid bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_oto_prime primary key (pid) @@ -2942,7 +2942,7 @@ create table oto_prime_extra ( ); create table oto_sd_child ( - id bigserial not null, + id bigint generated by default as identity not null, child varchar(255), master_id bigint, deleted boolean default false not null, @@ -2952,14 +2952,14 @@ create table oto_sd_child ( ); create table oto_sd_master ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_oto_sd_master primary key (id) ); create table oto_th_many ( - id bigserial not null, + id bigint generated by default as identity not null, oto_th_top_id bigint not null, many varchar(255), version bigint not null, @@ -2969,7 +2969,7 @@ create table oto_th_many ( ); create table oto_th_one ( - id bigserial not null, + id bigint generated by default as identity not null, one boolean default false not null, many_id bigint, version bigint not null, @@ -2980,7 +2980,7 @@ create table oto_th_one ( ); create table oto_th_top ( - id bigserial not null, + id bigint generated by default as identity not null, topp varchar(255), version bigint not null, when_created timestamptz not null, @@ -3017,7 +3017,7 @@ create table oto_uprime_extra ( ); create table oto_user_model ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), user_optional_id bigint, version bigint not null, @@ -3028,7 +3028,7 @@ create table oto_user_model ( ); create table oto_user_model_optional ( - id bigserial not null, + id bigint generated by default as identity not null, optional varchar(255), version bigint not null, when_created timestamptz not null, @@ -3037,7 +3037,7 @@ create table oto_user_model_optional ( ); create table pfile ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), file_content_id integer, file_content2_id integer, @@ -3050,7 +3050,7 @@ create table pfile ( ); create table pfile_content ( - id serial not null, + id integer generated by default as identity not null, content bytea, cretime timestamptz not null, updtime timestamptz not null, @@ -3066,20 +3066,20 @@ create table paggview ( create table pallet_location ( type varchar(31) not null, - id serial not null, + id integer generated by default as identity not null, zone_sid integer not null, attribute varchar(255), constraint pk_pallet_location primary key (id) ); create table parcel ( - parcelid bigserial not null, + parcelid bigint generated by default as identity not null, description varchar(255), constraint pk_parcel primary key (parcelid) ); create table parcel_location ( - parcellocid bigserial not null, + parcellocid bigint generated by default as identity not null, location varchar(255), parcelid bigint, constraint uq_parcel_location_parcelid unique (parcelid), @@ -3088,7 +3088,7 @@ create table parcel_location ( create table rawinherit_parent ( type varchar(31) not null, - id bigserial not null, + id bigint generated by default as identity not null, val integer, more varchar(255), constraint pk_rawinherit_parent primary key (id) @@ -3101,13 +3101,13 @@ create table rawinherit_parent_rawinherit_data ( ); create table e_save_test_c ( - id bigserial not null, + id bigint generated by default as identity not null, version bigint not null, constraint pk_e_save_test_c primary key (id) ); create table parent_person ( - identifier serial not null, + identifier integer generated by default as identity not null, name varchar(255), age integer, some_bean_id integer, @@ -3118,7 +3118,7 @@ create table parent_person ( ); create table c_participation ( - id bigserial not null, + id bigint generated by default as identity not null, rating integer, type integer, conversation_id bigint not null, @@ -3131,7 +3131,7 @@ create table c_participation ( ); create table password_store_model ( - id bigserial not null, + id bigint generated by default as identity not null, enc1 varchar(30), enc2 varchar(40), enc3 text, @@ -3145,14 +3145,14 @@ create table password_store_model ( ); create table pcf_calendar ( - id bigserial not null, + id bigint generated by default as identity not null, pcf_person_id bigint not null, version bigint not null, constraint pk_pcf_calendar primary key (id) ); create table pcf_city ( - id bigserial not null, + id bigint generated by default as identity not null, pcf_country_id bigint not null, name varchar(255), mayor_id bigint not null, @@ -3164,13 +3164,13 @@ create table pcf_city ( ); create table pcf_country ( - id bigserial not null, + id bigint generated by default as identity not null, version bigint not null, constraint pk_pcf_country primary key (id) ); create table pcf_event ( - id bigserial not null, + id bigint generated by default as identity not null, pcf_calendar_id bigint not null, name varchar(255), version bigint not null, @@ -3178,7 +3178,7 @@ create table pcf_event ( ); create table pcf_person ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_pcf_person primary key (id) @@ -3191,7 +3191,7 @@ create table mt_permission ( ); create table persistent_file ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), cretime timestamptz not null, updtime timestamptz not null, @@ -3200,7 +3200,7 @@ create table persistent_file ( ); create table persistent_file_content ( - id serial not null, + id integer generated by default as identity not null, persistent_file_id integer, content bytea, cretime timestamptz not null, @@ -3211,14 +3211,14 @@ create table persistent_file_content ( ); create table person ( - oid bigserial not null, + oid bigint generated by default as identity not null, default_address_oid bigint, version integer not null, constraint pk_person primary key (oid) ); create table persons ( - id bigserial not null, + id bigint generated by default as identity not null, surname varchar(64) not null, name varchar(64) not null, constraint pk_persons primary key (id) @@ -3238,7 +3238,7 @@ create table person_cache_info ( ); create table phones ( - id bigserial not null, + id bigint generated by default as identity not null, phone_number varchar(7) not null, person_id bigint not null, constraint uq_phones_phone_number unique (phone_number), @@ -3246,7 +3246,7 @@ create table phones ( ); create table e_position ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), contract_id bigint not null, constraint pk_e_position primary key (id) @@ -3261,7 +3261,7 @@ create table primary_revision ( ); create table o_product ( - id serial not null, + id integer generated by default as identity not null, sku varchar(20), name varchar(255), cretime timestamptz not null, @@ -3283,7 +3283,7 @@ create table pp_to_ww ( ); create table question ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), groupobjectid bigint, sequence_number integer not null, @@ -3319,14 +3319,14 @@ create table region ( ); create table rel_detail ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version integer not null, constraint pk_rel_detail primary key (id) ); create table rel_master ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), detail_id bigint, version integer not null, @@ -3355,7 +3355,7 @@ create table mt_role_permission ( ); create table em_role ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_em_role primary key (id) ); @@ -3369,7 +3369,7 @@ create table root_bean ( ); create table f_second ( - id bigserial not null, + id bigint generated by default as identity not null, mod_name varchar(255), first bigint, title varchar(255), @@ -3378,7 +3378,7 @@ create table f_second ( ); create table section ( - id serial not null, + id integer generated by default as identity not null, article_id integer, type integer, content text, @@ -3390,7 +3390,7 @@ create table section ( ); create table self_parent ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), parent_id bigint, version bigint not null, @@ -3398,27 +3398,27 @@ create table self_parent ( ); create table self_ref_customer ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), referred_by_id bigint, constraint pk_self_ref_customer primary key (id) ); create table self_ref_example ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255) not null, parent_id bigint, constraint pk_self_ref_example primary key (id) ); create table e_save_test_a ( - id bigserial not null, + id bigint generated by default as identity not null, version bigint not null, constraint pk_e_save_test_a primary key (id) ); create table e_save_test_b ( - id bigserial not null, + id bigint generated by default as identity not null, sibling_a_id bigint, test_property boolean default false not null, version bigint not null, @@ -3446,7 +3446,7 @@ create table site_address ( ); create table some_enum_bean ( - id bigserial not null, + id bigint generated by default as identity not null, some_enum integer, name varchar(255), constraint ck_some_enum_bean_some_enum check ( some_enum in (0,1)), @@ -3454,7 +3454,7 @@ create table some_enum_bean ( ); create table some_file_bean ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), content bytea, version bigint not null, @@ -3462,7 +3462,7 @@ create table some_file_bean ( ); create table some_new_types_bean ( - id bigserial not null, + id bigint generated by default as identity not null, dow integer, mth integer, yr integer, @@ -3487,7 +3487,7 @@ create table some_new_types_bean ( ); create table some_period_bean ( - id bigserial not null, + id bigint generated by default as identity not null, anniversary date, version bigint not null, constraint pk_some_period_bean primary key (id) @@ -3504,13 +3504,13 @@ create table source_base ( create table stockforecast ( type varchar(31) not null, - id bigserial not null, + id bigint generated by default as identity not null, inner_report_id bigint, constraint pk_stockforecast primary key (id) ); create table sub_section ( - id serial not null, + id integer generated by default as identity not null, section_id integer, title varchar(255), cretime timestamptz not null, @@ -3520,20 +3520,20 @@ create table sub_section ( ); create table sub_type ( - sub_type_id serial not null, + sub_type_id integer generated by default as identity not null, description varchar(255), version bigint not null, constraint pk_sub_type primary key (sub_type_id) ); create table survey ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_survey primary key (id) ); create table tbytes_only ( - id serial not null, + id integer generated by default as identity not null, content bytea, constraint pk_tbytes_only primary key (id) ); @@ -3546,14 +3546,14 @@ create table tcar ( ); create table tevent ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, constraint pk_tevent primary key (id) ); create table tevent_many ( - id bigserial not null, + id bigint generated by default as identity not null, description varchar(255), event_id bigint, units integer not null, @@ -3563,7 +3563,7 @@ create table tevent_many ( ); create table tevent_one ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), status integer, event_id bigint, @@ -3575,20 +3575,20 @@ create table tevent_one ( create table tint_root ( my_type integer not null, - id serial not null, + id integer generated by default as identity not null, name varchar(255), child_property varchar(255), constraint pk_tint_root primary key (id) ); create table tjoda_entity ( - id serial not null, + id integer generated by default as identity not null, local_time time, constraint pk_tjoda_entity primary key (id) ); create table t_mapsuper1 ( - id serial not null, + id integer generated by default as identity not null, something varchar(255), name varchar(255), version integer not null, @@ -3596,7 +3596,7 @@ create table t_mapsuper1 ( ); create table t_oneb ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), description varchar(255), active boolean default false not null, @@ -3625,7 +3625,7 @@ create table t_atable_thatisrelatively ( create sequence t_atable_master_seq; create table ttruck_holder ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), truck_plate_no varchar(32) not null, basic_id integer, @@ -3634,7 +3634,7 @@ create table ttruck_holder ( ); create table ttruck_holder_item ( - id bigserial not null, + id bigint generated by default as identity not null, some_uid uuid, foo varchar(255), owner_id bigint not null, @@ -3648,13 +3648,13 @@ create table tuuid_entity ( ); create table twheel ( - id bigserial not null, + id bigint generated by default as identity not null, owner_plate_no varchar(32) not null, constraint pk_twheel primary key (id) ); create table twith_pre_insert ( - id serial not null, + id integer generated by default as identity not null, name varchar(255) not null, title varchar(255), constraint pk_twith_pre_insert primary key (id) @@ -3701,14 +3701,14 @@ create table sa_tire ( create sequence sa_tire_seq; create table tree_entity ( - id serial not null, + id integer generated by default as identity not null, text varchar(255), parent_id integer, constraint pk_tree_entity primary key (id) ); create table trip ( - id serial not null, + id integer generated by default as identity not null, vehicle_driver_id integer, destination varchar(255), address_id integer, @@ -3720,13 +3720,13 @@ create table trip ( ); create table truck_ref ( - id serial not null, + id integer generated by default as identity not null, something varchar(255), constraint pk_truck_ref primary key (id) ); create table tune ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_tune primary key (id) ); @@ -3741,7 +3741,7 @@ create table "type" ( ); create table tz_bean ( - id bigserial not null, + id bigint generated by default as identity not null, moda varchar(255), ts timestamptz, tstz timestamptz, @@ -3756,7 +3756,7 @@ create table usib_child ( ); create table usib_child_sibling ( - id bigserial not null, + id bigint generated by default as identity not null, child_id uuid, deleted boolean default false not null, constraint uq_usib_child_sibling_child_id unique (child_id), @@ -3764,13 +3764,13 @@ create table usib_child_sibling ( ); create table usib_parent ( - id bigserial not null, + id bigint generated by default as identity not null, deleted boolean default false not null, constraint pk_usib_parent primary key (id) ); create table ut_detail ( - id serial not null, + id integer generated by default as identity not null, utmaster_id integer not null, name varchar(255), qty integer, @@ -3780,7 +3780,7 @@ create table ut_detail ( ); create table ut_master ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), description varchar(255), date date, @@ -3806,7 +3806,7 @@ create table uutwo ( ); create table oto_user ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), account_id bigint not null, version bigint not null, @@ -3817,7 +3817,7 @@ create table oto_user ( ); create table c_user ( - id bigserial not null, + id bigint generated by default as identity not null, inactive boolean default false not null, name varchar(255), email varchar(255), @@ -3830,20 +3830,20 @@ create table c_user ( ); create table tx_user ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_tx_user primary key (id) ); create table g_user ( - id bigserial not null, + id bigint generated by default as identity not null, username varchar(255), version bigint not null, constraint pk_g_user primary key (id) ); create table em_user ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_em_user primary key (id) ); @@ -3856,7 +3856,7 @@ create table em_user_role ( create table vehicle ( dtype varchar(3) not null, - id serial not null, + id integer generated by default as identity not null, license_number varchar(255), registration_date timestamptz, lease_id bigint, @@ -3874,7 +3874,7 @@ create table vehicle ( ); create table vehicle_driver ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), vehicle_id integer, address_id integer, @@ -3887,7 +3887,7 @@ create table vehicle_driver ( create table vehicle_lease ( dtype varchar(31) not null, - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), active_start date, active_end date, @@ -3900,7 +3900,7 @@ create table vehicle_lease ( ); create table warehouses ( - id serial not null, + id integer generated by default as identity not null, officezoneid integer, constraint pk_warehouses primary key (id) ); @@ -3936,7 +3936,7 @@ create table sp_car_wheel ( create sequence sp_car_wheel_seq; create table g_who_props_otm ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), version bigint not null, when_created timestamptz not null, @@ -3947,7 +3947,7 @@ create table g_who_props_otm ( ); create table with_zero ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), parent_id integer, lang varchar(2) default 'en' not null, @@ -3956,7 +3956,7 @@ create table with_zero ( ); create table parent ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_parent primary key (id) ); @@ -3970,7 +3970,7 @@ create table wview ( create table zones ( type varchar(31) not null, - id serial not null, + id integer generated by default as identity not null, attribute varchar(255), constraint pk_zones primary key (id) ); diff --git a/src/test/ddl-review/pg-drop-all.sql b/src/test/ddl-review/pg-drop-all.sql index df6f5815b..b2ce7ee84 100644 --- a/src/test/ddl-review/pg-drop-all.sql +++ b/src/test/ddl-review/pg-drop-all.sql @@ -1,4 +1,4 @@ --- Generated by ebean unknown at 2020-01-29T03:58:42.859353Z +-- Generated by ebean unknown at 2020-01-29T09:37:27.117523Z alter table if exists bar drop constraint if exists fk_bar_foo_id; drop index if exists ix_bar_foo_id; diff --git a/src/test/java/io/ebean/BaseTestCase.java b/src/test/java/io/ebean/BaseTestCase.java index 444ec37ea..6a1077bfc 100644 --- a/src/test/java/io/ebean/BaseTestCase.java +++ b/src/test/java/io/ebean/BaseTestCase.java @@ -199,7 +199,7 @@ public abstract class BaseTestCase { } public boolean isPostgres() { - return Platform.POSTGRES == platform(); + return Platform.POSTGRES == platform().base(); } public boolean isMySql() { diff --git a/src/test/java/io/ebean/ConditionalTestRunner.java b/src/test/java/io/ebean/ConditionalTestRunner.java index 7764cea97..dc207a869 100644 --- a/src/test/java/io/ebean/ConditionalTestRunner.java +++ b/src/test/java/io/ebean/ConditionalTestRunner.java @@ -37,13 +37,9 @@ public class ConditionalTestRunner extends BlockJUnit4ClassRunner { } private boolean platformMath(Platform[] platforms) { - Platform current = DB.getDefault().getPluginApi().getDatabasePlatform().getPlatform(); - for (Platform p : platforms) { - if (p.equals(current)) { - return true; - } - if (p == Platform.SQLSERVER && current == Platform.SQLSERVER17) { - // treat SQLSERVER as SQLSERVER17 in testing + Platform basePlatform = DB.getDefault().getPluginApi().getDatabasePlatform().getPlatform().base(); + for (Platform platform : platforms) { + if (platform.equals(basePlatform)) { return true; } } diff --git a/src/test/java/io/ebean/config/ServerConfigSqlServerTest.java b/src/test/java/io/ebean/config/ServerConfigSqlServerTest.java index 7e3e73bba..8f74deaac 100644 --- a/src/test/java/io/ebean/config/ServerConfigSqlServerTest.java +++ b/src/test/java/io/ebean/config/ServerConfigSqlServerTest.java @@ -17,7 +17,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class ServerConfigSqlServerTest { @Ignore - @ForPlatform({Platform.SQLSERVER, Platform.SQLSERVER17, Platform.SQLSERVER16}) + @ForPlatform({Platform.SQLSERVER}) @Test(expected = PersistenceException.class) public void need_explicitPlatform() { @@ -55,7 +55,7 @@ public class ServerConfigSqlServerTest { } @Ignore - @ForPlatform({Platform.SQLSERVER, Platform.SQLSERVER17, Platform.SQLSERVER16}) + @ForPlatform({Platform.SQLSERVER}) @Test public void explicit_17() { @@ -85,7 +85,7 @@ public class ServerConfigSqlServerTest { } @Ignore - @ForPlatform({Platform.SQLSERVER, Platform.SQLSERVER17, Platform.SQLSERVER16}) + @ForPlatform({Platform.SQLSERVER}) @Test public void explicit_16() { diff --git a/src/test/java/io/ebean/config/dbplatform/DatabasePlatformTest.java b/src/test/java/io/ebean/config/dbplatform/DatabasePlatformTest.java index ddfd991a9..3b2ff4eed 100644 --- a/src/test/java/io/ebean/config/dbplatform/DatabasePlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/DatabasePlatformTest.java @@ -14,7 +14,7 @@ import static org.junit.Assert.assertEquals; public class DatabasePlatformTest { @Test - public void convertQuotedIdentifiers_when_allQuotedIdentifier_sqlServer() throws Exception { + public void convertQuotedIdentifiers_when_allQuotedIdentifier_sqlServer() { ServerConfig config = new ServerConfig(); config.setAllQuotedIdentifiers(true); @@ -29,7 +29,7 @@ public class DatabasePlatformTest { } @Test - public void convertQuotedIdentifiers() throws Exception { + public void convertQuotedIdentifiers() { ServerConfig config = new ServerConfig(); @@ -46,7 +46,7 @@ public class DatabasePlatformTest { } @Test - public void defaultTypesForDecimalAndVarchar() throws Exception { + public void defaultTypesForDecimalAndVarchar() { DatabasePlatform dbPlatform = new DatabasePlatform(); assertEquals(defaultDecimalDefn(dbPlatform), "decimal(38)"); @@ -54,7 +54,7 @@ public class DatabasePlatformTest { } @Test - public void configure_customType() throws Exception { + public void configure_customType() { PlatformConfig config = new PlatformConfig(); config.addCustomMapping(DbType.VARCHAR, "text", Platform.POSTGRES); diff --git a/src/test/java/io/ebeaninternal/api/PlatformMatchTest.java b/src/test/java/io/ebeaninternal/api/PlatformMatchTest.java new file mode 100644 index 000000000..c3c036af4 --- /dev/null +++ b/src/test/java/io/ebeaninternal/api/PlatformMatchTest.java @@ -0,0 +1,49 @@ +package io.ebeaninternal.api; + +import io.ebean.annotation.Platform; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class PlatformMatchTest { + + + @Test + public void match() { + + assertTrue(PlatformMatch.matchPlatform(Platform.H2, "h2")); + assertTrue(PlatformMatch.matchPlatform(Platform.H2, "mysql,h2")); + assertTrue(PlatformMatch.matchPlatform(Platform.H2, "mysql,h2,")); + assertTrue(PlatformMatch.matchPlatform(Platform.H2, "mysql , h2 ,")); + assertTrue(PlatformMatch.matchPlatform(Platform.H2, "mysql , h2, oracle")); + assertTrue(PlatformMatch.matchPlatform(Platform.H2, "mysql , h2, oracle")); + + assertTrue(PlatformMatch.matchPlatform(Platform.SQLSERVER, "sqlserver")); + assertTrue(PlatformMatch.matchPlatform(Platform.SQLSERVER17, "sqlserver")); + assertTrue(PlatformMatch.matchPlatform(Platform.SQLSERVER16, "sqlserver")); + + assertTrue(PlatformMatch.matchPlatform(Platform.POSTGRES, "postgres")); + assertTrue(PlatformMatch.matchPlatform(Platform.POSTGRES9, "postgres")); + assertTrue(PlatformMatch.matchPlatform(Platform.POSTGRES10, "postgres")); + } + + @Test + public void match_sqlserver17_matchAlsoToGenericName() { + assertTrue(PlatformMatch.matchPlatform(Platform.SQLSERVER17, "sqlserver")); + assertTrue(PlatformMatch.matchPlatform(Platform.SQLSERVER17, "sqlserver17")); + } + + @Test + public void matchPlatform_sqlserver16_matchAlsoToGenericName() { + assertTrue(PlatformMatch.matchPlatform(Platform.SQLSERVER16, "sqlserver")); + assertTrue(PlatformMatch.matchPlatform(Platform.SQLSERVER16, "sqlserver16")); + } + + @Test + public void matchPlatform_sqlserver_nonMatch() { + assertFalse(PlatformMatch.matchPlatform(Platform.SQLSERVER16, "sqlserver17")); + assertFalse(PlatformMatch.matchPlatform(Platform.SQLSERVER17, "sqlserver16")); + assertFalse(PlatformMatch.matchPlatform(Platform.SQLSERVER, "sqlserver16")); + assertFalse(PlatformMatch.matchPlatform(Platform.SQLSERVER, "sqlserver17")); + } +} diff --git a/src/test/java/io/ebeaninternal/extraddl/model/ExtraDdlXmlReaderTest.java b/src/test/java/io/ebeaninternal/extraddl/model/ExtraDdlXmlReaderTest.java index b28b1fb2e..cf4b284fe 100644 --- a/src/test/java/io/ebeaninternal/extraddl/model/ExtraDdlXmlReaderTest.java +++ b/src/test/java/io/ebeaninternal/extraddl/model/ExtraDdlXmlReaderTest.java @@ -1,5 +1,6 @@ package io.ebeaninternal.extraddl.model; +import io.ebean.annotation.Platform; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -19,7 +20,7 @@ public class ExtraDdlXmlReaderTest { @Test public void buildExtra_when_h2() { - String ddl = ExtraDdlXmlReader.buildExtra("h2", false); + String ddl = ExtraDdlXmlReader.buildExtra(Platform.H2, false); assertThat(ddl).contains("create or replace view order_agg_vw"); assertThat(ddl).contains("-- h2 and postgres script"); @@ -29,7 +30,7 @@ public class ExtraDdlXmlReaderTest { @Test public void buildExtra_when_oracle() { - String ddl = ExtraDdlXmlReader.buildExtra("oracle", false); + String ddl = ExtraDdlXmlReader.buildExtra(Platform.ORACLE, false); assertThat(ddl).contains("create or replace view order_agg_vw"); assertThat(ddl).doesNotContain("-- h2 and postgres script"); @@ -39,44 +40,11 @@ public class ExtraDdlXmlReaderTest { @Test public void buildExtra_when_mysql() { - String ddl = ExtraDdlXmlReader.buildExtra("mysql", false); + String ddl = ExtraDdlXmlReader.buildExtra(Platform.MYSQL, false); assertThat(ddl).contains("create or replace view order_agg_vw"); assertThat(ddl).doesNotContain("-- h2 and postgres script"); assertThat(ddl).doesNotContain(" -- oracle only script"); } - @Test - public void matchPlatform() { - - assertTrue(ExtraDdlXmlReader.matchPlatform("h2", "h2")); - assertTrue(ExtraDdlXmlReader.matchPlatform("h2", "mysql,h2")); - assertTrue(ExtraDdlXmlReader.matchPlatform("h2", "mysql,h2,")); - assertTrue(ExtraDdlXmlReader.matchPlatform("h2", "mysql , h2 ,")); - assertTrue(ExtraDdlXmlReader.matchPlatform("h2", "mysql , h2, oracle")); - assertTrue(ExtraDdlXmlReader.matchPlatform("h2", "mysql , h2, oracle")); - - assertTrue(ExtraDdlXmlReader.matchPlatform("sqlserver17", "sqlserver17")); - assertTrue(ExtraDdlXmlReader.matchPlatform("sqlserver16", "sqlserver16")); - } - - @Test - public void matchPlatform_sqlserver17_matchAlsoToGenericName() { - - assertTrue(ExtraDdlXmlReader.matchPlatform("sqlserver17", "sqlserver")); - } - - @Test - public void matchPlatform_sqlserver16_matchAlsoToGenericName() { - - assertTrue(ExtraDdlXmlReader.matchPlatform("sqlserver16", "sqlserver")); - } - - @Test - public void matchPlatform_sqlserver_nonMatch() { - - assertFalse(ExtraDdlXmlReader.matchPlatform("sqlserver16", "sqlserver17")); - assertFalse(ExtraDdlXmlReader.matchPlatform("sqlserver17", "sqlserver16")); - } - } diff --git a/src/test/java/io/ebeaninternal/server/deploy/DeployPropertyParserTest.java b/src/test/java/io/ebeaninternal/server/deploy/DeployPropertyParserTest.java index bb7d4e20a..cfb35f740 100644 --- a/src/test/java/io/ebeaninternal/server/deploy/DeployPropertyParserTest.java +++ b/src/test/java/io/ebeaninternal/server/deploy/DeployPropertyParserTest.java @@ -62,19 +62,19 @@ public class DeployPropertyParserTest extends BaseTestCase { } @Test - @ForPlatform(value = {Platform.H2, Platform.POSTGRES}) + @ForPlatform({Platform.H2, Platform.POSTGRES}) public void withQuote_when_match_h2() { assertThat(withQuoteParser().parse("name like ?")).isEqualTo("${}\"Name\" like ?"); } @Test - @ForPlatform(value = Platform.SQLSERVER) + @ForPlatform(Platform.SQLSERVER) public void withQuote_when_match_sqlserver() { assertThat(withQuoteParser().parse("name like ?")).isEqualTo("${}[Name] like ?"); } @Test - @ForPlatform(value = Platform.MYSQL) + @ForPlatform(Platform.MYSQL) public void withQuote_when_match_mysql() { assertThat(withQuoteParser().parse("name like ?")).isEqualTo("${}`Name` like ?"); } diff --git a/src/test/java/main/StartPostgres9.java b/src/test/java/main/StartPostgres9.java new file mode 100644 index 000000000..9b925d9a8 --- /dev/null +++ b/src/test/java/main/StartPostgres9.java @@ -0,0 +1,21 @@ +package main; + +import io.ebean.docker.commands.PostgresConfig; +import io.ebean.docker.commands.PostgresContainer; + +public class StartPostgres9 { + + public static void main(String[] args) { + + PostgresConfig config = new PostgresConfig("9.6"); + config.setPort("9432"); + config.setDbName("unit"); + config.setUser("unit"); + config.setPassword("unit"); + config.setContainerName("pg9"); + config.setExtensions("hstore,pgcrypto"); + + PostgresContainer container = new PostgresContainer(config); + container.startWithDropCreate(); + } +} diff --git a/src/test/java/org/tests/basic/TestQueryForUpdate.java b/src/test/java/org/tests/basic/TestQueryForUpdate.java index 530468c00..2f4800a82 100644 --- a/src/test/java/org/tests/basic/TestQueryForUpdate.java +++ b/src/test/java/org/tests/basic/TestQueryForUpdate.java @@ -23,9 +23,7 @@ public class TestQueryForUpdate extends BaseTestCase { @Test - @ForPlatform({ - Platform.H2, Platform.ORACLE, Platform.POSTGRES, Platform.SQLSERVER, Platform.MYSQL - }) + @ForPlatform({Platform.H2, Platform.ORACLE, Platform.POSTGRES, Platform.SQLSERVER, Platform.MYSQL}) public void testForUpdate() { ResetBasicData.reset(); @@ -43,9 +41,7 @@ public class TestQueryForUpdate extends BaseTestCase { } @Test - @ForPlatform({ - Platform.H2, Platform.ORACLE, Platform.POSTGRES, Platform.SQLSERVER, Platform.MYSQL - }) + @ForPlatform({ Platform.H2, Platform.ORACLE, Platform.POSTGRES, Platform.SQLSERVER, Platform.MYSQL}) public void testForUpdate_when_alreadyInPC() { EBasic basic = new EBasic("test PC cache"); @@ -79,9 +75,7 @@ public class TestQueryForUpdate extends BaseTestCase { } @Test - @ForPlatform({ - Platform.H2, Platform.POSTGRES, Platform.SQLSERVER, Platform.ORACLE - }) + @ForPlatform({Platform.H2, Platform.POSTGRES, Platform.SQLSERVER, Platform.ORACLE}) public void testForUpdate_noWait_noMaxRows() { ResetBasicData.reset(); @@ -103,9 +97,7 @@ public class TestQueryForUpdate extends BaseTestCase { } @Test - @ForPlatform({ - Platform.H2, Platform.POSTGRES, Platform.SQLSERVER - }) + @ForPlatform({Platform.H2, Platform.POSTGRES, Platform.SQLSERVER}) public void testForUpdate_noWait() { ResetBasicData.reset(); diff --git a/src/test/resources/assert/ModelBuild_explicitSequencesTest/pg-apply.sql b/src/test/resources/assert/ModelBuild_explicitSequencesTest/pg-apply.sql index 94d31e04f..dfab09392 100644 --- a/src/test/resources/assert/ModelBuild_explicitSequencesTest/pg-apply.sql +++ b/src/test/resources/assert/ModelBuild_explicitSequencesTest/pg-apply.sql @@ -1,12 +1,12 @@ create table persons ( - id bigserial not null, + id bigint generated by default as identity not null, surname varchar(64) not null, name varchar(64) not null, constraint pk_persons primary key (id) ); create table phones ( - id bigserial not null, + id bigint generated by default as identity not null, phone_number varchar(7) not null, person_id bigint not null, constraint uq_phones_phone_number unique (phone_number), diff --git a/src/test/resources/dbmigration/migrationtest/mysql55/1.3.sql b/src/test/resources/dbmigration/migrationtest/mysql55/1.3.sql index 057cec8bd..593f0f3c0 100644 --- a/src/test/resources/dbmigration/migrationtest/mysql55/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/mysql55/1.3.sql @@ -58,8 +58,12 @@ alter table migtest_e_history6 modify test_number1 integer; update migtest_e_history6 set test_number2 = 7 where test_number2 is null; alter table migtest_e_history6 alter test_number2 set default 7; alter table migtest_e_history6 modify test_number2 integer not null; +alter table migtest_oto_child add constraint uq_m12_otoc72 unique (name); +alter table migtest_oto_master add constraint uq_migtest_oto_master_name unique (name); create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index ix_m12_otoc72 on migtest_oto_child (name); +create index ix_migtest_oto_master_name on migtest_oto_master (name); drop index ix_migtest_e_basic_indextest3 on migtest_e_basic; drop index ix_migtest_e_basic_indextest6 on migtest_e_basic; create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); diff --git a/src/test/resources/dbmigration/migrationtest/mysql55/R__order_views.sql b/src/test/resources/dbmigration/migrationtest/mysql55/R__order_views.sql new file mode 100644 index 000000000..ccf30a2c6 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/mysql55/R__order_views.sql @@ -0,0 +1,7 @@ + + create or replace view order_agg_vw as + select d.order_id, sum(d.order_qty * d.unit_price) as order_total, + sum(d.ship_qty * d.unit_price) as ship_total + from o_order_detail d + group by d.order_id + \ No newline at end of file diff --git a/src/test/resources/dbmigration/migrationtest/postgres/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/postgres/1.0__initial.sql index fa4d80c2c..bc920ec22 100644 --- a/src/test/resources/dbmigration/migrationtest/postgres/1.0__initial.sql +++ b/src/test/resources/dbmigration/migrationtest/postgres/1.0__initial.sql @@ -1,13 +1,13 @@ -- Migrationscripts for ebean unittest -- apply changes create table migtest_ckey_assoc ( - id serial not null, + id integer generated by default as identity not null, assoc_one varchar(255), constraint pk_migtest_ckey_assoc primary key (id) ); create table migtest_ckey_detail ( - id serial not null, + id integer generated by default as identity not null, something varchar(255), constraint pk_migtest_ckey_detail primary key (id) ); @@ -21,41 +21,41 @@ create table migtest_ckey_parent ( ); create table migtest_fk_cascade ( - id bigserial not null, + id bigint generated by default as identity not null, one_id bigint, constraint pk_migtest_fk_cascade primary key (id) ); create table migtest_fk_cascade_one ( - id bigserial not null, + id bigint generated by default as identity not null, constraint pk_migtest_fk_cascade_one primary key (id) ); create table migtest_fk_none ( - id bigserial not null, + id bigint generated by default as identity not null, one_id bigint, constraint pk_migtest_fk_none primary key (id) ); create table migtest_fk_none_via_join ( - id bigserial not null, + id bigint generated by default as identity not null, one_id bigint, constraint pk_migtest_fk_none_via_join primary key (id) ); create table migtest_fk_one ( - id bigserial not null, + id bigint generated by default as identity not null, constraint pk_migtest_fk_one primary key (id) ); create table migtest_fk_set_null ( - id bigserial not null, + id bigint generated by default as identity not null, one_id bigint, constraint pk_migtest_fk_set_null primary key (id) ); create table migtest_e_basic ( - id serial not null, + id integer generated by default as identity not null, status varchar(1), status2 varchar(1) default 'N' not null, name varchar(127), @@ -79,20 +79,20 @@ create table migtest_e_basic ( ); create table migtest_e_enum ( - id serial not null, + id integer generated by default as identity not null, test_status varchar(1), constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')), constraint pk_migtest_e_enum primary key (id) ); create table migtest_e_history ( - id serial not null, + id integer generated by default as identity not null, test_string varchar(255), constraint pk_migtest_e_history primary key (id) ); create table migtest_e_history2 ( - id serial not null, + id integer generated by default as identity not null, test_string varchar(255), obsolete_string1 varchar(255), obsolete_string2 varchar(255), @@ -100,63 +100,63 @@ create table migtest_e_history2 ( ); create table migtest_e_history3 ( - id serial not null, + id integer generated by default as identity not null, test_string varchar(255), constraint pk_migtest_e_history3 primary key (id) ); create table migtest_e_history4 ( - id serial not null, + id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history4 primary key (id) ); create table migtest_e_history5 ( - id serial not null, + id integer generated by default as identity not null, test_number integer, constraint pk_migtest_e_history5 primary key (id) ); create table migtest_e_history6 ( - id serial not null, + id integer generated by default as identity not null, test_number1 integer, test_number2 integer not null, constraint pk_migtest_e_history6 primary key (id) ); create table migtest_e_ref ( - id serial not null, + id integer generated by default as identity not null, name varchar(127) not null, constraint uq_migtest_e_ref_name unique (name), constraint pk_migtest_e_ref primary key (id) ); create table migtest_e_softdelete ( - id serial not null, + id integer generated by default as identity not null, test_string varchar(255), constraint pk_migtest_e_softdelete primary key (id) ); create table migtest_mtm_c ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_migtest_mtm_c primary key (id) ); create table migtest_mtm_m ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_migtest_mtm_m primary key (id) ); create table migtest_oto_child ( - id serial not null, + id integer generated by default as identity not null, name varchar(255), constraint pk_migtest_oto_child primary key (id) ); create table migtest_oto_master ( - id bigserial not null, + id bigint generated by default as identity not null, name varchar(255), constraint pk_migtest_oto_master primary key (id) ); diff --git a/src/test/resources/dbmigration/migrationtest/postgres/1.1.sql b/src/test/resources/dbmigration/migrationtest/postgres/1.1.sql index 34ec2956d..5cc3be7a8 100644 --- a/src/test/resources/dbmigration/migrationtest/postgres/1.1.sql +++ b/src/test/resources/dbmigration/migrationtest/postgres/1.1.sql @@ -7,7 +7,7 @@ drop view if exists migtest_e_history5_with_history; -- apply changes create table migtest_e_user ( - id serial not null, + id integer generated by default as identity not null, constraint pk_migtest_e_user primary key (id) ); diff --git a/src/test/resources/dbmigration/migrationtest/postgres/1.3.sql b/src/test/resources/dbmigration/migrationtest/postgres/1.3.sql index d3e5a0b37..172853cbd 100644 --- a/src/test/resources/dbmigration/migrationtest/postgres/1.3.sql +++ b/src/test/resources/dbmigration/migrationtest/postgres/1.3.sql @@ -6,7 +6,7 @@ drop view if exists migtest_e_history4_with_history; -- apply changes create table migtest_e_ref ( - id serial not null, + id integer generated by default as identity not null, name varchar(127) not null, constraint uq_migtest_e_ref_name unique (name), constraint pk_migtest_e_ref primary key (id) diff --git a/src/test/resources/dbmigration/migrationtest/postgres10/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/postgres10/1.0__initial.sql new file mode 100644 index 000000000..bc920ec22 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres10/1.0__initial.sql @@ -0,0 +1,307 @@ +-- Migrationscripts for ebean unittest +-- apply changes +create table migtest_ckey_assoc ( + id integer generated by default as identity not null, + assoc_one varchar(255), + constraint pk_migtest_ckey_assoc primary key (id) +); + +create table migtest_ckey_detail ( + id integer generated by default as identity not null, + something varchar(255), + constraint pk_migtest_ckey_detail primary key (id) +); + +create table migtest_ckey_parent ( + one_key integer not null, + two_key varchar(127) not null, + name varchar(255), + version integer not null, + constraint pk_migtest_ckey_parent primary key (one_key,two_key) +); + +create table migtest_fk_cascade ( + id bigint generated by default as identity not null, + one_id bigint, + constraint pk_migtest_fk_cascade primary key (id) +); + +create table migtest_fk_cascade_one ( + id bigint generated by default as identity not null, + constraint pk_migtest_fk_cascade_one primary key (id) +); + +create table migtest_fk_none ( + id bigint generated by default as identity not null, + one_id bigint, + constraint pk_migtest_fk_none primary key (id) +); + +create table migtest_fk_none_via_join ( + id bigint generated by default as identity not null, + one_id bigint, + constraint pk_migtest_fk_none_via_join primary key (id) +); + +create table migtest_fk_one ( + id bigint generated by default as identity not null, + constraint pk_migtest_fk_one primary key (id) +); + +create table migtest_fk_set_null ( + id bigint generated by default as identity not null, + one_id bigint, + constraint pk_migtest_fk_set_null primary key (id) +); + +create table migtest_e_basic ( + id integer generated by default as identity not null, + status varchar(1), + status2 varchar(1) default 'N' not null, + name varchar(127), + description varchar(127), + some_date timestamptz, + old_boolean boolean default false not null, + old_boolean2 boolean, + eref_id integer, + indextest1 varchar(127), + indextest2 varchar(127), + indextest3 varchar(127), + indextest4 varchar(127), + indextest5 varchar(127), + indextest6 varchar(127), + user_id integer not null, + constraint ck_migtest_e_basic_status check ( status in ('N','A','I')), + constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')), + constraint uq_migtest_e_basic_indextest2 unique (indextest2), + constraint uq_migtest_e_basic_indextest6 unique (indextest6), + constraint pk_migtest_e_basic primary key (id) +); + +create table migtest_e_enum ( + id integer generated by default as identity not null, + test_status varchar(1), + constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')), + constraint pk_migtest_e_enum primary key (id) +); + +create table migtest_e_history ( + id integer generated by default as identity not null, + test_string varchar(255), + constraint pk_migtest_e_history primary key (id) +); + +create table migtest_e_history2 ( + id integer generated by default as identity not null, + test_string varchar(255), + obsolete_string1 varchar(255), + obsolete_string2 varchar(255), + constraint pk_migtest_e_history2 primary key (id) +); + +create table migtest_e_history3 ( + id integer generated by default as identity not null, + test_string varchar(255), + constraint pk_migtest_e_history3 primary key (id) +); + +create table migtest_e_history4 ( + id integer generated by default as identity not null, + test_number integer, + constraint pk_migtest_e_history4 primary key (id) +); + +create table migtest_e_history5 ( + id integer generated by default as identity not null, + test_number integer, + constraint pk_migtest_e_history5 primary key (id) +); + +create table migtest_e_history6 ( + id integer generated by default as identity not null, + test_number1 integer, + test_number2 integer not null, + constraint pk_migtest_e_history6 primary key (id) +); + +create table migtest_e_ref ( + id integer generated by default as identity not null, + name varchar(127) not null, + constraint uq_migtest_e_ref_name unique (name), + constraint pk_migtest_e_ref primary key (id) +); + +create table migtest_e_softdelete ( + id integer generated by default as identity not null, + test_string varchar(255), + constraint pk_migtest_e_softdelete primary key (id) +); + +create table migtest_mtm_c ( + id integer generated by default as identity not null, + name varchar(255), + constraint pk_migtest_mtm_c primary key (id) +); + +create table migtest_mtm_m ( + id bigint generated by default as identity not null, + name varchar(255), + constraint pk_migtest_mtm_m primary key (id) +); + +create table migtest_oto_child ( + id integer generated by default as identity not null, + name varchar(255), + constraint pk_migtest_oto_child primary key (id) +); + +create table migtest_oto_master ( + id bigint generated by default as identity not null, + name varchar(255), + constraint pk_migtest_oto_master primary key (id) +); + +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index idxd_migtest_0 on migtest_oto_child using hash (upper(name)) where upper(name) = 'JIM'; +create index concurrently ix_migtest_oto_child_lowername_id on migtest_oto_child (lower(name),id); +create index ix_migtest_oto_child_lowername on migtest_oto_child (lower(name)); +create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); +alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update cascade; + +create index ix_migtest_fk_set_null_one_id on 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 on update set null; + +create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); +alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; + +alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history2_history(like migtest_e_history2); +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history3_history(like migtest_e_history3); +create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; + +alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history4_history(like migtest_e_history4); +create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; + +alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history5_history(like migtest_e_history5); +create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; + +alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history6_history(like migtest_e_history6); +create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; + +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history2_history_upd + before update or delete on migtest_e_history2 + for each row execute procedure migtest_e_history2_history_version(); + +create or replace function migtest_e_history3_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history3_history_upd + before update or delete on migtest_e_history3 + for each row execute procedure migtest_e_history3_history_version(); + +create or replace function migtest_e_history4_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history4_history_upd + before update or delete on migtest_e_history4 + for each row execute procedure migtest_e_history4_history_version(); + +create or replace function migtest_e_history5_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history5_history_upd + before update or delete on migtest_e_history5 + for each row execute procedure migtest_e_history5_history_version(); + +create or replace function migtest_e_history6_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history6_history_upd + before update or delete on migtest_e_history6 + for each row execute procedure migtest_e_history6_history_version(); + diff --git a/src/test/resources/dbmigration/migrationtest/postgres10/1.1.sql b/src/test/resources/dbmigration/migrationtest/postgres10/1.1.sql new file mode 100644 index 000000000..5cc3be7a8 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres10/1.1.sql @@ -0,0 +1,237 @@ +-- Migrationscripts for ebean unittest +-- drop dependencies +drop view if exists migtest_e_history2_with_history; +drop view if exists migtest_e_history3_with_history; +drop view if exists migtest_e_history4_with_history; +drop view if exists migtest_e_history5_with_history; + +-- apply changes +create table migtest_e_user ( + id integer generated by default as identity not null, + constraint pk_migtest_e_user primary key (id) +); + +create table migtest_mtm_c_migtest_mtm_m ( + migtest_mtm_c_id integer not null, + migtest_mtm_m_id bigint not null, + constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id) +); + +create table migtest_mtm_m_migtest_mtm_c ( + migtest_mtm_m_id bigint not null, + migtest_mtm_c_id integer not null, + constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id) +); + +alter table migtest_ckey_detail add column one_key integer; +alter table migtest_ckey_detail add column two_key varchar(127); + +alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict; +alter table migtest_ckey_parent add column assoc_id integer; + +alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id; +alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict; +alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict; +alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict; +alter table if exists migtest_fk_set_null drop constraint if exists 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 restrict on update restrict; + +update migtest_e_basic set status = 'A' where status is null; +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; +alter table migtest_e_basic alter column status set default 'A'; +alter table migtest_e_basic alter column status set 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 if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 type varchar(127); +alter table migtest_e_basic alter column status2 drop default; +alter table migtest_e_basic alter column status2 drop not null; + +-- rename all collisions; +alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); + +insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; +alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; +alter table migtest_e_basic alter column user_id drop not null; +alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null; +alter table migtest_e_basic add column new_boolean_field boolean default true not null; +update migtest_e_basic set new_boolean_field = old_boolean; + +alter table migtest_e_basic add column new_boolean_field2 boolean default true not null; +alter table migtest_e_basic add column progress integer 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 column new_integer integer 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; +alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1); +alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name); +alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4); +alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); +alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status; + +alter table migtest_e_history alter column test_string TYPE bigint USING (test_string::integer); +comment on column migtest_e_history.test_string is 'Column altered to long now'; +alter table migtest_e_history alter column test_string type bigint; +comment on table migtest_e_history is 'We have history now'; + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history2 set test_string = 'unknown' where test_string is null; +alter table migtest_e_history2 alter column test_string set default 'unknown'; +alter table migtest_e_history2 alter column test_string set not null; +alter table migtest_e_history2 add column test_string2 varchar(255); +alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null; +alter table migtest_e_history2 add column new_column varchar(20); +alter table migtest_e_history2_history add column test_string2 varchar(255); +alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown'; +alter table migtest_e_history2_history add column new_column varchar(20); + +alter table migtest_e_history4 alter column test_number type bigint; +alter table migtest_e_history4_history alter column test_number type bigint; +alter table migtest_e_history5 add column test_boolean boolean default false not null; +alter table migtest_e_history5_history add column test_boolean boolean default false; + + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history6 set test_number1 = 42 where test_number1 is null; +alter table migtest_e_history6 alter column test_number1 set default 42; +alter table migtest_e_history6 alter column test_number1 set not null; +alter table migtest_e_history6 alter column test_number2 drop not null; +alter table migtest_e_softdelete add column deleted boolean default false not null; + +alter table migtest_oto_child add column master_id bigint; + +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +create index ix_migtest_oto_child_name on migtest_oto_child (name); +drop index if exists ix_migtest_e_basic_indextest1; +drop index if exists ix_migtest_e_basic_indextest5; +drop index if exists idxd_migtest_0; +drop index concurrently if exists ix_migtest_oto_child_lowername_id; +drop index if exists ix_migtest_oto_child_lowername; +create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); +alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; + +create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id); +alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict; + +create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id); +alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict; + +create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id); +alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; + +create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id); +alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict; + +alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; + +alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history_history(like migtest_e_history); +create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history; + +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; + +create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; + +create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; + +create or replace function migtest_e_history_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history_history_upd + before update or delete on migtest_e_history + for each row execute procedure migtest_e_history_history_version(); + +-- changes: [add test_string2, add test_string3, add new_column] +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [exclude test_string] +create or replace function migtest_e_history3_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [alter test_number] +create or replace function migtest_e_history4_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [add test_boolean] +create or replace function migtest_e_history5_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + diff --git a/src/test/resources/dbmigration/migrationtest/postgres10/1.2__dropsFor_1.1.sql b/src/test/resources/dbmigration/migrationtest/postgres10/1.2__dropsFor_1.1.sql new file mode 100644 index 000000000..c9a6d03e6 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres10/1.2__dropsFor_1.1.sql @@ -0,0 +1,40 @@ +-- Migrationscripts for ebean unittest +-- drop dependencies +drop view if exists migtest_e_history2_with_history; + +-- apply changes +alter table migtest_e_basic drop column old_boolean; + +alter table migtest_e_basic drop column old_boolean2; + +alter table migtest_e_basic drop column eref_id; + +alter table migtest_e_history2 drop column obsolete_string1; +alter table migtest_e_history2_history drop column obsolete_string1; + +alter table migtest_e_history2 drop column obsolete_string2; +alter table migtest_e_history2_history drop column obsolete_string2; + +drop table if exists migtest_e_ref cascade; +drop sequence if exists migtest_e_ref_seq; +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +-- changes: [drop obsolete_string1, drop obsolete_string2] +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + diff --git a/src/test/resources/dbmigration/migrationtest/postgres10/1.3.sql b/src/test/resources/dbmigration/migrationtest/postgres10/1.3.sql new file mode 100644 index 000000000..172853cbd --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres10/1.3.sql @@ -0,0 +1,141 @@ +-- Migrationscripts for ebean unittest +-- drop dependencies +drop view if exists migtest_e_history2_with_history; +drop view if exists migtest_e_history3_with_history; +drop view if exists migtest_e_history4_with_history; + +-- apply changes +create table migtest_e_ref ( + id integer generated by default as identity not null, + name varchar(127) not null, + constraint uq_migtest_e_ref_name unique (name), + constraint pk_migtest_e_ref primary key (id) +); + +alter table if exists migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent; +alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id; +alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update cascade; +alter table if exists migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id; +alter table if exists migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id; +alter table if exists migtest_fk_set_null drop constraint if exists 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 on update set null; +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; +alter table migtest_e_basic alter column status drop default; +alter table migtest_e_basic alter column status drop not 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 if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 type varchar(1); +alter table migtest_e_basic alter column status2 set default 'N'; +alter table migtest_e_basic alter column status2 set 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; + +update migtest_e_basic set user_id = 23 where user_id is null; +alter table if exists migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id; +alter table migtest_e_basic alter column user_id set default 23; +alter table migtest_e_basic alter column user_id set not null; +alter table migtest_e_basic add column old_boolean boolean default false not null; +alter table migtest_e_basic add column old_boolean2 boolean; +alter table migtest_e_basic add column eref_id integer; + +alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1; +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; +alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); +alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); +alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status; +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 alter column test_string drop default; +alter table migtest_e_history2 alter column test_string drop not null; +alter table migtest_e_history2 add column obsolete_string1 varchar(255); +alter table migtest_e_history2 add column obsolete_string2 varchar(255); +alter table migtest_e_history2_history add column obsolete_string1 varchar(255); +alter table migtest_e_history2_history add column obsolete_string2 varchar(255); + +alter table migtest_e_history4 alter column test_number type integer; +alter table migtest_e_history4_history alter column test_number type integer; +alter table migtest_e_history6 alter column test_number1 drop default; +alter table migtest_e_history6 alter column test_number1 drop not null; + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +alter table migtest_e_history6 alter column test_number2 set default 7; +alter table migtest_e_history6 alter column test_number2 set not null; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index ix_m12_otoc71 on migtest_oto_child (name); +create unique index uq_m12_otoc71 on migtest_oto_child (lower(name)); +create unique index ix_migtest_oto_master_lowername on migtest_oto_master (lower(name)); +drop index if exists ix_migtest_e_basic_indextest3; +drop index if exists ix_migtest_e_basic_indextest6; +create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); +alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; + +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; + +create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; + +-- changes: [add obsolete_string1, add obsolete_string2] +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [include test_string] +create or replace function migtest_e_history3_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [alter test_number] +create or replace function migtest_e_history4_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + diff --git a/src/test/resources/dbmigration/migrationtest/postgres10/1.4__dropsFor_1.3.sql b/src/test/resources/dbmigration/migrationtest/postgres10/1.4__dropsFor_1.3.sql new file mode 100644 index 000000000..748ee959b --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres10/1.4__dropsFor_1.3.sql @@ -0,0 +1,91 @@ +-- Migrationscripts for ebean unittest +-- drop dependencies +drop trigger if exists migtest_e_history_history_upd on migtest_e_history cascade; +drop function if exists migtest_e_history_history_version(); + +drop view migtest_e_history_with_history; +alter table migtest_e_history drop column sys_period; +drop table migtest_e_history_history; + +drop view if exists migtest_e_history2_with_history; +drop view if exists migtest_e_history5_with_history; + +-- apply changes +alter table migtest_ckey_detail drop column one_key; + +alter table migtest_ckey_detail drop column two_key; + +alter table migtest_ckey_parent drop column assoc_id; + +alter table migtest_e_basic drop column new_string_field; + +alter table migtest_e_basic drop column new_boolean_field; + +alter table migtest_e_basic drop column new_boolean_field2; + +alter table migtest_e_basic drop column progress; + +alter table migtest_e_basic drop column new_integer; + +alter table migtest_e_history2 drop column test_string2; +alter table migtest_e_history2_history drop column test_string2; + +alter table migtest_e_history2 drop column test_string3; +alter table migtest_e_history2_history drop column test_string3; + +alter table migtest_e_history2 drop column new_column; +alter table migtest_e_history2_history drop column new_column; + +alter table migtest_e_history5 drop column test_boolean; +alter table migtest_e_history5_history drop column test_boolean; + +alter table migtest_e_softdelete drop column deleted; + +alter table migtest_oto_child drop column master_id; + +drop table if exists migtest_e_user cascade; +drop sequence if exists migtest_e_user_seq; +drop table if exists migtest_mtm_c_migtest_mtm_m cascade; +drop table if exists migtest_mtm_m_migtest_mtm_c cascade; +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; + +-- changes: [drop test_string2, drop test_string3, drop new_column] +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [drop test_boolean] +create or replace function migtest_e_history5_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + diff --git a/src/test/resources/dbmigration/migrationtest/postgres10/R__multi_comments.sql b/src/test/resources/dbmigration/migrationtest/postgres10/R__multi_comments.sql new file mode 100644 index 000000000..0ede0c9eb --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres10/R__multi_comments.sql @@ -0,0 +1,3 @@ + + -- h2 and postgres script + \ No newline at end of file diff --git a/src/test/resources/dbmigration/migrationtest/postgres10/R__order_views.sql b/src/test/resources/dbmigration/migrationtest/postgres10/R__order_views.sql new file mode 100644 index 000000000..ccf30a2c6 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres10/R__order_views.sql @@ -0,0 +1,7 @@ + + create or replace view order_agg_vw as + select d.order_id, sum(d.order_qty * d.unit_price) as order_total, + sum(d.ship_qty * d.unit_price) as ship_total + from o_order_detail d + group by d.order_id + \ No newline at end of file diff --git a/src/test/resources/dbmigration/migrationtest/postgres10/R__pg_indexes.sql b/src/test/resources/dbmigration/migrationtest/postgres10/R__pg_indexes.sql new file mode 100644 index 000000000..fa0bab998 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres10/R__pg_indexes.sql @@ -0,0 +1,4 @@ + + -- postgres specific indexes + create index ix_ebasic_jmjb_gin2 on ebasic_json_map_json_b using gin(content jsonb_path_ops); + \ No newline at end of file diff --git a/src/test/resources/dbmigration/migrationtest/postgres9/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/postgres9/1.0__initial.sql new file mode 100644 index 000000000..010470b33 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres9/1.0__initial.sql @@ -0,0 +1,307 @@ +-- Migrationscripts for ebean unittest +-- apply changes +create table migtest_ckey_assoc ( + id bigserial not null, + assoc_one varchar(255), + constraint pk_migtest_ckey_assoc primary key (id) +); + +create table migtest_ckey_detail ( + id bigserial not null, + something varchar(255), + constraint pk_migtest_ckey_detail primary key (id) +); + +create table migtest_ckey_parent ( + one_key integer not null, + two_key varchar(127) not null, + name varchar(255), + version integer not null, + constraint pk_migtest_ckey_parent primary key (one_key,two_key) +); + +create table migtest_fk_cascade ( + id bigserial not null, + one_id bigint, + constraint pk_migtest_fk_cascade primary key (id) +); + +create table migtest_fk_cascade_one ( + id bigserial not null, + constraint pk_migtest_fk_cascade_one primary key (id) +); + +create table migtest_fk_none ( + id bigserial not null, + one_id bigint, + constraint pk_migtest_fk_none primary key (id) +); + +create table migtest_fk_none_via_join ( + id bigserial not null, + one_id bigint, + constraint pk_migtest_fk_none_via_join primary key (id) +); + +create table migtest_fk_one ( + id bigserial not null, + constraint pk_migtest_fk_one primary key (id) +); + +create table migtest_fk_set_null ( + id bigserial not null, + one_id bigint, + constraint pk_migtest_fk_set_null primary key (id) +); + +create table migtest_e_basic ( + id bigserial not null, + status varchar(1), + status2 varchar(1) default 'N' not null, + name varchar(127), + description varchar(127), + some_date timestamptz, + old_boolean boolean default false not null, + old_boolean2 boolean, + eref_id integer, + indextest1 varchar(127), + indextest2 varchar(127), + indextest3 varchar(127), + indextest4 varchar(127), + indextest5 varchar(127), + indextest6 varchar(127), + user_id integer not null, + constraint ck_migtest_e_basic_status check ( status in ('N','A','I')), + constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')), + constraint uq_migtest_e_basic_indextest2 unique (indextest2), + constraint uq_migtest_e_basic_indextest6 unique (indextest6), + constraint pk_migtest_e_basic primary key (id) +); + +create table migtest_e_enum ( + id bigserial not null, + test_status varchar(1), + constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')), + constraint pk_migtest_e_enum primary key (id) +); + +create table migtest_e_history ( + id bigserial not null, + test_string varchar(255), + constraint pk_migtest_e_history primary key (id) +); + +create table migtest_e_history2 ( + id bigserial not null, + test_string varchar(255), + obsolete_string1 varchar(255), + obsolete_string2 varchar(255), + constraint pk_migtest_e_history2 primary key (id) +); + +create table migtest_e_history3 ( + id bigserial not null, + test_string varchar(255), + constraint pk_migtest_e_history3 primary key (id) +); + +create table migtest_e_history4 ( + id bigserial not null, + test_number integer, + constraint pk_migtest_e_history4 primary key (id) +); + +create table migtest_e_history5 ( + id bigserial not null, + test_number integer, + constraint pk_migtest_e_history5 primary key (id) +); + +create table migtest_e_history6 ( + id bigserial not null, + test_number1 integer, + test_number2 integer not null, + constraint pk_migtest_e_history6 primary key (id) +); + +create table migtest_e_ref ( + id bigserial not null, + name varchar(127) not null, + constraint uq_migtest_e_ref_name unique (name), + constraint pk_migtest_e_ref primary key (id) +); + +create table migtest_e_softdelete ( + id bigserial not null, + test_string varchar(255), + constraint pk_migtest_e_softdelete primary key (id) +); + +create table migtest_mtm_c ( + id bigserial not null, + name varchar(255), + constraint pk_migtest_mtm_c primary key (id) +); + +create table migtest_mtm_m ( + id bigserial not null, + name varchar(255), + constraint pk_migtest_mtm_m primary key (id) +); + +create table migtest_oto_child ( + id bigserial not null, + name varchar(255), + constraint pk_migtest_oto_child primary key (id) +); + +create table migtest_oto_master ( + id bigserial not null, + name varchar(255), + constraint pk_migtest_oto_master primary key (id) +); + +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index idxd_migtest_0 on migtest_oto_child using hash (upper(name)) where upper(name) = 'JIM'; +create index concurrently ix_migtest_oto_child_lowername_id on migtest_oto_child (lower(name),id); +create index ix_migtest_oto_child_lowername on migtest_oto_child (lower(name)); +create index ix_migtest_fk_cascade_one_id on migtest_fk_cascade (one_id); +alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update cascade; + +create index ix_migtest_fk_set_null_one_id on 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 on update set null; + +create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); +alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; + +alter table migtest_e_history2 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history2_history(like migtest_e_history2); +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +alter table migtest_e_history3 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history3_history(like migtest_e_history3); +create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; + +alter table migtest_e_history4 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history4_history(like migtest_e_history4); +create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; + +alter table migtest_e_history5 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history5_history(like migtest_e_history5); +create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; + +alter table migtest_e_history6 add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history6_history(like migtest_e_history6); +create view migtest_e_history6_with_history as select * from migtest_e_history6 union all select * from migtest_e_history6_history; + +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history2_history_upd + before update or delete on migtest_e_history2 + for each row execute procedure migtest_e_history2_history_version(); + +create or replace function migtest_e_history3_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history3_history_upd + before update or delete on migtest_e_history3 + for each row execute procedure migtest_e_history3_history_version(); + +create or replace function migtest_e_history4_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history4_history_upd + before update or delete on migtest_e_history4 + for each row execute procedure migtest_e_history4_history_version(); + +create or replace function migtest_e_history5_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history5_history_upd + before update or delete on migtest_e_history5 + for each row execute procedure migtest_e_history5_history_version(); + +create or replace function migtest_e_history6_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history6_history (sys_period,id, test_number1, test_number2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number1, OLD.test_number2); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history6_history_upd + before update or delete on migtest_e_history6 + for each row execute procedure migtest_e_history6_history_version(); + diff --git a/src/test/resources/dbmigration/migrationtest/postgres9/1.1.sql b/src/test/resources/dbmigration/migrationtest/postgres9/1.1.sql new file mode 100644 index 000000000..52b2a90c1 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres9/1.1.sql @@ -0,0 +1,237 @@ +-- Migrationscripts for ebean unittest +-- drop dependencies +drop view if exists migtest_e_history2_with_history; +drop view if exists migtest_e_history3_with_history; +drop view if exists migtest_e_history4_with_history; +drop view if exists migtest_e_history5_with_history; + +-- apply changes +create table migtest_e_user ( + id bigserial not null, + constraint pk_migtest_e_user primary key (id) +); + +create table migtest_mtm_c_migtest_mtm_m ( + migtest_mtm_c_id integer not null, + migtest_mtm_m_id bigint not null, + constraint pk_migtest_mtm_c_migtest_mtm_m primary key (migtest_mtm_c_id,migtest_mtm_m_id) +); + +create table migtest_mtm_m_migtest_mtm_c ( + migtest_mtm_m_id bigint not null, + migtest_mtm_c_id integer not null, + constraint pk_migtest_mtm_m_migtest_mtm_c primary key (migtest_mtm_m_id,migtest_mtm_c_id) +); + +alter table migtest_ckey_detail add column one_key integer; +alter table migtest_ckey_detail add column two_key varchar(127); + +alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict; +alter table migtest_ckey_parent add column assoc_id integer; + +alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id; +alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict; +alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict; +alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict; +alter table if exists migtest_fk_set_null drop constraint if exists 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 restrict on update restrict; + +update migtest_e_basic set status = 'A' where status is null; +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; +alter table migtest_e_basic alter column status set default 'A'; +alter table migtest_e_basic alter column status set 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 if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 type varchar(127); +alter table migtest_e_basic alter column status2 drop default; +alter table migtest_e_basic alter column status2 drop not null; + +-- rename all collisions; +alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); + +insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; +alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict; +alter table migtest_e_basic alter column user_id drop not null; +alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null; +alter table migtest_e_basic add column new_boolean_field boolean default true not null; +update migtest_e_basic set new_boolean_field = old_boolean; + +alter table migtest_e_basic add column new_boolean_field2 boolean default true not null; +alter table migtest_e_basic add column progress integer 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 column new_integer integer 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; +alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1); +alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name); +alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4); +alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); +alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status; + +alter table migtest_e_history alter column test_string TYPE bigint USING (test_string::integer); +comment on column migtest_e_history.test_string is 'Column altered to long now'; +alter table migtest_e_history alter column test_string type bigint; +comment on table migtest_e_history is 'We have history now'; + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history2 set test_string = 'unknown' where test_string is null; +alter table migtest_e_history2 alter column test_string set default 'unknown'; +alter table migtest_e_history2 alter column test_string set not null; +alter table migtest_e_history2 add column test_string2 varchar(255); +alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null; +alter table migtest_e_history2 add column new_column varchar(20); +alter table migtest_e_history2_history add column test_string2 varchar(255); +alter table migtest_e_history2_history add column test_string3 varchar(255) default 'unknown'; +alter table migtest_e_history2_history add column new_column varchar(20); + +alter table migtest_e_history4 alter column test_number type bigint; +alter table migtest_e_history4_history alter column test_number type bigint; +alter table migtest_e_history5 add column test_boolean boolean default false not null; +alter table migtest_e_history5_history add column test_boolean boolean default false; + + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history6 set test_number1 = 42 where test_number1 is null; +alter table migtest_e_history6 alter column test_number1 set default 42; +alter table migtest_e_history6 alter column test_number1 set not null; +alter table migtest_e_history6 alter column test_number2 drop not null; +alter table migtest_e_softdelete add column deleted boolean default false not null; + +alter table migtest_oto_child add column master_id bigint; + +create index ix_migtest_e_basic_indextest3 on migtest_e_basic (indextest3); +create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6); +create index ix_migtest_oto_child_name on migtest_oto_child (name); +drop index if exists ix_migtest_e_basic_indextest1; +drop index if exists ix_migtest_e_basic_indextest5; +drop index if exists idxd_migtest_0; +drop index concurrently if exists ix_migtest_oto_child_lowername_id; +drop index if exists ix_migtest_oto_child_lowername; +create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c on migtest_mtm_c_migtest_mtm_m (migtest_mtm_c_id); +alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; + +create index ix_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m on migtest_mtm_c_migtest_mtm_m (migtest_mtm_m_id); +alter table migtest_mtm_c_migtest_mtm_m add constraint fk_migtest_mtm_c_migtest_mtm_m_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict; + +create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m on migtest_mtm_m_migtest_mtm_c (migtest_mtm_m_id); +alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_m foreign key (migtest_mtm_m_id) references migtest_mtm_m (id) on delete restrict on update restrict; + +create index ix_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c on migtest_mtm_m_migtest_mtm_c (migtest_mtm_c_id); +alter table migtest_mtm_m_migtest_mtm_c add constraint fk_migtest_mtm_m_migtest_mtm_c_migtest_mtm_c foreign key (migtest_mtm_c_id) references migtest_mtm_c (id) on delete restrict on update restrict; + +create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id); +alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict; + +alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict; + +alter table migtest_e_history add column sys_period tstzrange not null default tstzrange(current_timestamp, null); +create table migtest_e_history_history(like migtest_e_history); +create view migtest_e_history_with_history as select * from migtest_e_history union all select * from migtest_e_history_history; + +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; + +create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; + +create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; + +create or replace function migtest_e_history_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +create trigger migtest_e_history_history_upd + before update or delete on migtest_e_history + for each row execute procedure migtest_e_history_history_version(); + +-- changes: [add test_string2, add test_string3, add new_column] +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column, obsolete_string1, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column, OLD.obsolete_string1, OLD.obsolete_string2); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [exclude test_string] +create or replace function migtest_e_history3_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history3_history (sys_period,id) values (tstzrange(lowerTs,upperTs), OLD.id); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [alter test_number] +create or replace function migtest_e_history4_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [add test_boolean] +create or replace function migtest_e_history5_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history5_history (sys_period,id, test_number, test_boolean) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number, OLD.test_boolean); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + diff --git a/src/test/resources/dbmigration/migrationtest/postgres9/1.2__dropsFor_1.1.sql b/src/test/resources/dbmigration/migrationtest/postgres9/1.2__dropsFor_1.1.sql new file mode 100644 index 000000000..c9a6d03e6 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres9/1.2__dropsFor_1.1.sql @@ -0,0 +1,40 @@ +-- Migrationscripts for ebean unittest +-- drop dependencies +drop view if exists migtest_e_history2_with_history; + +-- apply changes +alter table migtest_e_basic drop column old_boolean; + +alter table migtest_e_basic drop column old_boolean2; + +alter table migtest_e_basic drop column eref_id; + +alter table migtest_e_history2 drop column obsolete_string1; +alter table migtest_e_history2_history drop column obsolete_string1; + +alter table migtest_e_history2 drop column obsolete_string2; +alter table migtest_e_history2_history drop column obsolete_string2; + +drop table if exists migtest_e_ref cascade; +drop sequence if exists migtest_e_ref_seq; +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +-- changes: [drop obsolete_string1, drop obsolete_string2] +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.test_string3, OLD.new_column); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + diff --git a/src/test/resources/dbmigration/migrationtest/postgres9/1.3.sql b/src/test/resources/dbmigration/migrationtest/postgres9/1.3.sql new file mode 100644 index 000000000..80535c062 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres9/1.3.sql @@ -0,0 +1,141 @@ +-- Migrationscripts for ebean unittest +-- drop dependencies +drop view if exists migtest_e_history2_with_history; +drop view if exists migtest_e_history3_with_history; +drop view if exists migtest_e_history4_with_history; + +-- apply changes +create table migtest_e_ref ( + id bigserial not null, + name varchar(127) not null, + constraint uq_migtest_e_ref_name unique (name), + constraint pk_migtest_e_ref primary key (id) +); + +alter table if exists migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent; +alter table if exists migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id; +alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update cascade; +alter table if exists migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id; +alter table if exists migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id; +alter table if exists migtest_fk_set_null drop constraint if exists 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 on update set null; +alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; +alter table migtest_e_basic alter column status drop default; +alter table migtest_e_basic alter column status drop not 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 if exists ck_migtest_e_basic_status2; +alter table migtest_e_basic alter column status2 type varchar(1); +alter table migtest_e_basic alter column status2 set default 'N'; +alter table migtest_e_basic alter column status2 set 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; + +update migtest_e_basic set user_id = 23 where user_id is null; +alter table if exists migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id; +alter table migtest_e_basic alter column user_id set default 23; +alter table migtest_e_basic alter column user_id set not null; +alter table migtest_e_basic add column old_boolean boolean default false not null; +alter table migtest_e_basic add column old_boolean2 boolean; +alter table migtest_e_basic add column eref_id integer; + +alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1; +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; +alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); +alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); +alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status; +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 alter column test_string drop default; +alter table migtest_e_history2 alter column test_string drop not null; +alter table migtest_e_history2 add column obsolete_string1 varchar(255); +alter table migtest_e_history2 add column obsolete_string2 varchar(255); +alter table migtest_e_history2_history add column obsolete_string1 varchar(255); +alter table migtest_e_history2_history add column obsolete_string2 varchar(255); + +alter table migtest_e_history4 alter column test_number type integer; +alter table migtest_e_history4_history alter column test_number type integer; +alter table migtest_e_history6 alter column test_number1 drop default; +alter table migtest_e_history6 alter column test_number1 drop not null; + +-- NOTE: table has @History - special migration may be necessary +update migtest_e_history6 set test_number2 = 7 where test_number2 is null; +alter table migtest_e_history6 alter column test_number2 set default 7; +alter table migtest_e_history6 alter column test_number2 set not null; +create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); +create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); +create index ix_m12_otoc71 on migtest_oto_child (name); +create unique index uq_m12_otoc71 on migtest_oto_child (lower(name)); +create unique index ix_migtest_oto_master_lowername on migtest_oto_master (lower(name)); +drop index if exists ix_migtest_e_basic_indextest3; +drop index if exists ix_migtest_e_basic_indextest6; +create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); +alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict; + +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +create view migtest_e_history3_with_history as select * from migtest_e_history3 union all select * from migtest_e_history3_history; + +create view migtest_e_history4_with_history as select * from migtest_e_history4 union all select * from migtest_e_history4_history; + +-- changes: [add obsolete_string1, add obsolete_string2] +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2, test_string2, test_string3, new_column) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2, OLD.test_string2, OLD.test_string3, OLD.new_column); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [include test_string] +create or replace function migtest_e_history3_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history3_history (sys_period,id, test_string) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [alter test_number] +create or replace function migtest_e_history4_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history4_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + diff --git a/src/test/resources/dbmigration/migrationtest/postgres9/1.4__dropsFor_1.3.sql b/src/test/resources/dbmigration/migrationtest/postgres9/1.4__dropsFor_1.3.sql new file mode 100644 index 000000000..748ee959b --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres9/1.4__dropsFor_1.3.sql @@ -0,0 +1,91 @@ +-- Migrationscripts for ebean unittest +-- drop dependencies +drop trigger if exists migtest_e_history_history_upd on migtest_e_history cascade; +drop function if exists migtest_e_history_history_version(); + +drop view migtest_e_history_with_history; +alter table migtest_e_history drop column sys_period; +drop table migtest_e_history_history; + +drop view if exists migtest_e_history2_with_history; +drop view if exists migtest_e_history5_with_history; + +-- apply changes +alter table migtest_ckey_detail drop column one_key; + +alter table migtest_ckey_detail drop column two_key; + +alter table migtest_ckey_parent drop column assoc_id; + +alter table migtest_e_basic drop column new_string_field; + +alter table migtest_e_basic drop column new_boolean_field; + +alter table migtest_e_basic drop column new_boolean_field2; + +alter table migtest_e_basic drop column progress; + +alter table migtest_e_basic drop column new_integer; + +alter table migtest_e_history2 drop column test_string2; +alter table migtest_e_history2_history drop column test_string2; + +alter table migtest_e_history2 drop column test_string3; +alter table migtest_e_history2_history drop column test_string3; + +alter table migtest_e_history2 drop column new_column; +alter table migtest_e_history2_history drop column new_column; + +alter table migtest_e_history5 drop column test_boolean; +alter table migtest_e_history5_history drop column test_boolean; + +alter table migtest_e_softdelete drop column deleted; + +alter table migtest_oto_child drop column master_id; + +drop table if exists migtest_e_user cascade; +drop sequence if exists migtest_e_user_seq; +drop table if exists migtest_mtm_c_migtest_mtm_m cascade; +drop table if exists migtest_mtm_m_migtest_mtm_c cascade; +create view migtest_e_history2_with_history as select * from migtest_e_history2 union all select * from migtest_e_history2_history; + +create view migtest_e_history5_with_history as select * from migtest_e_history5 union all select * from migtest_e_history5_history; + +-- changes: [drop test_string2, drop test_string3, drop new_column] +create or replace function migtest_e_history2_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history2_history (sys_period,id, test_string, obsolete_string2) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_string, OLD.obsolete_string2); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + +-- changes: [drop test_boolean] +create or replace function migtest_e_history5_history_version() returns trigger as $$ +declare + lowerTs timestamptz; + upperTs timestamptz; +begin + lowerTs = lower(OLD.sys_period); + upperTs = greatest(lowerTs + '1 microsecond',current_timestamp); + if (TG_OP = 'UPDATE') then + insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + NEW.sys_period = tstzrange(upperTs,null); + return new; + elsif (TG_OP = 'DELETE') then + insert into migtest_e_history5_history (sys_period,id, test_number) values (tstzrange(lowerTs,upperTs), OLD.id, OLD.test_number); + return old; + end if; +end; +$$ LANGUAGE plpgsql; + diff --git a/src/test/resources/dbmigration/migrationtest/postgres9/R__multi_comments.sql b/src/test/resources/dbmigration/migrationtest/postgres9/R__multi_comments.sql new file mode 100644 index 000000000..0ede0c9eb --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres9/R__multi_comments.sql @@ -0,0 +1,3 @@ + + -- h2 and postgres script + \ No newline at end of file diff --git a/src/test/resources/dbmigration/migrationtest/postgres9/R__order_views.sql b/src/test/resources/dbmigration/migrationtest/postgres9/R__order_views.sql new file mode 100644 index 000000000..ccf30a2c6 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres9/R__order_views.sql @@ -0,0 +1,7 @@ + + create or replace view order_agg_vw as + select d.order_id, sum(d.order_qty * d.unit_price) as order_total, + sum(d.ship_qty * d.unit_price) as ship_total + from o_order_detail d + group by d.order_id + \ No newline at end of file diff --git a/src/test/resources/dbmigration/migrationtest/postgres9/R__pg_indexes.sql b/src/test/resources/dbmigration/migrationtest/postgres9/R__pg_indexes.sql new file mode 100644 index 000000000..fa0bab998 --- /dev/null +++ b/src/test/resources/dbmigration/migrationtest/postgres9/R__pg_indexes.sql @@ -0,0 +1,4 @@ + + -- postgres specific indexes + create index ix_ebasic_jmjb_gin2 on ebasic_json_map_json_b using gin(content jsonb_path_ops); + \ No newline at end of file diff --git a/src/test/resources/ebean.properties b/src/test/resources/ebean.properties index 3494a3750..21941d391 100644 --- a/src/test/resources/ebean.properties +++ b/src/test/resources/ebean.properties @@ -162,6 +162,12 @@ datasource.pg.databaseDriver=org.postgresql.Driver #datasource.pg.capturestacktrace=true datasource.pg.maxStackTraceSize=50 +datasource.pg9.username=unit +datasource.pg9.password=unit +datasource.pg9.databaseUrl=jdbc:postgresql://127.0.0.1:9432/unit +datasource.pg9.databaseDriver=org.postgresql.Driver + + #ebean.sqlserver.idType=SEQUENCE # Our main testing target for SqlServer is sqlserver17 ebean.sqlserver.databasePlatformName=sqlserver17