From 1c24ebf6dcaedbe709b8bed4e13ff764531eaf13 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Wed, 4 Mar 2020 23:32:25 +1300 Subject: [PATCH 1/2] Remove Sequence batching in favour of JPA increment 50 Also remove h2sqldb in favour of always using H2 --- .../java/io/ebean/config/PlatformConfig.java | 21 --- .../java/io/ebean/config/ServerConfig.java | 38 ---- .../config/dbplatform/DatabasePlatform.java | 31 +--- .../dbplatform/SequenceBatchIdGenerator.java | 57 ------ .../dbplatform/SequenceIdGenerator.java | 18 +- .../dbplatform/SequenceStepIdGenerator.java | 12 +- .../config/dbplatform/db2/DB2Platform.java | 5 +- .../config/dbplatform/db2/DB2Sequence.java | 17 ++ .../db2/DB2SequenceIdGenerator.java | 35 ---- .../config/dbplatform/h2/H2DbSequence.java | 14 ++ .../config/dbplatform/h2/H2Platform.java | 8 +- .../dbplatform/h2/H2SequenceIdGenerator.java | 35 ---- .../dbplatform/hsqldb/HsqldbPlatform.java | 38 ---- .../dbplatform/hsqldb/package-info.java | 4 - .../dbplatform/nuodb/NuoDbPlatform.java | 4 +- .../dbplatform/nuodb/NuoDbSequence.java | 16 +- .../dbplatform/oracle/OracleDbSequence.java | 14 ++ .../dbplatform/oracle/OraclePlatform.java | 4 +- .../oracle/OracleSequenceIdGenerator.java | 27 --- .../postgres/PostgresDbSequence.java | 14 ++ .../dbplatform/postgres/PostgresPlatform.java | 5 +- .../postgres/PostgresSequenceIdGenerator.java | 27 --- .../sqlserver/SqlServerBasePlatform.java | 8 +- .../sqlserver/SqlServerDbSequence.java | 13 ++ .../sqlserver/SqlServerStepSequence.java | 24 --- .../dbmigration/DefaultDbMigration.java | 3 - .../server/core/DatabasePlatformFactory.java | 3 - .../server/deploy/BeanDescriptorManager.java | 8 +- .../deploy/meta/DeployBeanDescriptor.java | 7 +- .../deploy/meta/DeployIdentityMode.java | 7 +- .../SequenceBatchIdGeneratorTest.java | 6 +- ...Test.java => SqlServerDbSequenceTest.java} | 6 +- .../dbmigration/DbMigrationGenerateTest.java | 1 - .../migrationtest/hsqldb/1.0__initial.sql | 174 ------------------ .../dbmigration/migrationtest/hsqldb/1.1.sql | 110 ----------- .../hsqldb/1.2__dropsFor_1.1.sql | 14 -- .../dbmigration/migrationtest/hsqldb/1.3.sql | 67 ------- .../hsqldb/1.4__dropsFor_1.3.sql | 34 ---- .../hsqldb/R__order_views_hsqldb.sql | 8 - 39 files changed, 125 insertions(+), 812 deletions(-) delete mode 100644 src/main/java/io/ebean/config/dbplatform/SequenceBatchIdGenerator.java create mode 100644 src/main/java/io/ebean/config/dbplatform/db2/DB2Sequence.java delete mode 100644 src/main/java/io/ebean/config/dbplatform/db2/DB2SequenceIdGenerator.java create mode 100644 src/main/java/io/ebean/config/dbplatform/h2/H2DbSequence.java delete mode 100644 src/main/java/io/ebean/config/dbplatform/h2/H2SequenceIdGenerator.java delete mode 100644 src/main/java/io/ebean/config/dbplatform/hsqldb/HsqldbPlatform.java delete mode 100644 src/main/java/io/ebean/config/dbplatform/hsqldb/package-info.java create mode 100644 src/main/java/io/ebean/config/dbplatform/oracle/OracleDbSequence.java delete mode 100644 src/main/java/io/ebean/config/dbplatform/oracle/OracleSequenceIdGenerator.java create mode 100644 src/main/java/io/ebean/config/dbplatform/postgres/PostgresDbSequence.java delete mode 100644 src/main/java/io/ebean/config/dbplatform/postgres/PostgresSequenceIdGenerator.java create mode 100644 src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerDbSequence.java delete mode 100644 src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerStepSequence.java rename src/test/java/io/ebean/config/dbplatform/sqlserver/{SqlServerStepSequenceTest.java => SqlServerDbSequenceTest.java} (87%) delete mode 100644 src/test/resources/dbmigration/migrationtest/hsqldb/1.0__initial.sql delete mode 100644 src/test/resources/dbmigration/migrationtest/hsqldb/1.1.sql delete mode 100644 src/test/resources/dbmigration/migrationtest/hsqldb/1.2__dropsFor_1.1.sql delete mode 100644 src/test/resources/dbmigration/migrationtest/hsqldb/1.3.sql delete mode 100644 src/test/resources/dbmigration/migrationtest/hsqldb/1.4__dropsFor_1.3.sql delete mode 100644 src/test/resources/dbmigration/migrationtest/hsqldb/R__order_views_hsqldb.sql diff --git a/src/main/java/io/ebean/config/PlatformConfig.java b/src/main/java/io/ebean/config/PlatformConfig.java index e9578e83c3..c728744cb5 100644 --- a/src/main/java/io/ebean/config/PlatformConfig.java +++ b/src/main/java/io/ebean/config/PlatformConfig.java @@ -34,11 +34,6 @@ public class PlatformConfig { */ private String databaseBooleanFalse; - /** - * For DB's using sequences this is the number of sequence values prefetched. - */ - private int databaseSequenceBatchSize = 20; - /** * Set for DB's that support both Sequence and Identity (and the default choice is not desired). */ @@ -79,7 +74,6 @@ public PlatformConfig() { public PlatformConfig(PlatformConfig platformConfig) { this.databaseBooleanFalse = platformConfig.databaseBooleanFalse; this.databaseBooleanTrue = platformConfig.databaseBooleanTrue; - this.databaseSequenceBatchSize = platformConfig.databaseSequenceBatchSize; this.idType = platformConfig.idType; this.geometrySRID = platformConfig.geometrySRID; this.dbUuid = platformConfig.dbUuid; @@ -173,20 +167,6 @@ public void setDatabaseBooleanFalse(String databaseBooleanFalse) { this.databaseBooleanFalse = databaseBooleanFalse; } - /** - * Return the number of DB sequence values that should be preallocated. - */ - public int getDatabaseSequenceBatchSize() { - return databaseSequenceBatchSize; - } - - /** - * Set the number of DB sequence values that should be preallocated. - */ - public void setDatabaseSequenceBatchSize(int databaseSequenceBatchSize) { - this.databaseSequenceBatchSize = databaseSequenceBatchSize; - } - /** * Return the Geometry SRID. */ @@ -294,7 +274,6 @@ public List getCustomTypeMappings() { public void loadSettings(PropertiesWrapper p) { idType = p.getEnum(IdType.class, "idType", idType); - databaseSequenceBatchSize = p.getInt("databaseSequenceBatchSize", databaseSequenceBatchSize); databaseBooleanTrue = p.get("databaseBooleanTrue", databaseBooleanTrue); databaseBooleanFalse = p.get("databaseBooleanFalse", databaseBooleanFalse); databaseInetAddressVarchar = p.getBoolean("databaseInetAddressVarchar", databaseInetAddressVarchar); diff --git a/src/main/java/io/ebean/config/ServerConfig.java b/src/main/java/io/ebean/config/ServerConfig.java index 9ba10c287f..64be1d42b4 100644 --- a/src/main/java/io/ebean/config/ServerConfig.java +++ b/src/main/java/io/ebean/config/ServerConfig.java @@ -1050,18 +1050,6 @@ public void setLazyLoadBatchSize(int lazyLoadBatchSize) { this.lazyLoadBatchSize = lazyLoadBatchSize; } - /** - * Set the number of sequences to fetch/preallocate when using DB sequences. - *

- * This is a performance optimisation to reduce the number times Ebean - * requests a sequence to be used as an Id for a bean (aka reduce network - * chatter). - *

- */ - public void setDatabaseSequenceBatchSize(int databaseSequenceBatchSize) { - platformConfig.setDatabaseSequenceBatchSize(databaseSequenceBatchSize); - } - /** * Return the default JDBC fetchSize hint for findList queries. */ @@ -1828,32 +1816,6 @@ public void setDatabaseBooleanFalse(String databaseFalse) { this.platformConfig.setDatabaseBooleanFalse(databaseFalse); } - /** - * Return the number of DB sequence values that should be preallocated. - */ - public int getDatabaseSequenceBatchSize() { - return platformConfig.getDatabaseSequenceBatchSize(); - } - - /** - * Set the number of DB sequence values that should be preallocated and cached - * by Ebean. - *

- * This is only used for DB's that use sequences and is a performance - * optimisation. This reduces the number of times Ebean needs to get a - * sequence value from the Database reducing network chatter. - *

- *

- * By default this value is 10 so when we need another Id (and don't have one - * in our cache) Ebean will fetch 10 id's from the database. Note that when - * the cache drops to have full (which is 5 by default) Ebean will fetch - * another batch of Id's in a background thread. - *

- */ - public void setDatabaseSequenceBatch(int databaseSequenceBatchSize) { - this.platformConfig.setDatabaseSequenceBatchSize(databaseSequenceBatchSize); - } - /** * Return the database platform name (can be null). *

diff --git a/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java b/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java index b97adadc76..e5a6e553a9 100644 --- a/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/DatabasePlatform.java @@ -110,10 +110,6 @@ public enum OnQueryOnly { */ protected DbIdentity dbIdentity = new DbIdentity(); - protected boolean sequenceBatchMode = true; - - protected int sequenceBatchSize = 20; - /** * The history support for this database platform. */ @@ -235,7 +231,6 @@ public PersistenceException translate(String message, SQLException e) { * Configure the platform given the server configuration. */ public void configure(PlatformConfig config) { - this.sequenceBatchSize = config.getDatabaseSequenceBatchSize(); this.caseSensitiveCollation = config.isCaseSensitiveCollation(); configureIdType(config.getIdType()); configure(config, config.isAllQuotedIdentifiers()); @@ -298,20 +293,6 @@ public String getName() { return platform.name().toLowerCase(); } - /** - * Return true if we are using Sequence batch mode rather than STEP. - */ - public boolean isSequenceBatchMode() { - return sequenceBatchMode; - } - - /** - * Set to false to not use sequence batch mode but instead STEP mode. - */ - public void setSequenceBatchMode(boolean sequenceBatchMode) { - this.sequenceBatchMode = sequenceBatchMode; - } - /** * Return true if this database platform supports native ILIKE expression. */ @@ -381,13 +362,13 @@ public boolean useExtraTransactionOnIterateSecondaryQueries() { /** * Return a DB Sequence based IdGenerator. * - * @param be the BackgroundExecutor that can be used to load the sequence if - * desired - * @param ds the DataSource - * @param stepSize the sequence allocation size as defined by mapping (defaults to 50) - * @param seqName the name of the sequence + * @param be the BackgroundExecutor that can be used to load the sequence if + * desired + * @param ds the DataSource + * @param increment the sequence allocation size as defined by mapping (defaults to 50) + * @param seqName the name of the sequence */ - public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) { + public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int increment, String seqName) { return null; } diff --git a/src/main/java/io/ebean/config/dbplatform/SequenceBatchIdGenerator.java b/src/main/java/io/ebean/config/dbplatform/SequenceBatchIdGenerator.java deleted file mode 100644 index 683203b8cd..0000000000 --- a/src/main/java/io/ebean/config/dbplatform/SequenceBatchIdGenerator.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.ebean.config.dbplatform; - -import io.ebean.BackgroundExecutor; - -import javax.sql.DataSource; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -/** - * Database sequence based IdGenerator using Sequence Step 1 but batch fetch many sequence values. - */ -public abstract class SequenceBatchIdGenerator extends SequenceIdGenerator { - - /** - * Construct where batchSize is the sequence step size. - * - */ - public SequenceBatchIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int batchSize) { - super(be, ds, seqName, batchSize); - } - - /** - * If allocateSize is large load some sequences in a background thread. - *

- * For example, when inserting a bean with a cascade on a OneToMany with many - * beans Ebean can call this to ensure . - *

- */ - @Override - public void preAllocateIds(int requestSize) { - if (allocationSize > 1 && requestSize > allocationSize) { - // only bother if allocateSize is bigger than - // the normal loading batchSize - if (requestSize > 100) { - // max out at 100 for now - requestSize = 100; - } - loadInBackground(requestSize); - } - } - - /** - * Add the next set of Ids as the next value plus all the following numbers up to the step size. - */ - @Override - protected List readIds(ResultSet resultSet, int loadSize) throws SQLException { - - List newIds = new ArrayList<>(loadSize); - while (resultSet.next()) { - newIds.add(resultSet.getLong(1)); - } - return newIds; - } - -} diff --git a/src/main/java/io/ebean/config/dbplatform/SequenceIdGenerator.java b/src/main/java/io/ebean/config/dbplatform/SequenceIdGenerator.java index 703fa79583..2524018556 100644 --- a/src/main/java/io/ebean/config/dbplatform/SequenceIdGenerator.java +++ b/src/main/java/io/ebean/config/dbplatform/SequenceIdGenerator.java @@ -59,7 +59,7 @@ protected SequenceIdGenerator(BackgroundExecutor be, DataSource ds, String seqNa this.allocationSize = allocationSize; } - public abstract String getSql(int batchSize); + public abstract String getSql(); /** * Returns the sequence name. @@ -102,7 +102,7 @@ public Object nextId(Transaction t) { if (size > 0) { maybeLoadMoreInBackground(size); } else { - loadMore(allocationSize); + loadMore(); } return idList.pollFirst(); } @@ -116,8 +116,8 @@ private void maybeLoadMoreInBackground(int currentSize) { } } - private void loadMore(int requestSize) { - List newIds = getMoreIds(requestSize); + private void loadMore() { + List newIds = getMoreIds(); synchronized (monitor) { idList.addAll(newIds); } @@ -139,7 +139,7 @@ protected void loadInBackground(final int requestSize) { currentlyBackgroundLoading = true; backgroundExecutor.execute(() -> { - loadMore(requestSize); + loadMore(); synchronized (backgroundLoadMonitor) { currentlyBackgroundLoading = false; } @@ -150,14 +150,14 @@ protected void loadInBackground(final int requestSize) { /** * Read the resultSet returning the list of Id values. */ - protected abstract List readIds(ResultSet resultSet, int loadSize) throws SQLException; + protected abstract List readIds(ResultSet resultSet) throws SQLException; /** * Get more Id's by executing a query and reading the Id's returned. */ - protected List getMoreIds(int requestSize) { + protected List getMoreIds() { - String sql = getSql(requestSize); + String sql = getSql(); Connection connection = null; PreparedStatement statement = null; @@ -168,7 +168,7 @@ protected List getMoreIds(int requestSize) { statement = connection.prepareStatement(sql); resultSet = statement.executeQuery(); - List newIds = readIds(resultSet, requestSize); + List newIds = readIds(resultSet); if (logger.isTraceEnabled()) { logger.trace("seq:{} loaded:{} sql:{}", seqName, newIds.size(), sql); } diff --git a/src/main/java/io/ebean/config/dbplatform/SequenceStepIdGenerator.java b/src/main/java/io/ebean/config/dbplatform/SequenceStepIdGenerator.java index c4039a6f29..e6d4679793 100644 --- a/src/main/java/io/ebean/config/dbplatform/SequenceStepIdGenerator.java +++ b/src/main/java/io/ebean/config/dbplatform/SequenceStepIdGenerator.java @@ -13,19 +13,25 @@ */ public abstract class SequenceStepIdGenerator extends SequenceIdGenerator { + private final String nextSql; /** * Construct with stepSize (typically 50). */ - protected SequenceStepIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { + protected SequenceStepIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int stepSize, String nextSql) { super(be, ds, seqName, stepSize); + this.nextSql = nextSql; + } + + @Override + public String getSql() { + return nextSql; } /** * Add the next set of Ids as the next value plus all the following numbers up to the step size. */ @Override - protected List readIds(ResultSet resultSet, int ignoreRequestSize) throws SQLException { - + protected List readIds(ResultSet resultSet) throws SQLException { List newIds = new ArrayList<>(allocationSize); if (resultSet.next()) { long start = resultSet.getLong(1); diff --git a/src/main/java/io/ebean/config/dbplatform/db2/DB2Platform.java b/src/main/java/io/ebean/config/dbplatform/db2/DB2Platform.java index df76c60649..ef39972cad 100644 --- a/src/main/java/io/ebean/config/dbplatform/db2/DB2Platform.java +++ b/src/main/java/io/ebean/config/dbplatform/db2/DB2Platform.java @@ -52,9 +52,8 @@ public DB2Platform() { * sequence values. */ @Override - public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) { - - return new DB2SequenceIdGenerator(be, ds, seqName, sequenceBatchSize); + public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int increment, String seqName) { + return new DB2Sequence(be, ds, seqName, increment); } } diff --git a/src/main/java/io/ebean/config/dbplatform/db2/DB2Sequence.java b/src/main/java/io/ebean/config/dbplatform/db2/DB2Sequence.java new file mode 100644 index 0000000000..18900a6deb --- /dev/null +++ b/src/main/java/io/ebean/config/dbplatform/db2/DB2Sequence.java @@ -0,0 +1,17 @@ +package io.ebean.config.dbplatform.db2; + +import io.ebean.BackgroundExecutor; +import io.ebean.config.dbplatform.SequenceStepIdGenerator; + +import javax.sql.DataSource; + +/** + * DB2 specific sequence Id Generator. + */ +class DB2Sequence extends SequenceStepIdGenerator { + + DB2Sequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { + super(be, ds, seqName, stepSize, "values nextval for " + seqName); + } + +} diff --git a/src/main/java/io/ebean/config/dbplatform/db2/DB2SequenceIdGenerator.java b/src/main/java/io/ebean/config/dbplatform/db2/DB2SequenceIdGenerator.java deleted file mode 100644 index a5170a759d..0000000000 --- a/src/main/java/io/ebean/config/dbplatform/db2/DB2SequenceIdGenerator.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.ebean.config.dbplatform.db2; - -import io.ebean.BackgroundExecutor; -import io.ebean.config.dbplatform.SequenceBatchIdGenerator; - -import javax.sql.DataSource; - -/** - * DB2 specific sequence Id Generator. - */ -public class DB2SequenceIdGenerator extends SequenceBatchIdGenerator { - - private final String baseSql; - private final String unionBaseSql; - - /** - * Construct given a dataSource and sql to return the next sequence value. - */ - public DB2SequenceIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int batchSize) { - super(be, ds, seqName, batchSize); - this.baseSql = "values nextval for " + seqName; - this.unionBaseSql = " union " + baseSql; - } - - @Override - public String getSql(int batchSize) { - - StringBuilder sb = new StringBuilder(); - sb.append(baseSql); - for (int i = 1; i < batchSize; i++) { - sb.append(unionBaseSql); - } - return sb.toString(); - } -} diff --git a/src/main/java/io/ebean/config/dbplatform/h2/H2DbSequence.java b/src/main/java/io/ebean/config/dbplatform/h2/H2DbSequence.java new file mode 100644 index 0000000000..e767bcb54a --- /dev/null +++ b/src/main/java/io/ebean/config/dbplatform/h2/H2DbSequence.java @@ -0,0 +1,14 @@ +package io.ebean.config.dbplatform.h2; + +import io.ebean.BackgroundExecutor; +import io.ebean.config.dbplatform.SequenceStepIdGenerator; + +import javax.sql.DataSource; + +class H2DbSequence extends SequenceStepIdGenerator { + + H2DbSequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { + super(be, ds, seqName, stepSize, "select " + seqName + ".nextval"); + } + +} diff --git a/src/main/java/io/ebean/config/dbplatform/h2/H2Platform.java b/src/main/java/io/ebean/config/dbplatform/h2/H2Platform.java index dd0cfde1ac..530cfe992a 100644 --- a/src/main/java/io/ebean/config/dbplatform/h2/H2Platform.java +++ b/src/main/java/io/ebean/config/dbplatform/h2/H2Platform.java @@ -42,13 +42,9 @@ public H2Platform() { dbTypeMap.put(DbType.UUID, new DbPlatformType("uuid", false)); } - /** - * Return a H2 specific sequence IdGenerator that supports batch fetching - * sequence values. - */ @Override - public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) { - return new H2SequenceIdGenerator(be, ds, seqName, sequenceBatchSize); + public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int increment, String seqName) { + return new H2DbSequence(be, ds, seqName, increment); } @Override diff --git a/src/main/java/io/ebean/config/dbplatform/h2/H2SequenceIdGenerator.java b/src/main/java/io/ebean/config/dbplatform/h2/H2SequenceIdGenerator.java deleted file mode 100644 index b4e875511d..0000000000 --- a/src/main/java/io/ebean/config/dbplatform/h2/H2SequenceIdGenerator.java +++ /dev/null @@ -1,35 +0,0 @@ -package io.ebean.config.dbplatform.h2; - -import io.ebean.BackgroundExecutor; -import io.ebean.config.dbplatform.SequenceBatchIdGenerator; - -import javax.sql.DataSource; - -/** - * H2 specific sequence Id Generator. - */ -public class H2SequenceIdGenerator extends SequenceBatchIdGenerator { - - private final String baseSql; - private final String unionBaseSql; - - /** - * Construct given a dataSource and sql to return the next sequence value. - */ - public H2SequenceIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int batchSize) { - super(be, ds, seqName, batchSize); - this.baseSql = "select " + seqName + ".nextval"; - this.unionBaseSql = " union " + baseSql; - } - - @Override - public String getSql(int batchSize) { - - StringBuilder sb = new StringBuilder(); - sb.append(baseSql); - for (int i = 1; i < batchSize; i++) { - sb.append(unionBaseSql); - } - return sb.toString(); - } -} diff --git a/src/main/java/io/ebean/config/dbplatform/hsqldb/HsqldbPlatform.java b/src/main/java/io/ebean/config/dbplatform/hsqldb/HsqldbPlatform.java deleted file mode 100644 index b8cb1e0dd7..0000000000 --- a/src/main/java/io/ebean/config/dbplatform/hsqldb/HsqldbPlatform.java +++ /dev/null @@ -1,38 +0,0 @@ -package io.ebean.config.dbplatform.hsqldb; - -import io.ebean.BackgroundExecutor; -import io.ebean.annotation.Platform; -import io.ebean.config.dbplatform.DatabasePlatform; -import io.ebean.config.dbplatform.DbPlatformType; -import io.ebean.config.dbplatform.DbType; -import io.ebean.config.dbplatform.IdType; -import io.ebean.config.dbplatform.PlatformIdGenerator; -import io.ebean.config.dbplatform.h2.H2DbEncrypt; -import io.ebean.config.dbplatform.h2.H2SequenceIdGenerator; - -import javax.sql.DataSource; - -/** - * H2 specific platform. - */ -public class HsqldbPlatform extends DatabasePlatform { - - public HsqldbPlatform() { - super(); - this.platform = Platform.HSQLDB; - this.dbEncrypt = new H2DbEncrypt(); - this.truncateTable = "delete from %s"; - this.dbIdentity.setIdType(IdType.IDENTITY); - this.dbIdentity.setSupportsGetGeneratedKeys(true); - this.dbIdentity.setSupportsSequence(true); - this.dbIdentity.setSupportsIdentity(true); - - dbTypeMap.put(DbType.INTEGER, new DbPlatformType("integer", false)); - } - - @Override - public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) { - return new H2SequenceIdGenerator(be, ds, seqName, sequenceBatchSize); - } - -} diff --git a/src/main/java/io/ebean/config/dbplatform/hsqldb/package-info.java b/src/main/java/io/ebean/config/dbplatform/hsqldb/package-info.java deleted file mode 100644 index 6a5ddf7528..0000000000 --- a/src/main/java/io/ebean/config/dbplatform/hsqldb/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Hsqldb specific support. - */ -package io.ebean.config.dbplatform.hsqldb; diff --git a/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbPlatform.java b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbPlatform.java index fb4a264a81..8a7370acfd 100644 --- a/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbPlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbPlatform.java @@ -44,8 +44,8 @@ public NuoDbPlatform() { } @Override - public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) { - return new NuoDbSequence(be, ds, seqName, stepSize); + public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int increment, String seqName) { + return new NuoDbSequence(be, ds, seqName, increment); } @Override diff --git a/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbSequence.java b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbSequence.java index 6767231c40..d674458e7c 100644 --- a/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbSequence.java +++ b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbSequence.java @@ -5,20 +5,10 @@ import javax.sql.DataSource; -public class NuoDbSequence extends SequenceStepIdGenerator { +class NuoDbSequence extends SequenceStepIdGenerator { - private final String nextSql; - - /** - * Construct where batchSize is the sequence step size. - */ - public NuoDbSequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { - super(be, ds, seqName, stepSize); - this.nextSql = "select next value for " + seqName + " from dual"; + NuoDbSequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { + super(be, ds, seqName, stepSize, "select next value for " + seqName + " from dual"); } - @Override - public String getSql(int batchSize) { - return nextSql; - } } diff --git a/src/main/java/io/ebean/config/dbplatform/oracle/OracleDbSequence.java b/src/main/java/io/ebean/config/dbplatform/oracle/OracleDbSequence.java new file mode 100644 index 0000000000..d05bc91133 --- /dev/null +++ b/src/main/java/io/ebean/config/dbplatform/oracle/OracleDbSequence.java @@ -0,0 +1,14 @@ +package io.ebean.config.dbplatform.oracle; + +import io.ebean.BackgroundExecutor; +import io.ebean.config.dbplatform.SequenceStepIdGenerator; + +import javax.sql.DataSource; + +class OracleDbSequence extends SequenceStepIdGenerator { + + OracleDbSequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { + super(be, ds, seqName, stepSize, "select " + seqName + ".nextval from dual"); + } + +} diff --git a/src/main/java/io/ebean/config/dbplatform/oracle/OraclePlatform.java b/src/main/java/io/ebean/config/dbplatform/oracle/OraclePlatform.java index ab39dbf0d1..4fef09872f 100644 --- a/src/main/java/io/ebean/config/dbplatform/oracle/OraclePlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/oracle/OraclePlatform.java @@ -76,8 +76,8 @@ public OraclePlatform() { } @Override - public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) { - return new OracleSequenceIdGenerator(be, ds, seqName, sequenceBatchSize); + public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int increment, String seqName) { + return new OracleDbSequence(be, ds, seqName, increment); } @Override diff --git a/src/main/java/io/ebean/config/dbplatform/oracle/OracleSequenceIdGenerator.java b/src/main/java/io/ebean/config/dbplatform/oracle/OracleSequenceIdGenerator.java deleted file mode 100644 index 32dd7a28ec..0000000000 --- a/src/main/java/io/ebean/config/dbplatform/oracle/OracleSequenceIdGenerator.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.ebean.config.dbplatform.oracle; - -import io.ebean.BackgroundExecutor; -import io.ebean.config.dbplatform.SequenceBatchIdGenerator; - -import javax.sql.DataSource; - -/** - * Oracle specific sequence Id Generator. - */ -public class OracleSequenceIdGenerator extends SequenceBatchIdGenerator { - - private final String baseSql; - - /** - * Construct given a dataSource and sql to return the next sequence value. - */ - public OracleSequenceIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int batchSize) { - super(be, ds, seqName, batchSize); - this.baseSql = "select " + seqName + ".nextval, a from (select level as a FROM dual CONNECT BY level <= "; - } - - @Override - public String getSql(int batchSize) { - return baseSql + batchSize + ")"; - } -} diff --git a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresDbSequence.java b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresDbSequence.java new file mode 100644 index 0000000000..ebff5a63f0 --- /dev/null +++ b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresDbSequence.java @@ -0,0 +1,14 @@ +package io.ebean.config.dbplatform.postgres; + +import io.ebean.BackgroundExecutor; +import io.ebean.config.dbplatform.SequenceStepIdGenerator; + +import javax.sql.DataSource; + +class PostgresDbSequence extends SequenceStepIdGenerator { + + PostgresDbSequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { + super(be, ds, seqName, stepSize, "select nextval('\" + seqName + \"')"); + } + +} 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 5b4a5d0448..37ce701ccb 100644 --- a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresPlatform.java @@ -109,9 +109,8 @@ public boolean isNativeArrayType() { * Create a Postgres specific sequence IdGenerator. */ @Override - public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) { - - return new PostgresSequenceIdGenerator(be, ds, seqName, sequenceBatchSize); + public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int increment, String seqName) { + return new PostgresDbSequence(be, ds, seqName, increment); } @Override diff --git a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresSequenceIdGenerator.java b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresSequenceIdGenerator.java deleted file mode 100644 index 4550c926dd..0000000000 --- a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresSequenceIdGenerator.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.ebean.config.dbplatform.postgres; - -import io.ebean.BackgroundExecutor; -import io.ebean.config.dbplatform.SequenceBatchIdGenerator; - -import javax.sql.DataSource; - -/** - * Postgres specific sequence Id Generator. - */ -public class PostgresSequenceIdGenerator extends SequenceBatchIdGenerator { - - private final String baseSql; - - /** - * Construct given a dataSource and sql to return the next sequence value. - */ - public PostgresSequenceIdGenerator(BackgroundExecutor be, DataSource ds, String seqName, int batchSize) { - super(be, ds, seqName, batchSize); - this.baseSql = "select nextval('" + seqName + "'), s.generate_series from (select generate_series from generate_series(1,"; - } - - @Override - public String getSql(int batchSize) { - return baseSql + batchSize + ") ) as s"; - } -} diff --git a/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerBasePlatform.java b/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerBasePlatform.java index b79c694134..a8e3f5c6d0 100644 --- a/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerBasePlatform.java +++ b/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerBasePlatform.java @@ -36,7 +36,6 @@ abstract class SqlServerBasePlatform extends DatabasePlatform { this.dbIdentity.setSupportsGetGeneratedKeys(true); this.dbIdentity.setSupportsIdentity(true); this.dbIdentity.setSupportsSequence(true); - this.sequenceBatchMode = false; this.exceptionTranslator = new SqlErrorCodes() @@ -95,12 +94,9 @@ protected void escapeLikeCharacter(char ch, StringBuilder sb) { sb.append('[').append(ch).append(']'); } - /** - * Create a Postgres specific sequence IdGenerator. - */ @Override - public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) { - return new SqlServerStepSequence(be, ds, seqName, stepSize); + public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int increment, String seqName) { + return new SqlServerDbSequence(be, ds, seqName, increment); } /** diff --git a/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerDbSequence.java b/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerDbSequence.java new file mode 100644 index 0000000000..a4d38d1f85 --- /dev/null +++ b/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerDbSequence.java @@ -0,0 +1,13 @@ +package io.ebean.config.dbplatform.sqlserver; + +import io.ebean.BackgroundExecutor; +import io.ebean.config.dbplatform.SequenceStepIdGenerator; + +import javax.sql.DataSource; + +class SqlServerDbSequence extends SequenceStepIdGenerator { + + SqlServerDbSequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { + super(be, ds, seqName, stepSize, "select next value for " + seqName); + } +} diff --git a/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerStepSequence.java b/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerStepSequence.java deleted file mode 100644 index d9a53a9f7f..0000000000 --- a/src/main/java/io/ebean/config/dbplatform/sqlserver/SqlServerStepSequence.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.ebean.config.dbplatform.sqlserver; - -import io.ebean.BackgroundExecutor; -import io.ebean.config.dbplatform.SequenceStepIdGenerator; - -import javax.sql.DataSource; - -public class SqlServerStepSequence extends SequenceStepIdGenerator { - - private final String nextSql; - - /** - * Construct where batchSize is the sequence step size. - */ - public SqlServerStepSequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { - super(be, ds, seqName, stepSize); - this.nextSql = "select next value for "+seqName; - } - - @Override - public String getSql(int batchSize) { - return nextSql; - } -} diff --git a/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java b/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java index 7b36be18b0..500b870e77 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java +++ b/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java @@ -14,7 +14,6 @@ import io.ebean.config.dbplatform.db2.DB2Platform; import io.ebean.config.dbplatform.h2.H2Platform; import io.ebean.config.dbplatform.hana.HanaPlatform; -import io.ebean.config.dbplatform.hsqldb.HsqldbPlatform; import io.ebean.config.dbplatform.mysql.MySql55Platform; import io.ebean.config.dbplatform.mysql.MySqlPlatform; import io.ebean.config.dbplatform.nuodb.NuoDbPlatform; @@ -814,8 +813,6 @@ protected DatabasePlatform getPlatform(Platform platform) { switch (platform) { case H2: return new H2Platform(); - case HSQLDB: - return new HsqldbPlatform(); case POSTGRES9: return new Postgres9Platform(); case POSTGRES: diff --git a/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java b/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java index 15858e8d9c..20ac919b9f 100644 --- a/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java +++ b/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java @@ -7,7 +7,6 @@ import io.ebean.config.dbplatform.db2.DB2Platform; import io.ebean.config.dbplatform.h2.H2Platform; import io.ebean.config.dbplatform.hana.HanaPlatform; -import io.ebean.config.dbplatform.hsqldb.HsqldbPlatform; import io.ebean.config.dbplatform.mysql.MySql55Platform; import io.ebean.config.dbplatform.mysql.MySqlPlatform; import io.ebean.config.dbplatform.nuodb.NuoDbPlatform; @@ -164,8 +163,6 @@ private DatabasePlatform byDatabaseMeta(DatabaseMetaData metaData, Connection co return mysqlVersion(majorVersion, minorVersion); } else if (dbProductName.contains("h2")) { return new H2Platform(); - } else if (dbProductName.contains("hsql database engine")) { - return new HsqldbPlatform(); } else if (dbProductName.contains("postgres")) { return readPostgres(connection, majorVersion); } else if (dbProductName.contains("nuo")) { diff --git a/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java b/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java index 2a0ea3abae..81be80f495 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java +++ b/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptorManager.java @@ -1401,13 +1401,13 @@ private void setIdGeneration(DeployBeanDescriptor desc) { String primaryKeyColumn = desc.getSinglePrimaryKeyColumn(); seqName = namingConvention.getSequenceName(desc.getBaseTable(), primaryKeyColumn); } - int stepSize = desc.setIdentitySequenceBatchMode(databasePlatform.isSequenceBatchMode()); - desc.setIdGenerator(createSequenceIdGenerator(seqName, stepSize)); + int increment = desc.setIdentitySequenceDefaultIncrement(); + desc.setIdGenerator(createSequenceIdGenerator(seqName, increment)); } } - private PlatformIdGenerator createSequenceIdGenerator(String seqName, int stepSize) { - return databasePlatform.createSequenceIdGenerator(backgroundExecutor, dataSource, stepSize, seqName); + private PlatformIdGenerator createSequenceIdGenerator(String seqName, int increment) { + return databasePlatform.createSequenceIdGenerator(backgroundExecutor, dataSource, increment, seqName); } private void createByteCode(DeployBeanDescriptor deploy) { diff --git a/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java b/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java index cd5fabcd08..a955870e8b 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java +++ b/src/main/java/io/ebeaninternal/server/deploy/meta/DeployBeanDescriptor.java @@ -407,11 +407,8 @@ public void setIdentitySequenceGenerator(String genName) { identityMode.setSequenceGenerator(genName); } - /** - * Return the sequence increment to use given sequence batch mode. - */ - public int setIdentitySequenceBatchMode(boolean sequenceBatchMode) { - return identityMode.setSequenceBatchMode(sequenceBatchMode); + public int setIdentitySequenceDefaultIncrement() { + return identityMode.setSequenceDefaultIncrement(); } public void setIdentityType(IdType type) { diff --git a/src/main/java/io/ebeaninternal/server/deploy/meta/DeployIdentityMode.java b/src/main/java/io/ebeaninternal/server/deploy/meta/DeployIdentityMode.java index 5915dc873a..f5dd3591f6 100644 --- a/src/main/java/io/ebeaninternal/server/deploy/meta/DeployIdentityMode.java +++ b/src/main/java/io/ebeaninternal/server/deploy/meta/DeployIdentityMode.java @@ -54,11 +54,8 @@ public void setSequenceGenerator(String genName) { } } - public int setSequenceBatchMode(boolean sequenceBatchMode) { - if (sequenceBatchMode) { - // Ebean batch fetching multiple sequence values - increment = 1; - } else if (increment == 0) { + public int setSequenceDefaultIncrement() { + if (increment == 0) { // Use JPA default of 50 increment = 50; } diff --git a/src/test/java/io/ebean/config/dbplatform/SequenceBatchIdGeneratorTest.java b/src/test/java/io/ebean/config/dbplatform/SequenceBatchIdGeneratorTest.java index 7969c8778d..bc942f1e74 100644 --- a/src/test/java/io/ebean/config/dbplatform/SequenceBatchIdGeneratorTest.java +++ b/src/test/java/io/ebean/config/dbplatform/SequenceBatchIdGeneratorTest.java @@ -39,18 +39,18 @@ void add(List ids) { } @Override - public String getSql(int batchSize) { + public String getSql() { return "not used"; } @Override - protected List readIds(ResultSet resultSet, int loadSize) { + protected List readIds(ResultSet resultSet) { // do nothing return null; } @Override - protected List getMoreIds(int requestSize) { + protected List getMoreIds() { return null; } diff --git a/src/test/java/io/ebean/config/dbplatform/sqlserver/SqlServerStepSequenceTest.java b/src/test/java/io/ebean/config/dbplatform/sqlserver/SqlServerDbSequenceTest.java similarity index 87% rename from src/test/java/io/ebean/config/dbplatform/sqlserver/SqlServerStepSequenceTest.java rename to src/test/java/io/ebean/config/dbplatform/sqlserver/SqlServerDbSequenceTest.java index b89049b8c5..3d5c4fd111 100644 --- a/src/test/java/io/ebean/config/dbplatform/sqlserver/SqlServerStepSequenceTest.java +++ b/src/test/java/io/ebean/config/dbplatform/sqlserver/SqlServerDbSequenceTest.java @@ -13,9 +13,9 @@ import static org.assertj.core.api.Assertions.assertThat; -public class SqlServerStepSequenceTest extends BaseTestCase { +public class SqlServerDbSequenceTest extends BaseTestCase { - private static final Logger log = LoggerFactory.getLogger(SqlServerStepSequenceTest.class); + private static final Logger log = LoggerFactory.getLogger(SqlServerDbSequenceTest.class); @Ignore @ForPlatform(Platform.SQLSERVER) @@ -29,7 +29,7 @@ public void seq() { BackgroundExecutor be = server().getBackgroundExecutor(); DataSource ds = server().getPluginApi().getDataSource(); - SqlServerStepSequence s = new SqlServerStepSequence(be, ds, "sqls_testseq_9876", 50); + SqlServerDbSequence s = new SqlServerDbSequence(be, ds, "sqls_testseq_9876", 50); Object id = s.nextId(null); assertThat(id).isEqualTo(1L); diff --git a/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java b/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java index 2990dcf218..f28288c9e2 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java @@ -48,7 +48,6 @@ public static void main(String[] args) throws IOException { // migration.addPlatform(Platform.SQLANYWHERE, "sqlanywhere"); and sqlanywhere migration.addPlatform(Platform.DB2, "db2"); migration.addPlatform(Platform.H2, "h2"); - migration.addPlatform(Platform.HSQLDB, "hsqldb"); migration.addPlatform(Platform.MYSQL, "mysql"); migration.addPlatform(Platform.MYSQL55, "mysql55"); migration.addPlatform(Platform.POSTGRES, "postgres"); diff --git a/src/test/resources/dbmigration/migrationtest/hsqldb/1.0__initial.sql b/src/test/resources/dbmigration/migrationtest/hsqldb/1.0__initial.sql deleted file mode 100644 index b4d627c186..0000000000 --- a/src/test/resources/dbmigration/migrationtest/hsqldb/1.0__initial.sql +++ /dev/null @@ -1,174 +0,0 @@ --- Migrationscripts for ebean unittest --- apply changes -create table migtest_ckey_assoc ( - id integer generated by default as identity (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) not null, - constraint pk_migtest_fk_cascade_one primary key (id) -); - -create table migtest_fk_none ( - id bigint generated by default as identity (start with 1) 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 (start with 1) 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 (start with 1) not null, - constraint pk_migtest_fk_one primary key (id) -); - -create table migtest_fk_set_null ( - id bigint generated by default as identity (start with 1) 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 (start with 1) not null, - status varchar(1), - status2 varchar(1) default 'N' not null, - name varchar(127), - description varchar(127), - some_date timestamp, - 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 (start with 1) 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 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; - diff --git a/src/test/resources/dbmigration/migrationtest/hsqldb/1.1.sql b/src/test/resources/dbmigration/migrationtest/hsqldb/1.1.sql deleted file mode 100644 index cebb8b994c..0000000000 --- a/src/test/resources/dbmigration/migrationtest/hsqldb/1.1.sql +++ /dev/null @@ -1,110 +0,0 @@ --- Migrationscripts for ebean unittest --- apply changes -create table migtest_e_user ( - id integer generated by default as identity (start with 1) 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 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 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 varchar(127); -alter table migtest_e_basic alter column status2 drop default; -alter table migtest_e_basic alter column status2 set 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 set 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; -comment on column migtest_e_history.test_string is 'Column altered to long now'; -alter table migtest_e_history alter column test_string 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_history4 alter column test_number bigint; -alter table migtest_e_history5 add column test_boolean boolean default false not null; - - --- 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 set 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); -drop index if exists ix_migtest_e_basic_indextest1; -drop index if exists ix_migtest_e_basic_indextest5; -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; - diff --git a/src/test/resources/dbmigration/migrationtest/hsqldb/1.2__dropsFor_1.1.sql b/src/test/resources/dbmigration/migrationtest/hsqldb/1.2__dropsFor_1.1.sql deleted file mode 100644 index 6fb11c3a49..0000000000 --- a/src/test/resources/dbmigration/migrationtest/hsqldb/1.2__dropsFor_1.1.sql +++ /dev/null @@ -1,14 +0,0 @@ --- Migrationscripts for ebean unittest --- 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 drop column obsolete_string2; - -drop table if exists migtest_e_ref; -drop sequence if exists migtest_e_ref_seq; diff --git a/src/test/resources/dbmigration/migrationtest/hsqldb/1.3.sql b/src/test/resources/dbmigration/migrationtest/hsqldb/1.3.sql deleted file mode 100644 index ed3b505364..0000000000 --- a/src/test/resources/dbmigration/migrationtest/hsqldb/1.3.sql +++ /dev/null @@ -1,67 +0,0 @@ --- Migrationscripts for ebean unittest --- apply changes -create table migtest_e_ref ( - id integer generated by default as identity (start with 1) 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 migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent; -alter table 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 migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id; -alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id; -alter table 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 set 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 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 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 set 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_history4 alter column test_number integer; -alter table migtest_e_history6 alter column test_number1 drop default; -alter table migtest_e_history6 alter column test_number1 set 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); -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; - diff --git a/src/test/resources/dbmigration/migrationtest/hsqldb/1.4__dropsFor_1.3.sql b/src/test/resources/dbmigration/migrationtest/hsqldb/1.4__dropsFor_1.3.sql deleted file mode 100644 index c613e4a5a4..0000000000 --- a/src/test/resources/dbmigration/migrationtest/hsqldb/1.4__dropsFor_1.3.sql +++ /dev/null @@ -1,34 +0,0 @@ --- Migrationscripts for ebean unittest --- 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 drop column test_string3; - -alter table migtest_e_history2 drop column new_column; - -alter table migtest_e_history5 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; -drop sequence if exists migtest_e_user_seq; -drop table if exists migtest_mtm_c_migtest_mtm_m; -drop table if exists migtest_mtm_m_migtest_mtm_c; diff --git a/src/test/resources/dbmigration/migrationtest/hsqldb/R__order_views_hsqldb.sql b/src/test/resources/dbmigration/migrationtest/hsqldb/R__order_views_hsqldb.sql deleted file mode 100644 index 5f7ba1784e..0000000000 --- a/src/test/resources/dbmigration/migrationtest/hsqldb/R__order_views_hsqldb.sql +++ /dev/null @@ -1,8 +0,0 @@ - - drop view order_agg_vw if exists ; - create 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 From 08d241d946008b9c38cfd760720758037f3fa5a5 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Thu, 5 Mar 2020 00:34:05 +1300 Subject: [PATCH 2/2] #1966 Remove sequence batching - postgres opps --- .../postgres/PostgresDbSequence.java | 2 +- src/test/ddl-review/pg-create-all.sql | 28 +++++++++---------- src/test/ddl-review/pg-drop-all.sql | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresDbSequence.java b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresDbSequence.java index ebff5a63f0..78d3dcd3f6 100644 --- a/src/main/java/io/ebean/config/dbplatform/postgres/PostgresDbSequence.java +++ b/src/main/java/io/ebean/config/dbplatform/postgres/PostgresDbSequence.java @@ -8,7 +8,7 @@ class PostgresDbSequence extends SequenceStepIdGenerator { PostgresDbSequence(BackgroundExecutor be, DataSource ds, String seqName, int stepSize) { - super(be, ds, seqName, stepSize, "select nextval('\" + seqName + \"')"); + super(be, ds, seqName, stepSize, "select nextval('" + seqName + "')"); } } diff --git a/src/test/ddl-review/pg-create-all.sql b/src/test/ddl-review/pg-create-all.sql index 83b3c7d54c..f63005cbf5 100644 --- a/src/test/ddl-review/pg-create-all.sql +++ b/src/test/ddl-review/pg-create-all.sql @@ -1,4 +1,4 @@ --- Generated by ebean unknown at 2020-03-04T11:18:31.280668Z +-- Generated by ebean unknown at 2020-03-04T11:25:28.198394Z create table asimple_bean ( id bigint generated by default as identity not null, name varchar(255), @@ -275,7 +275,7 @@ create table drel_booking ( constraint uq_drel_booking_client_invoice unique (client_invoice), constraint pk_drel_booking primary key (id) ); -create sequence drel_booking_seq increment by 1; +create sequence drel_booking_seq increment by 50; create table bw_bean ( id bigint generated by default as identity not null, @@ -396,7 +396,7 @@ create table sp_car_car ( version integer not null, constraint pk_sp_car_car primary key (id) ); -create sequence sp_car_car_seq increment by 1; +create sequence sp_car_car_seq increment by 50; create table sp_car_car_wheels ( car bigint not null, @@ -417,7 +417,7 @@ create table sa_car ( version integer not null, constraint pk_sa_car primary key (id) ); -create sequence sa_car_seq increment by 1; +create sequence sa_car_seq increment by 50; create table car_accessory ( id integer generated by default as identity not null, @@ -864,7 +864,7 @@ create table sp_car_door ( version integer not null, constraint pk_sp_car_door primary key (id) ); -create sequence sp_car_door_seq increment by 1; +create sequence sp_car_door_seq increment by 50; create table earray_bean ( id bigint generated by default as identity not null, @@ -1801,7 +1801,7 @@ create table gen_key_sequence ( description varchar(255), constraint pk_gen_key_sequence primary key (id) ); -create sequence SEQ start with 1 increment by 1; +create sequence SEQ start with 1 increment by 50; create table gen_key_table ( id bigint generated by default as identity not null, @@ -2018,7 +2018,7 @@ create table drel_invoice ( version integer not null, constraint pk_drel_invoice primary key (id) ); -create sequence drel_invoice_seq increment by 1; +create sequence drel_invoice_seq increment by 50; create table item ( customer integer not null, @@ -3614,7 +3614,7 @@ create table t_detail_with_other_namexxxyy ( constraint uq_t_detail_with_other_namexxxyy_some_unique_value unique (some_unique_value), constraint pk_t_detail_with_other_namexxxyy primary key (id) ); -create sequence t_atable_detail_seq increment by 1; +create sequence t_atable_detail_seq increment by 50; create table t_atable_thatisrelatively ( id integer not null, @@ -3623,7 +3623,7 @@ create table t_atable_thatisrelatively ( active boolean default false not null, constraint pk_t_atable_thatisrelatively primary key (id) ); -create sequence t_atable_master_seq increment by 1; +create sequence t_atable_master_seq increment by 50; create table ttruck_holder ( id bigint generated by default as identity not null, @@ -3692,14 +3692,14 @@ create table tire ( constraint uq_tire_wheel unique (wheel), constraint pk_tire primary key (id) ); -create sequence tire_seq increment by 1; +create sequence tire_seq increment by 50; create table sa_tire ( id bigint not null, version integer not null, constraint pk_sa_tire primary key (id) ); -create sequence sa_tire_seq increment by 1; +create sequence sa_tire_seq increment by 50; create table tree_entity ( id integer generated by default as identity not null, @@ -3924,7 +3924,7 @@ create table wheel ( version integer not null, constraint pk_wheel primary key (id) ); -create sequence wheel_seq increment by 1; +create sequence wheel_seq increment by 50; create table sa_wheel ( id bigint not null, @@ -3933,7 +3933,7 @@ create table sa_wheel ( version integer not null, constraint pk_sa_wheel primary key (id) ); -create sequence sa_wheel_seq increment by 1; +create sequence sa_wheel_seq increment by 50; create table sp_car_wheel ( id bigint not null, @@ -3941,7 +3941,7 @@ create table sp_car_wheel ( version integer not null, constraint pk_sp_car_wheel primary key (id) ); -create sequence sp_car_wheel_seq increment by 1; +create sequence sp_car_wheel_seq increment by 50; create table g_who_props_otm ( id bigint generated by default as identity not null, diff --git a/src/test/ddl-review/pg-drop-all.sql b/src/test/ddl-review/pg-drop-all.sql index 8f26a36130..6af1c0b483 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-03-04T11:18:31.280668Z +-- Generated by ebean unknown at 2020-03-04T11:25:28.198394Z alter table if exists bar drop constraint if exists fk_bar_foo_id; drop index if exists ix_bar_foo_id;