diff --git a/pom.xml b/pom.xml index 1d07f2859..a51556f80 100644 --- a/pom.xml +++ b/pom.xml @@ -118,7 +118,7 @@ io.ebean ebean-annotation - 4.11 + 4.12 @@ -130,7 +130,7 @@ io.ebean ebean-datasource - 4.5.2 + 4.6.1 @@ -220,6 +220,13 @@ + + com.nuodb.jdbc + nuodb-jdbc + 20.2.0 + test + + @@ -230,7 +237,7 @@ io.ebean.test ebean-test-docker - 2.8.1 + 2.10.1 test @@ -285,6 +292,13 @@ test + + org.mockito + mockito-core + 3.0.0 + test + + org.avaje.composite avaje-composite-testing diff --git a/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbHistorySupport.java b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbHistorySupport.java new file mode 100644 index 000000000..2bb0918fc --- /dev/null +++ b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbHistorySupport.java @@ -0,0 +1,10 @@ +package io.ebean.config.dbplatform.nuodb; + +import io.ebean.config.dbplatform.DbViewHistorySupport; + +/** + * Runtime support for @History with NuoDB. + */ +public class NuoDbHistorySupport extends DbViewHistorySupport { + +} diff --git a/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbPlatform.java b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbPlatform.java new file mode 100644 index 000000000..f58cedb54 --- /dev/null +++ b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbPlatform.java @@ -0,0 +1,61 @@ +package io.ebean.config.dbplatform.nuodb; + +import io.ebean.BackgroundExecutor; +import io.ebean.Query; +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.SqlErrorCodes; + +import javax.sql.DataSource; + +/** + * NuoDb specific platform. + */ +public class NuoDbPlatform extends DatabasePlatform { + + public NuoDbPlatform() { + super(); + this.platform = Platform.NUODB; + this.idInExpandedForm = true; + this.supportsResultSetConcurrencyModeUpdatable = false; + this.supportsDeleteTableAlias = true; + this.columnAliasPrefix = null; + this.likeClauseRaw = "like ?"; + this.historySupport = new NuoDbHistorySupport(); + //this.dbEncrypt = ... + dbIdentity.setIdType(IdType.IDENTITY); + dbIdentity.setSupportsIdentity(true); + dbIdentity.setSupportsSequence(true); + dbIdentity.setSupportsGetGeneratedKeys(true); + + // No referential integrity exception to map + this.exceptionTranslator = + new SqlErrorCodes() + //.addAcquireLock("") + .addDuplicateKey("23000") + .build(); + + dbTypeMap.put(DbType.INTEGER, new DbPlatformType("integer", false)); + } + + @Override + public PlatformIdGenerator createSequenceIdGenerator(BackgroundExecutor be, DataSource ds, int stepSize, String seqName) { + return new NuoDbSequence(be, ds, seqName, stepSize); + } + + @Override + protected String withForUpdate(String sql, Query.ForUpdate forUpdateMode) { + switch (forUpdateMode) { + case NOWAIT: + return sql + " for update nowait"; + case SKIPLOCKED: + default: + return sql + " for update"; + } + } + +} diff --git a/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbSequence.java b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbSequence.java new file mode 100644 index 000000000..6767231c4 --- /dev/null +++ b/src/main/java/io/ebean/config/dbplatform/nuodb/NuoDbSequence.java @@ -0,0 +1,24 @@ +package io.ebean.config.dbplatform.nuodb; + +import io.ebean.BackgroundExecutor; +import io.ebean.config.dbplatform.SequenceStepIdGenerator; + +import javax.sql.DataSource; + +public 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"; + } + + @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 0ce03379c..d886c7433 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java +++ b/src/main/java/io/ebeaninternal/dbmigration/DefaultDbMigration.java @@ -15,6 +15,7 @@ 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.MySqlPlatform; +import io.ebean.config.dbplatform.nuodb.NuoDbPlatform; import io.ebean.config.dbplatform.oracle.OraclePlatform; import io.ebean.config.dbplatform.postgres.PostgresPlatform; import io.ebean.config.dbplatform.sqlanywhere.SqlAnywherePlatform; @@ -804,6 +805,8 @@ public class DefaultDbMigration implements DbMigration { return new SQLitePlatform(); case HANA: return new HanaPlatform(); + case NUODB: + return new NuoDbPlatform(); case COCKROACH: return new CockroachPlatform(); case CLICKHOUSE: diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java index 5a5583139..78d3839ca 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java @@ -29,9 +29,9 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { protected String viewSuffix; protected String historySuffix; - - protected String currentTimestamp = "now(6)"; protected String sysPeriodType = "datetime(6)"; + protected String now = "now(6)"; + protected String sysPeriodEndValue = "now(6)"; DbTriggerBasedHistoryDdl() { } @@ -164,7 +164,7 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { protected void addSysPeriodColumns(DdlBuffer apply, String baseTableName, String whenCreatedColumn) throws IOException { apply.append("alter table ").append(baseTableName).append(" add column ") - .append(sysPeriodStart).append(" ").append(sysPeriodType).append(" default ").append(currentTimestamp).endOfStatement(); + .append(sysPeriodStart).append(" ").append(sysPeriodType).append(" default ").append(now).endOfStatement(); apply.append("alter table ").append(baseTableName).append(" add column ") .append(sysPeriodEnd).append(" ").append(sysPeriodType).endOfStatement(); @@ -246,12 +246,12 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { buffer.append(" insert into ").append(historyTable).append(" (").append(sysPeriodStart).append(",").append(sysPeriodEnd).append(","); appendColumnNames(buffer, columns, ""); - buffer.append(") values (OLD.").append(sysPeriodStart).append(", ").append(currentTimestamp).append(","); + buffer.append(") values (OLD.").append(sysPeriodStart).append(", ").append(sysPeriodEndValue).append(","); appendColumnNames(buffer, columns, "OLD."); buffer.append(");").newLine(); } - protected void appendColumnNames(DdlBuffer buffer, List columns, String columnPrefix) throws IOException { + void appendColumnNames(DdlBuffer buffer, List columns, String columnPrefix) throws IOException { for (int i = 0; i < columns.size(); i++) { if (i > 0) { buffer.append(", "); @@ -264,7 +264,7 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { /** * Append a single column to the buffer if it is not null. */ - protected void appendColumnName(DdlBuffer buffer, String prefix, String columnName) throws IOException { + void appendColumnName(DdlBuffer buffer, String prefix, String columnName) throws IOException { if (columnName != null) { buffer.append(prefix).append(columnName); } @@ -278,7 +278,7 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { * the column. *

*/ - protected List columnNamesForApply(MTable table) { + List columnNamesForApply(MTable table) { return table.allHistoryColumns(true); } diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdl.java index a1f8f1806..bb474c1e4 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/H2HistoryDdl.java @@ -14,9 +14,10 @@ public class H2HistoryDdl extends DbTriggerBasedHistoryDdl { private static final String TRIGGER_CLASS = H2HistoryTrigger.class.getName(); - public H2HistoryDdl() { + H2HistoryDdl() { this.sysPeriodType = "timestamp"; - this.currentTimestamp = "now()"; + this.now = "now()"; + this.sysPeriodEndValue = "now()"; } @Override diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlHistoryDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlHistoryDdl.java index d67e1c08a..16d07136e 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlHistoryDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlHistoryDdl.java @@ -11,13 +11,11 @@ import java.io.IOException; */ public class MySqlHistoryDdl extends DbTriggerBasedHistoryDdl { - - public MySqlHistoryDdl() { + MySqlHistoryDdl() { } @Override protected void dropTriggers(DdlBuffer buffer, String baseTable) throws IOException { - buffer.append("drop trigger ").append(updateTriggerName(baseTable)).endOfStatement(); buffer.append("drop trigger ").append(deleteTriggerName(baseTable)).endOfStatement(); } diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NuoDbDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NuoDbDdl.java new file mode 100644 index 000000000..0f0c15871 --- /dev/null +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NuoDbDdl.java @@ -0,0 +1,41 @@ +package io.ebeaninternal.dbmigration.ddlgeneration.platform; + +import io.ebean.annotation.ConstraintMode; +import io.ebean.config.dbplatform.DatabasePlatform; +import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer; + +public class NuoDbDdl extends PlatformDdl { + + public NuoDbDdl(DatabasePlatform platform) { + super(platform); + this.historyDdl = new NuoDbHistoryDdl(); + this.identitySuffix = " generated by default as identity"; + this.dropConstraintIfExists = "drop constraint"; + } + + @Override + public void addTableComment(DdlBuffer apply, String tableName, String tableComment) { + // do nothing + } + + @Override + public void addColumnComment(DdlBuffer apply, String table, String column, String comment) { + // do nothing + } + + @Override + protected void appendForeignKeyOnUpdate(StringBuilder buffer, ConstraintMode mode) { + // do nothing + } + + @Override + protected void appendForeignKeyOnDelete(StringBuilder buffer, ConstraintMode mode) { + if (mode == ConstraintMode.RESTRICT) { + // do nothing + } else if (mode == ConstraintMode.SET_NULL) { + // do nothing + } else { + super.appendForeignKeyOnDelete(buffer, mode); + } + } +} diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NuoDbHistoryDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NuoDbHistoryDdl.java new file mode 100644 index 000000000..89d81eb9b --- /dev/null +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/NuoDbHistoryDdl.java @@ -0,0 +1,79 @@ +package io.ebeaninternal.dbmigration.ddlgeneration.platform; + +import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer; +import io.ebeaninternal.dbmigration.ddlgeneration.DdlWrite; +import io.ebeaninternal.dbmigration.model.MTable; + +import java.io.IOException; + +/** + * NuoDB history support using DB triggers to maintain a history table. + */ +public class NuoDbHistoryDdl extends DbTriggerBasedHistoryDdl { + + NuoDbHistoryDdl() { + this.now = "now()"; + this.sysPeriodEndValue = "NEW.sys_period_start"; + } + + @Override + protected void dropTriggers(DdlBuffer buffer, String baseTable) throws IOException { + + buffer.append("drop trigger ").append(updateTriggerName(baseTable)).endOfStatement(); + buffer.append("drop trigger ").append(deleteTriggerName(baseTable)).endOfStatement(); + } + + @Override + protected void createTriggers(DdlWrite writer, MTable table) throws IOException { + + DbTriggerUpdate update = createDbTriggerUpdate(writer, table); + + addBeforeUpdate(updateTriggerName(update.getBaseTable()), update); + addBeforeDelete(deleteTriggerName(update.getBaseTable()), update); + } + + @Override + protected void updateHistoryTriggers(DbTriggerUpdate update) throws IOException { + + recreateHistoryView(update); + + DdlBuffer buffer = update.historyTriggerBuffer(); + String baseTable = update.getBaseTable(); + + dropTriggers(buffer, baseTable); + addBeforeUpdate(updateTriggerName(baseTable), update); + addBeforeDelete(deleteTriggerName(baseTable), update); + } + + private void addBeforeUpdate(String triggerName, DbTriggerUpdate update) throws IOException { + + DdlBuffer apply = update.historyTriggerBuffer(); + addTriggerStart(triggerName, update, apply, " before update for each row as "); + apply.append(" NEW.sys_period_start = greatest(current_timestamp, date_add(OLD.sys_period_start, interval 1 microsecond))").endOfStatement(); + appendInsertIntoHistory(apply, update.getHistoryTable(), update.getColumns()); + addEndTrigger(apply); + } + + private void addBeforeDelete(String triggerName, DbTriggerUpdate update) throws IOException { + + DdlBuffer apply = update.historyTriggerBuffer(); + addTriggerStart(triggerName, update, apply, " before delete for each row as"); + appendInsertIntoHistory(apply, update.getHistoryTable(), update.getColumns()); + addEndTrigger(apply); + } + + private void addTriggerStart(String triggerName, DbTriggerUpdate update, DdlBuffer apply, String s) throws IOException { + apply + .append("delimiter $$").newLine() + .append("create or replace trigger ").append(triggerName).append(" for ").append(update.getBaseTable()) + .append(s).newLine(); + } + + private void addEndTrigger(DdlBuffer apply) throws IOException { + apply.append("end_trigger") + .endOfStatement() + .append("$$").newLine() + .newLine(); + } + +} diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresHistoryDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresHistoryDdl.java index d1b34b976..fe9b17f1b 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresHistoryDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresHistoryDdl.java @@ -12,9 +12,9 @@ import java.util.List; */ public class PostgresHistoryDdl extends DbTriggerBasedHistoryDdl { - - public PostgresHistoryDdl() { - this.currentTimestamp = "current_timestamp"; + PostgresHistoryDdl() { + this.now = "current_timestamp"; + this.sysPeriodEndValue = "current_timestamp"; } /** @@ -36,7 +36,7 @@ public class PostgresHistoryDdl extends DbTriggerBasedHistoryDdl { protected void addSysPeriodColumns(DdlBuffer apply, String baseTableName, String whenCreatedColumn) throws IOException { apply .append("alter table ").append(baseTableName) - .append(" add column ").append(sysPeriod).append(" tstzrange not null default tstzrange(").append(currentTimestamp).append(", null)") + .append(" add column ").append(sysPeriod).append(" tstzrange not null default tstzrange(").append(now).append(", null)") .endOfStatement(); if (whenCreatedColumn != null) { diff --git a/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java b/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java index 9cd221c92..0854ae4f3 100644 --- a/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java +++ b/src/main/java/io/ebeaninternal/server/core/DatabasePlatformFactory.java @@ -9,6 +9,7 @@ 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.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.PostgresPlatform; @@ -108,6 +109,9 @@ public class DatabasePlatformFactory { if (dbName.equals("clickhouse")) { return new ClickHousePlatform(); } + if (dbName.equals("nuodb")) { + return new NuoDbPlatform(); + } if (dbName.equals("sqlite")) { return new SQLitePlatform(); } @@ -158,6 +162,8 @@ public class DatabasePlatformFactory { return new HsqldbPlatform(); } else if (dbProductName.contains("postgres")) { return readPostgres(connection); + } else if (dbProductName.contains("nuo")) { + return new NuoDbPlatform(); } else if (dbProductName.contains("sqlite")) { return new SQLitePlatform(); } else if (dbProductName.contains("db2")) { @@ -177,7 +183,7 @@ public class DatabasePlatformFactory { /** * Use a select version() query as it could be Postgres or CockroachDB. */ - private static PostgresPlatform readPostgres(Connection connection) { + private static DatabasePlatform readPostgres(Connection connection) { // Postgres driver uses a hardcoded product name so use version() query PreparedStatement statement = null; ResultSet resultSet = null; diff --git a/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java b/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java index 34e696735..bacee903e 100644 --- a/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java +++ b/src/main/java/io/ebeaninternal/server/core/PlatformDdlBuilder.java @@ -8,6 +8,7 @@ import io.ebeaninternal.dbmigration.ddlgeneration.platform.H2Ddl; import io.ebeaninternal.dbmigration.ddlgeneration.platform.HanaColumnStoreDdl; import io.ebeaninternal.dbmigration.ddlgeneration.platform.HsqldbDdl; import io.ebeaninternal.dbmigration.ddlgeneration.platform.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.PostgresDdl; @@ -33,6 +34,8 @@ public class PlatformDdlBuilder { return new MySqlDdl(platform); case HSQLDB: return new HsqldbDdl(platform); + case NUODB: + return new NuoDbDdl(platform); case ORACLE: return new Oracle10Ddl(platform); case SQLITE: diff --git a/src/test/java/io/ebean/BaseTestCase.java b/src/test/java/io/ebean/BaseTestCase.java index b53b095ec..c9fe57ba1 100644 --- a/src/test/java/io/ebean/BaseTestCase.java +++ b/src/test/java/io/ebean/BaseTestCase.java @@ -170,6 +170,10 @@ public abstract class BaseTestCase { return Platform.ORACLE == platform(); } + public boolean isNuoDb() { + return Platform.NUODB == platform(); + } + public boolean isDb2() { return Platform.DB2 == platform(); } diff --git a/src/test/java/io/ebean/SqlRowBooleanTest.java b/src/test/java/io/ebean/SqlRowBooleanTest.java index e5aa7d148..172b24787 100644 --- a/src/test/java/io/ebean/SqlRowBooleanTest.java +++ b/src/test/java/io/ebean/SqlRowBooleanTest.java @@ -12,7 +12,7 @@ public class SqlRowBooleanTest extends BaseTestCase { SqlQuery sqlQuery; if (isSqlServer()) { sqlQuery = Ebean.createSqlQuery("SELECT 1 AS ISNT_NULL"); - } else if (isOracle()) { + } else if (isOracle() || isNuoDb()) { sqlQuery = Ebean.createSqlQuery("SELECT 1 AS ISNT_NULL from dual"); } else if (isDb2()) { sqlQuery = Ebean.createSqlQuery("SELECT 1 AS ISNT_NULL from SYSIBM.SYSDUMMY1"); diff --git a/src/test/java/io/ebeaninternal/dbmigration/DbMigrationTest.java b/src/test/java/io/ebeaninternal/dbmigration/DbMigrationTest.java index d8a0caef0..ee53a1ef7 100644 --- a/src/test/java/io/ebeaninternal/dbmigration/DbMigrationTest.java +++ b/src/test/java/io/ebeaninternal/dbmigration/DbMigrationTest.java @@ -50,7 +50,7 @@ public class DbMigrationTest extends BaseTestCase { } } - @IgnorePlatform(Platform.ORACLE) + @IgnorePlatform({Platform.ORACLE, Platform.NUODB}) @Test public void testRunMigration() throws IOException { // first clean up previously created objects diff --git a/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java b/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java index 6ac8e78b7..2ba1b9747 100644 --- a/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java +++ b/src/test/java/io/ebeaninternal/server/cache/CacheBeanDataTest.java @@ -37,7 +37,7 @@ public class CacheBeanDataTest extends BaseTestCase { c.setSmallnote("somenote"); Address billingAddress = new Address(); - billingAddress.setId((short) 12); + billingAddress.setId(12); billingAddress.setCity("Auckland"); billingAddress.setCountry(server.getReference(Country.class, "NZ")); billingAddress.setLine1("92 Someplace Else"); diff --git a/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java b/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java index 3dc2077fb..1490bead6 100644 --- a/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java +++ b/src/test/java/io/ebeaninternal/server/cache/CachedBeanDataFromBeanTest.java @@ -31,7 +31,7 @@ public class CachedBeanDataFromBeanTest extends BaseTestCase { customer.setAnniversary(largeDate); Address billingAddress = new Address(); - billingAddress.setId(Short.valueOf("12")); + billingAddress.setId(12); billingAddress.setCity("SomePlace"); customer.setBillingAddress(billingAddress); diff --git a/src/test/java/main/StartNuoDB.java b/src/test/java/main/StartNuoDB.java new file mode 100644 index 000000000..e80beb78b --- /dev/null +++ b/src/test/java/main/StartNuoDB.java @@ -0,0 +1,17 @@ +package main; + +import io.ebean.docker.commands.NuoDBConfig; +import io.ebean.docker.commands.NuoDBContainer; + +public class StartNuoDB { + + public static void main(String[] args) { + + NuoDBConfig config = new NuoDBConfig(); + config.setDbName("unit"); + + NuoDBContainer container = new NuoDBContainer(config); + container.stopRemove(); + container.startWithDropCreate(); + } +} diff --git a/src/test/java/org/tests/aggregateformula/TestAggregateFormula.java b/src/test/java/org/tests/aggregateformula/TestAggregateFormula.java index 6bf12e1f6..f06cc223b 100644 --- a/src/test/java/org/tests/aggregateformula/TestAggregateFormula.java +++ b/src/test/java/org/tests/aggregateformula/TestAggregateFormula.java @@ -19,7 +19,7 @@ import static org.junit.Assert.assertNotNull; public class TestAggregateFormula extends BaseTestCase { - @IgnorePlatform({Platform.SQLSERVER, Platform.MYSQL}) + @IgnorePlatform({Platform.SQLSERVER, Platform.MYSQL, Platform.NUODB}) @Test public void minDistinctOrderByNulls() { diff --git a/src/test/java/org/tests/basic/TestAssocOneEqExpression.java b/src/test/java/org/tests/basic/TestAssocOneEqExpression.java index 9d4ad50c7..77d987761 100644 --- a/src/test/java/org/tests/basic/TestAssocOneEqExpression.java +++ b/src/test/java/org/tests/basic/TestAssocOneEqExpression.java @@ -29,7 +29,7 @@ public class TestAssocOneEqExpression extends BaseTestCase { Assert.assertTrue(sql.contains("where t0.kcustomer_id = ?")); Address b = new Address(); - b.setId((short) 1); + b.setId(1); Query q2 = Ebean.find(Order.class) .where().eq("customer.billingAddress", b) diff --git a/src/test/java/org/tests/batchinsert/TestBatchOnCascadeExceptionHandling.java b/src/test/java/org/tests/batchinsert/TestBatchOnCascadeExceptionHandling.java index 757a79881..a1a084dcb 100644 --- a/src/test/java/org/tests/batchinsert/TestBatchOnCascadeExceptionHandling.java +++ b/src/test/java/org/tests/batchinsert/TestBatchOnCascadeExceptionHandling.java @@ -22,7 +22,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class TestBatchOnCascadeExceptionHandling extends BaseTestCase { - @IgnorePlatform(Platform.HANA) + @IgnorePlatform({Platform.HANA, Platform.NUODB}) @Test public void testBatchScenarioWithSavepoint() throws SQLException { server().save(createEntityWithName("conflict", "before")); @@ -52,6 +52,7 @@ public class TestBatchOnCascadeExceptionHandling extends BaseTestCase { assertThat(winner.getDescription()).isEqualTo("after"); } + @IgnorePlatform(Platform.NUODB) @Test public void testBatchedInsertFailure() { server().save(createEntityWithName("foo")); @@ -60,6 +61,7 @@ public class TestBatchOnCascadeExceptionHandling extends BaseTestCase { }); } + @IgnorePlatform(Platform.NUODB) @Test public void testBatchedUpdateFailure() { server().save(createEntityWithName("bla")); @@ -71,6 +73,7 @@ public class TestBatchOnCascadeExceptionHandling extends BaseTestCase { }); } + @IgnorePlatform(Platform.NUODB) @Test public void testBatchedDeleteFailure() { final EOptOneC c = new EOptOneC(); diff --git a/src/test/java/org/tests/cache/TestQueryCache.java b/src/test/java/org/tests/cache/TestQueryCache.java index 31b59ff70..f9e732220 100644 --- a/src/test/java/org/tests/cache/TestQueryCache.java +++ b/src/test/java/org/tests/cache/TestQueryCache.java @@ -2,6 +2,7 @@ package org.tests.cache; import io.ebean.BaseTestCase; import io.ebean.CacheMode; +import io.ebean.DB; import io.ebean.Ebean; import io.ebean.bean.BeanCollection; import io.ebean.cache.ServerCache; @@ -52,6 +53,7 @@ public class TestQueryCache extends BaseTestCase { @Test public void findSingleAttribute() { + DB.find(EColAB.class).delete(); new EColAB("03", "SingleAttribute").save(); new EColAB("03", "SingleAttribute").save(); @@ -260,11 +262,11 @@ public class TestQueryCache extends BaseTestCase { @Test public void findIds() { + DB.find(EColAB.class).delete(); new EColAB("03", "someId").save(); new EColAB("04", "someId").save(); new EColAB("05", "someId").save(); - LoggedSqlCollector.start(); List colA_first = Ebean.find(EColAB.class) diff --git a/src/test/java/org/tests/cascade/TestPrivateOwnedNoCascadeRemove.java b/src/test/java/org/tests/cascade/TestPrivateOwnedNoCascadeRemove.java index d521f672f..473f96d88 100644 --- a/src/test/java/org/tests/cascade/TestPrivateOwnedNoCascadeRemove.java +++ b/src/test/java/org/tests/cascade/TestPrivateOwnedNoCascadeRemove.java @@ -2,6 +2,8 @@ package org.tests.cascade; import io.ebean.BaseTestCase; import io.ebean.Ebean; +import io.ebean.annotation.IgnorePlatform; +import io.ebean.annotation.Platform; import io.ebean.bean.BeanCollection; import org.tests.model.basic.TSDetailTwo; import org.tests.model.basic.TSMasterTwo; @@ -13,6 +15,7 @@ import java.util.Set; public class TestPrivateOwnedNoCascadeRemove extends BaseTestCase { + @IgnorePlatform(Platform.NUODB) @Test public void test() { diff --git a/src/test/java/org/tests/compositekeys/TestCKeyDelete.java b/src/test/java/org/tests/compositekeys/TestCKeyDelete.java index c3697e043..22a032854 100644 --- a/src/test/java/org/tests/compositekeys/TestCKeyDelete.java +++ b/src/test/java/org/tests/compositekeys/TestCKeyDelete.java @@ -1,7 +1,7 @@ package org.tests.compositekeys; import io.ebean.BaseTestCase; -import io.ebean.Ebean; +import io.ebean.DB; import org.junit.Test; import org.tests.model.basic.CKeyParent; import org.tests.model.basic.CKeyParentId; @@ -24,20 +24,21 @@ public class TestCKeyDelete extends BaseTestCase { p.setId(id); p.setName("testDelete"); - Ebean.save(p); + DB.save(p); - CKeyParent found = Ebean.find(CKeyParent.class).where().idEq(searchId).findOne(); + CKeyParent found = DB.find(CKeyParent.class).where().idEq(searchId).findOne(); assertNotNull(found); - Ebean.delete(CKeyParent.class, searchId); + DB.delete(CKeyParent.class, searchId); - CKeyParent notFound = Ebean.find(CKeyParent.class).where().idEq(searchId).findOne(); + CKeyParent notFound = DB.find(CKeyParent.class).where().idEq(searchId).findOne(); assertNull(notFound); } @Test public void testDeleteWhere() { + DB.truncate(CKeyParent.class); CKeyParentId id = new CKeyParentId(101, "deleteMe2"); CKeyParentId searchId = new CKeyParentId(101, "deleteMe2"); @@ -46,18 +47,18 @@ public class TestCKeyDelete extends BaseTestCase { p.setId(id); p.setName("testDelete"); - Ebean.save(p); + DB.save(p); - List ids = Ebean.find(CKeyParent.class).where().eq("id.oneKey", 101).findIds(); + List ids = DB.find(CKeyParent.class).where().eq("id.oneKey", 101).findIds(); assertThat(ids).hasSize(1); CKeyParentId foundId = ids.get(0); assertThat(foundId.getOneKey()).isEqualTo(101); assertThat(foundId.getTwoKey()).isEqualTo("deleteMe2"); - Ebean.createQuery(CKeyParent.class).where().eq("id.oneKey", 101).delete(); + DB.createQuery(CKeyParent.class).where().eq("id.oneKey", 101).delete(); - CKeyParent found = Ebean.find(CKeyParent.class).where().idEq(searchId).findOne(); + CKeyParent found = DB.find(CKeyParent.class).where().idEq(searchId).findOne(); assertNull(found); } } diff --git a/src/test/java/org/tests/ddl/TestForeignKeyModes.java b/src/test/java/org/tests/ddl/TestForeignKeyModes.java index 113c72e16..e0eab0a7b 100644 --- a/src/test/java/org/tests/ddl/TestForeignKeyModes.java +++ b/src/test/java/org/tests/ddl/TestForeignKeyModes.java @@ -2,6 +2,8 @@ package org.tests.ddl; import io.ebean.BaseTestCase; import io.ebean.Ebean; +import io.ebean.annotation.IgnorePlatform; +import io.ebean.annotation.Platform; import org.ebeantest.LoggedSqlCollector; import org.junit.Test; @@ -82,6 +84,7 @@ public class TestForeignKeyModes extends BaseTestCase { assertThat(sql.get(1)).contains("delete from dfk_none_via_mto_m where id=?"); } + @IgnorePlatform(Platform.NUODB) @Test public void setNullOnDelete() { @@ -99,6 +102,7 @@ public class TestForeignKeyModes extends BaseTestCase { assertThat(found.getOne()).isNull(); } + @IgnorePlatform(Platform.NUODB) @Test public void onDeleteCascade() { diff --git a/src/test/java/org/tests/el/TestPathExpression.java b/src/test/java/org/tests/el/TestPathExpression.java index c5254a305..1fa061269 100644 --- a/src/test/java/org/tests/el/TestPathExpression.java +++ b/src/test/java/org/tests/el/TestPathExpression.java @@ -47,7 +47,7 @@ public class TestPathExpression { assertEquals(c1.getStatus(), Customer.Status.ACTIVE); assertEquals(c1.getBillingAddress().getLine1(), "12 someplace"); assertEquals(c1.getBillingAddress().getCity(), "Auckland"); - assertEquals(c1.getBillingAddress().getId(), Short.valueOf("4")); + assertEquals(c1.getBillingAddress().getId(), Integer.valueOf("4")); assertEquals(c1.getBillingAddress().getCountry().getCode(), "NZ"); assertEquals(c1.getBillingAddress().getCountry().getName(), "New Zealand"); @@ -57,7 +57,7 @@ public class TestPathExpression { public void pathGet() { Address billingAddress = new Address(); - billingAddress.setId((short) 12); + billingAddress.setId(12); billingAddress.setLine1("line1"); billingAddress.setCity("Auckland"); @@ -72,7 +72,7 @@ public class TestPathExpression { EntityBean e0 = (EntityBean) c0; assertEquals(line1.pathGet(e0), "line1"); assertEquals(city.pathGet(e0), "Auckland"); - assertEquals(billingId.pathGet(e0), Short.valueOf("12")); + assertEquals(billingId.pathGet(e0), Integer.valueOf("12")); assertEquals(beanType.getExpressionPath("billingAddress.country.code").pathGet(e0), "NZ"); diff --git a/src/test/java/org/tests/insert/TestInsertDataIntegrityException.java b/src/test/java/org/tests/insert/TestInsertDataIntegrityException.java index 94518ddce..539f05f8d 100644 --- a/src/test/java/org/tests/insert/TestInsertDataIntegrityException.java +++ b/src/test/java/org/tests/insert/TestInsertDataIntegrityException.java @@ -1,8 +1,11 @@ package org.tests.insert; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.DataIntegrityException; import io.ebean.Ebean; +import io.ebean.annotation.IgnorePlatform; +import io.ebean.annotation.Platform; import org.junit.Test; import org.tests.model.basic.Customer; import org.tests.model.basic.Order; @@ -11,6 +14,7 @@ import org.tests.model.basic.ResetBasicData; public class TestInsertDataIntegrityException extends BaseTestCase { + @IgnorePlatform(Platform.NUODB) @Test(expected = DataIntegrityException.class) public void insert_invalidForeignKey() { @@ -23,6 +27,6 @@ public class TestInsertDataIntegrityException extends BaseTestCase { order.setStatus(Order.Status.NEW); order.setCustomer(invalidCustomer); - Ebean.save(order); + DB.save(order); } } diff --git a/src/test/java/org/tests/m2m/TestM2MDeleteCascadeFromParent.java b/src/test/java/org/tests/m2m/TestM2MDeleteCascadeFromParent.java index 491c605db..4df6c7efb 100644 --- a/src/test/java/org/tests/m2m/TestM2MDeleteCascadeFromParent.java +++ b/src/test/java/org/tests/m2m/TestM2MDeleteCascadeFromParent.java @@ -1,6 +1,7 @@ package org.tests.m2m; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import io.ebean.SqlQuery; import io.ebean.SqlRow; @@ -16,6 +17,8 @@ public class TestM2MDeleteCascadeFromParent extends BaseTestCase { @Test public void test() { + DB.truncate("mny_b_mny_c","mny_c","mny_b", "mny_a"); + MnyC c0 = new MnyC(); c0.setName("c0"); c0.save(); diff --git a/src/test/java/org/tests/m2m/TestM2MDeleteNoCascade.java b/src/test/java/org/tests/m2m/TestM2MDeleteNoCascade.java index a3717b0b7..dcb4f984e 100644 --- a/src/test/java/org/tests/m2m/TestM2MDeleteNoCascade.java +++ b/src/test/java/org/tests/m2m/TestM2MDeleteNoCascade.java @@ -2,6 +2,8 @@ package org.tests.m2m; import io.ebean.BaseTestCase; import io.ebean.Ebean; +import io.ebean.annotation.IgnorePlatform; +import io.ebean.annotation.Platform; import org.tests.model.basic.MnocRole; import org.tests.model.basic.MnocUser; import org.junit.Assert; @@ -12,6 +14,7 @@ import java.util.List; public class TestM2MDeleteNoCascade extends BaseTestCase { + @IgnorePlatform(Platform.NUODB) @Test public void test() { diff --git a/src/test/java/org/tests/model/basic/Address.java b/src/test/java/org/tests/model/basic/Address.java index a11d38a0d..3b68776bd 100644 --- a/src/test/java/org/tests/model/basic/Address.java +++ b/src/test/java/org/tests/model/basic/Address.java @@ -25,7 +25,7 @@ import java.sql.Timestamp; public class Address { @Id - Short id; + Integer id; @Size(max = 100) @Column(name = "line_1") @@ -55,14 +55,14 @@ public class Address { /** * Return id. */ - public Short getId() { + public Integer getId() { return id; } /** * Set id. */ - public void setId(Short id) { + public void setId(Integer id) { this.id = id; } diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasic.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasic.java index c4bd282d0..2bf32672a 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasic.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasic.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import io.ebean.Transaction; import org.ebeantest.LoggedSqlCollector; @@ -18,6 +19,7 @@ public class TestElementCollectionBasic extends BaseTestCase { @Test public void test() { + DB.truncate(EcPerson.class); eventLog(); LoggedSqlCollector.start(); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicCache.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicCache.java index e36c86a53..a91ce35d0 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicCache.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicCache.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import io.ebean.annotation.PersistBatch; import io.ebeaninternal.api.SpiEbeanServer; @@ -15,6 +16,7 @@ public class TestElementCollectionBasicCache extends BaseTestCase { @Test public void test() { + DB.truncate(EcPerson.class); EcPerson person = new EcPerson("Cache1"); person.getPhoneNumbers().add("021 1234"); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMap.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMap.java index 225a7316d..ed4f219a1 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMap.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMap.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import org.ebeantest.LoggedSqlCollector; import org.junit.Test; @@ -15,6 +16,7 @@ public class TestElementCollectionBasicMap extends BaseTestCase { @Test public void test() { + DB.truncate(EcmPerson.class); LoggedSqlCollector.start(); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMapAsLob.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMapAsLob.java index 3b65b22ba..830cb5b5b 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMapAsLob.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMapAsLob.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import org.ebeantest.LoggedSqlCollector; import org.junit.Test; @@ -13,6 +14,7 @@ public class TestElementCollectionBasicMapAsLob extends BaseTestCase { @Test public void test() { + DB.truncate(EcmcPerson.class); LoggedSqlCollector.start(); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMapCache.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMapCache.java index 3e33693c9..7830a62af 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMapCache.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicMapCache.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import io.ebean.annotation.PersistBatch; import io.ebeaninternal.api.SpiEbeanServer; @@ -15,6 +16,7 @@ public class TestElementCollectionBasicMapCache extends BaseTestCase { @Test public void test() { + DB.truncate(EcmPerson.class); EcmPerson person = new EcmPerson("CacheMap"); person.getPhoneNumbers().put("home", "021 1234"); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicSet.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicSet.java index ea0e3c213..57b7500be 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicSet.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionBasicSet.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import org.ebeantest.LoggedSqlCollector; import org.junit.Test; @@ -14,6 +15,7 @@ public class TestElementCollectionBasicSet extends BaseTestCase { @Test public void test() { + DB.truncate(EcsPerson.class); LoggedSqlCollector.start(); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedList.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedList.java index 923054961..145081116 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedList.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedList.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import org.ebeantest.LoggedSqlCollector; import org.junit.Test; @@ -13,6 +14,7 @@ public class TestElementCollectionEmbeddedList extends BaseTestCase { @Test public void test() { + DB.truncate(EcblPerson.class); LoggedSqlCollector.start(); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedListCache.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedListCache.java index a1153b074..b6dc16487 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedListCache.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedListCache.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import org.ebeantest.LoggedSqlCollector; import org.junit.Test; @@ -13,6 +14,7 @@ public class TestElementCollectionEmbeddedListCache extends BaseTestCase { @Test public void test() { + DB.truncate(EcblPerson.class); EcblPerson person = new EcblPerson("CacheL"); person.getPhoneNumbers().add(new EcPhone("64", "021","1234")); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMap.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMap.java index 5d13fcf5e..bad87bc76 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMap.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMap.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import org.ebeantest.LoggedSqlCollector; import org.junit.Test; @@ -14,6 +15,7 @@ public class TestElementCollectionEmbeddedMap extends BaseTestCase { @Test public void test() { + DB.truncate(EcbmPerson.class); LoggedSqlCollector.start(); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMapCache.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMapCache.java index 9fe0ecc21..e4f6af4c3 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMapCache.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEmbeddedMapCache.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import org.ebeantest.LoggedSqlCollector; import org.junit.Test; @@ -13,6 +14,7 @@ public class TestElementCollectionEmbeddedMapCache extends BaseTestCase { @Test public void test() { + DB.truncate(EcbmPerson.class); EcbmPerson person = new EcbmPerson("Cache1"); person.getPhoneNumbers().put("home", new EcPhone("64", "021", "1234")); diff --git a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEnumSet.java b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEnumSet.java index 988097da5..ae03beeb6 100644 --- a/src/test/java/org/tests/model/elementcollection/TestElementCollectionEnumSet.java +++ b/src/test/java/org/tests/model/elementcollection/TestElementCollectionEnumSet.java @@ -1,6 +1,7 @@ package org.tests.model.elementcollection; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import org.junit.Test; @@ -10,6 +11,7 @@ public class TestElementCollectionEnumSet extends BaseTestCase { @Test public void test() { + DB.truncate(EcEnumPerson.class); EcEnumPerson person = new EcEnumPerson("Enum Person"); person.getTags().add(EcEnumPerson.Tags.BLUE); diff --git a/src/test/java/org/tests/model/lazywithid/TestColumnIdName.java b/src/test/java/org/tests/model/lazywithid/TestColumnIdName.java index 4d8a16106..b36bb48cb 100644 --- a/src/test/java/org/tests/model/lazywithid/TestColumnIdName.java +++ b/src/test/java/org/tests/model/lazywithid/TestColumnIdName.java @@ -1,17 +1,18 @@ package org.tests.model.lazywithid; -import static org.junit.Assert.assertEquals; +import io.ebean.BaseTestCase; +import io.ebean.DB; +import io.ebean.Ebean; +import org.junit.Test; import java.util.List; -import org.junit.Test; - -import io.ebean.BaseTestCase; -import io.ebean.Ebean; +import static org.junit.Assert.assertEquals; public class TestColumnIdName extends BaseTestCase { @Test public void test() { + DB.truncate(Tune.class); Tune tune = new Tune(); tune.getLoonies().add(new Looney("Taz")); diff --git a/src/test/java/org/tests/query/orderby/TestOrderByWithDistinct.java b/src/test/java/org/tests/query/orderby/TestOrderByWithDistinct.java index 7e03b1b6f..37a9c2ea3 100644 --- a/src/test/java/org/tests/query/orderby/TestOrderByWithDistinct.java +++ b/src/test/java/org/tests/query/orderby/TestOrderByWithDistinct.java @@ -41,7 +41,7 @@ public class TestOrderByWithDistinct extends BaseTestCase { } @Test - @IgnorePlatform({Platform.MYSQL, Platform.SQLSERVER}) // do not support nulls first/last + @IgnorePlatform({Platform.MYSQL, Platform.SQLSERVER, Platform.NUODB}) // do not support nulls first/last public void testDistinctOn() { MRole role = Ebean.getReference(MRole.class, 1); diff --git a/src/test/java/org/tests/query/other/TestWhereLikeWithSlash.java b/src/test/java/org/tests/query/other/TestWhereLikeWithSlash.java index 328682e7a..71dfe5600 100644 --- a/src/test/java/org/tests/query/other/TestWhereLikeWithSlash.java +++ b/src/test/java/org/tests/query/other/TestWhereLikeWithSlash.java @@ -26,7 +26,7 @@ public class TestWhereLikeWithSlash extends BaseTestCase { Query query1 = Ebean.find(EBasic.class).where().like("name", "slash\\mon%").query(); List list1 = query1.findList(); - if (!isMySql()) { + if (!isMySql() && !isNuoDb()) { // For mysql this assert depends on no_backslash_escapes setting so we won't assert here // Still good on Postgres which was the original issue assertEquals(1, list1.size()); diff --git a/src/test/java/org/tests/repository/TestBeanRepository.java b/src/test/java/org/tests/repository/TestBeanRepository.java index 3649dccc5..6bb90a87d 100644 --- a/src/test/java/org/tests/repository/TestBeanRepository.java +++ b/src/test/java/org/tests/repository/TestBeanRepository.java @@ -1,6 +1,7 @@ package org.tests.repository; import io.ebean.BaseTestCase; +import io.ebean.DB; import org.junit.Test; import org.tests.model.basic.Customer; import org.tests.model.basic.ResetBasicData; @@ -15,6 +16,7 @@ public class TestBeanRepository extends BaseTestCase { @Test public void test() { + DB.find(Customer.class).where().in("name", "c0", "c1").delete(); ResetBasicData.reset(); diff --git a/src/test/java/org/tests/softdelete/TestSoftDeleteBasic.java b/src/test/java/org/tests/softdelete/TestSoftDeleteBasic.java index e9557baeb..605d9a3e6 100644 --- a/src/test/java/org/tests/softdelete/TestSoftDeleteBasic.java +++ b/src/test/java/org/tests/softdelete/TestSoftDeleteBasic.java @@ -1,6 +1,7 @@ package org.tests.softdelete; import io.ebean.BaseTestCase; +import io.ebean.DB; import io.ebean.Ebean; import io.ebean.Query; import io.ebean.SqlQuery; @@ -113,6 +114,7 @@ public class TestSoftDeleteBasic extends BaseTestCase { @Test public void testFindSoftDeleted() { + DB.truncate(EBasicSoftDelete.class); EBasicSoftDelete bean = new EBasicSoftDelete(); bean.setName("softDelFetch"); diff --git a/src/test/resources/ebean.properties b/src/test/resources/ebean.properties index 45f5209aa..66205aa64 100644 --- a/src/test/resources/ebean.properties +++ b/src/test/resources/ebean.properties @@ -21,7 +21,7 @@ ebean.ddl.generate=true ebean.ddl.run=true ebean.ddl.header=-- Generated by ebean ${version} at ${timestamp} ebean.packages=org.tests -datasource.default=h2 +datasource.default=nuodb ebean.dumpMetricsOnShutdown=true ebean.dumpMetricsOptions=sql,hash @@ -172,6 +172,12 @@ datasource.sqlserver.password=SqlS3rv#r datasource.sqlserver.url=jdbc:sqlserver://localhost:1433;databaseName=test_ebean;sendTimeAsDateTime=false datasource.sqlserver.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver +datasource.nuodb.schema=test_user +datasource.nuodb.username=test_user +datasource.nuodb.password=test +datasource.nuodb.url=jdbc:com.nuodb://localhost/unit +datasource.nuodb.driver=com.nuodb.jdbc.Driver + datasource.db2.username=db2admin datasource.db2.password=veryverysecret#1234 datasource.db2.databaseUrl=jdbc:db2://127.0.0.1:50000/SAMPLE diff --git a/src/test/resources/extra-ddl.xml b/src/test/resources/extra-ddl.xml index b01ed35b2..c8e1ed92a 100644 --- a/src/test/resources/extra-ddl.xml +++ b/src/test/resources/extra-ddl.xml @@ -5,7 +5,7 @@ drop view order_agg_vw if exists; - + 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 diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml index 50294ed9b..0e19a7c4b 100644 --- a/src/test/resources/logback-test.xml +++ b/src/test/resources/logback-test.xml @@ -77,7 +77,7 @@ - +