diff --git a/.github/workflows/h2database.yml b/.github/workflows/h2database.yml new file mode 100644 index 000000000..19bf37db6 --- /dev/null +++ b/.github/workflows/h2database.yml @@ -0,0 +1,41 @@ + +name: H2Database + +on: + workflow_dispatch: + schedule: + - cron: '10 1 * * *' + +jobs: + build: + + runs-on: ${{ matrix.os }} + permissions: + contents: read + packages: write + strategy: + fail-fast: false + matrix: + java_version: [11] + os: [ubuntu-latest] + + steps: + - uses: actions/checkout@v2 + - name: Set up Java + uses: actions/setup-java@v2 + with: + java-version: ${{ matrix.java_version }} + distribution: 'zulu' + - name: Maven cache + uses: actions/cache@v2 + env: + cache-name: maven-cache + with: + path: + ~/.m2 + key: build-${{ env.cache-name }} + - name: Maven version + run: mvn --version + - name: H2Database + run: mvn clean package + diff --git a/.github/workflows/multi-db-platform.yml b/.github/workflows/multi-db-platform.yml index 19603f174..bf776ed9b 100644 --- a/.github/workflows/multi-db-platform.yml +++ b/.github/workflows/multi-db-platform.yml @@ -31,17 +31,21 @@ jobs: path: ~/.m2 key: build-${{ env.cache-name }} - - name: h2 + - name: h2database run: mvn clean test - name: postgres run: mvn clean test -Dprops.file=testconfig/ebean-postgres.properties - name: mysql run: mvn clean test -Dprops.file=testconfig/ebean-mysql.properties - - name: sqlserver 2019 - run: mvn clean test -Dprops.file=testconfig/ebean-sqlserver19.properties - - name: sqlserver 2017 - run: mvn clean test -Dprops.file=testconfig/ebean-sqlserver17.properties - name: mariadb run: mvn clean test -Dprops.file=testconfig/ebean-mariadb.properties - - name: db2 - run: mvn clean test -Dprops.file=testconfig/ebean-db2.properties + - name: yugabyte + run: mvn clean test -Dprops.file=testconfig/ebean-yugabyte.properties + - name: sqlserver + run: mvn clean test -Dprops.file=testconfig/ebean-sqlserver17.properties +# - name: sqlserver19 +# run: mvn clean test -Dprops.file=testconfig/ebean-sqlserver19.properties +# - name: db2 +# run: mvn clean test -Dprops.file=testconfig/ebean-db2.properties +# - name: oracle +# run: mvn clean test -Dprops.file=testconfig/ebean-oracle.properties diff --git a/.github/workflows/sqlserver.yml b/.github/workflows/sqlserver.yml index fd10bafe6..169dd0017 100644 --- a/.github/workflows/sqlserver.yml +++ b/.github/workflows/sqlserver.yml @@ -34,7 +34,5 @@ jobs: path: ~/.m2 key: build-${{ env.cache-name }} -# - name: sqlserver 2019 latest -# run: mvn clean test -Dprops.file=testconfig/ebean-sqlserver.properties - - name: sqlserver 2017 latest + - name: sqlserver 2017 run: mvn clean test -Dprops.file=testconfig/ebean-sqlserver17.properties diff --git a/README.md b/README.md index 25ad08f5f..5ae53a456 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,12 @@ [![Multi-JDK Build](https://github.com/ebean-orm/ebean/actions/workflows/multi-jdk-build.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/multi-jdk-build.yml) [![JDK 18-ea](https://github.com/ebean-orm/ebean/actions/workflows/jdk-18-ea.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/jdk-18-ea.yml) +[![H2Database](https://github.com/ebean-orm/ebean/actions/workflows/h2database.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/h2database.yml) [![Postgres](https://github.com/ebean-orm/ebean/actions/workflows/postgres.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/postgres.yml) [![MySql](https://github.com/ebean-orm/ebean/actions/workflows/mysql.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/mysql.yml) [![MariaDB](https://github.com/ebean-orm/ebean/actions/workflows/mariadb.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/mariadb.yml) [![SqlServer](https://github.com/ebean-orm/ebean/actions/workflows/sqlserver.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/sqlserver.yml) +[![Yugabyte](https://github.com/ebean-orm/ebean/actions/workflows/yugabyte.yml/badge.svg)](https://github.com/ebean-orm/ebean/actions/workflows/yugabyte.yml) # Sponsors diff --git a/ebean-api/pom.xml b/ebean-api/pom.xml index 4acf975e8..fc69196ed 100644 --- a/ebean-api/pom.xml +++ b/ebean-api/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean api diff --git a/ebean-autotune/pom.xml b/ebean-autotune/pom.xml index 59f32d816..71a395ce1 100644 --- a/ebean-autotune/pom.xml +++ b/ebean-autotune/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT @@ -26,7 +26,7 @@ io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided @@ -34,7 +34,7 @@ org.glassfish.jaxb jaxb-runtime - 2.3.2 + 2.3.6 provided diff --git a/ebean-bom/pom.xml b/ebean-bom/pom.xml index d1310509a..f8c9e86bc 100644 --- a/ebean-bom/pom.xml +++ b/ebean-bom/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean bom @@ -71,25 +71,25 @@ io.ebean ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-api - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-core-type - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT @@ -101,64 +101,64 @@ io.ebean ebean-ddl-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-externalmapping-api - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-externalmapping-xml - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-autotune - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-querybean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean querybean-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided io.ebean kotlin-querybean-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided io.ebean ebean-test - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test io.ebean ebean-postgis - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-redis - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT diff --git a/ebean-core-type/pom.xml b/ebean-core-type/pom.xml index 45d6a9109..48cc579d4 100644 --- a/ebean-core-type/pom.xml +++ b/ebean-core-type/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean-core-type @@ -16,7 +16,7 @@ io.ebean ebean-api - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT diff --git a/ebean-core/pom.xml b/ebean-core/pom.xml index 0672b81a0..5542c8de4 100644 --- a/ebean-core/pom.xml +++ b/ebean-core/pom.xml @@ -3,7 +3,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean-core @@ -35,19 +35,19 @@ io.ebean ebean-api - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-core-type - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-externalmapping-api - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java index d1146ac15..017a9e0d7 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/InternalConfiguration.java @@ -283,7 +283,7 @@ public final class InternalConfiguration { private MultiValueBind createMultiValueBind(Platform platform) { // only Postgres at this stage - if (platform.base() == Platform.POSTGRES) { + if (platform.base() == Platform.POSTGRES || platform.base() == Platform.YUGABYTE) { return new PostgresMultiValueBind(); } return new MultiValueBind(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java index 1d32ce994..7559f7283 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java @@ -757,7 +757,7 @@ final class CQueryBuilder { } boolean isPlatformDistinctOn() { - return dbPlatform.isPlatform(Platform.POSTGRES); + return dbPlatform.isPlatform(Platform.POSTGRES) || dbPlatform.isPlatform(Platform.YUGABYTE); } boolean isPlatformDistinctNoLobs() { diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ArrayElementConverter.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ArrayElementConverter.java index 372de8c86..9982124af 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ArrayElementConverter.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ArrayElementConverter.java @@ -1,7 +1,9 @@ package io.ebeaninternal.server.type; import io.ebean.core.type.ScalarType; +import io.ebeaninternal.server.core.BasicTypeConverter; +import java.math.BigDecimal; import java.util.UUID; /** @@ -48,6 +50,8 @@ interface ArrayElementConverter { */ ArrayElementConverter DOUBLE = new DoubleConverter(); + ArrayElementConverter BIG_DECIMAL = new BigDecimalConverter(); + class LongConverter implements ArrayElementConverter { @Override @@ -99,6 +103,23 @@ interface ArrayElementConverter { } } + class BigDecimalConverter implements ArrayElementConverter { + + @Override + public BigDecimal fromSerialized(Object rawValue) { + return fromDbArray(rawValue); + } + + @Override + public BigDecimal fromDbArray(Object rawValue) { + if (rawValue instanceof BigDecimal) { + return (BigDecimal) rawValue; + } else { + return BasicTypeConverter.toBigDecimal(rawValue); + } + } + } + /** * String converter (noop based). */ diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeArrayList.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeArrayList.java index f0b0ad855..fdeef6a30 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeArrayList.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeArrayList.java @@ -13,6 +13,7 @@ import io.ebeaninternal.json.ModifyAwareList; import javax.persistence.PersistenceException; import java.io.IOException; import java.lang.reflect.Type; +import java.math.BigDecimal; import java.sql.SQLException; import java.sql.Types; import java.util.ArrayList; @@ -59,6 +60,9 @@ class ScalarTypeArrayList extends ScalarTypeArrayBase implements ScalarTyp if (valueType.equals(Double.class)) { return cache.computeIfAbsent(key, s -> new ScalarTypeArrayList(nullable, "float", DocPropertyType.DOUBLE, ArrayElementConverter.DOUBLE)); } + if (valueType.equals(BigDecimal.class)) { + return cache.computeIfAbsent(key, s -> new ScalarTypeArrayList(nullable, "decimal", DocPropertyType.DOUBLE, ArrayElementConverter.BIG_DECIMAL)); + } if (valueType.equals(String.class)) { return cache.computeIfAbsent(key, s -> new ScalarTypeArrayList(nullable, "varchar", DocPropertyType.TEXT, ArrayElementConverter.STRING)); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeArrayListH2.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeArrayListH2.java index c9bc3a3f2..6e16fb018 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeArrayListH2.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/ScalarTypeArrayListH2.java @@ -5,6 +5,7 @@ import io.ebean.core.type.DocPropertyType; import io.ebean.core.type.ScalarType; import java.lang.reflect.Type; +import java.math.BigDecimal; import java.sql.SQLException; import java.sql.Types; import java.util.HashMap; @@ -50,6 +51,9 @@ final class ScalarTypeArrayListH2 extends ScalarTypeArrayList { if (valueType.equals(Double.class)) { return cache.computeIfAbsent(key, s -> new ScalarTypeArrayListH2(nullable, "float", DocPropertyType.DOUBLE, ArrayElementConverter.DOUBLE)); } + if (valueType.equals(BigDecimal.class)) { + return cache.computeIfAbsent(key, s -> new ScalarTypeArrayListH2(nullable, "float", DocPropertyType.DOUBLE, ArrayElementConverter.BIG_DECIMAL)); + } if (valueType.equals(String.class)) { return cache.computeIfAbsent(key, s -> new ScalarTypeArrayListH2(nullable, "varchar", DocPropertyType.TEXT, ArrayElementConverter.STRING)); } diff --git a/ebean-ddl-generator/pom.xml b/ebean-ddl-generator/pom.xml index d624727cd..7d021bb15 100644 --- a/ebean-ddl-generator/pom.xml +++ b/ebean-ddl-generator/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean ddl generation @@ -28,14 +28,14 @@ io.ebean ebean-core-type - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided diff --git a/ebean-externalmapping-api/pom.xml b/ebean-externalmapping-api/pom.xml index ad4bf5abb..6fb013796 100644 --- a/ebean-externalmapping-api/pom.xml +++ b/ebean-externalmapping-api/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean external mapping api diff --git a/ebean-externalmapping-xml/pom.xml b/ebean-externalmapping-xml/pom.xml index 602f416c8..f7ed445e9 100644 --- a/ebean-externalmapping-xml/pom.xml +++ b/ebean-externalmapping-xml/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT @@ -26,20 +26,20 @@ org.slf4j slf4j-api - 1.7.30 + 1.7.33 provided io.ebean ebean-externalmapping-api - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT org.glassfish.jaxb jaxb-runtime - 2.3.2 + 2.3.6 @@ -59,14 +59,14 @@ io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test io.ebean ebean-ddl-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test diff --git a/ebean-kotlin/pom.xml b/ebean-kotlin/pom.xml index d4aa3c30d..9e621ee22 100644 --- a/ebean-kotlin/pom.xml +++ b/ebean-kotlin/pom.xml @@ -3,7 +3,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT 4.0.0 @@ -27,7 +27,7 @@ io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided @@ -49,7 +49,7 @@ io.ebean ebean-test - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test diff --git a/ebean-postgis/pom.xml b/ebean-postgis/pom.xml index ac99bf2e1..fc5dd2354 100644 --- a/ebean-postgis/pom.xml +++ b/ebean-postgis/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean postgis @@ -23,7 +23,7 @@ io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided @@ -74,7 +74,7 @@ io.ebean ebean-test - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test diff --git a/ebean-querybean/pom.xml b/ebean-querybean/pom.xml index 9c9f3ad93..4245c8d52 100644 --- a/ebean-querybean/pom.xml +++ b/ebean-querybean/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean querybean @@ -17,7 +17,7 @@ io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided @@ -56,21 +56,21 @@ io.ebean ebean-ddl-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test io.ebean querybean-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test io.ebean ebean-test - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test diff --git a/ebean-redis/pom.xml b/ebean-redis/pom.xml index d0b3ad2f1..60a67271e 100644 --- a/ebean-redis/pom.xml +++ b/ebean-redis/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean-redis @@ -22,35 +22,35 @@ io.ebean ebean-api - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided io.ebean ebean-querybean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test io.ebean querybean-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test io.ebean ebean-test - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test diff --git a/ebean-test/pom.xml b/ebean-test/pom.xml index 1d10a397a..e16031ed1 100644 --- a/ebean-test/pom.xml +++ b/ebean-test/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean test @@ -29,14 +29,14 @@ io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT provided io.ebean ebean-ddl-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT diff --git a/ebean-test/src/test/java/io/ebean/BaseTestCase.java b/ebean-test/src/test/java/io/ebean/BaseTestCase.java index e7b591c3d..c1920b894 100644 --- a/ebean-test/src/test/java/io/ebean/BaseTestCase.java +++ b/ebean-test/src/test/java/io/ebean/BaseTestCase.java @@ -195,6 +195,14 @@ public abstract class BaseTestCase { return Platform.DB2 == platform(); } + public boolean platformDistinctOn() { + return isPostgresCompatible(); + } + + public boolean isPostgresCompatible() { + return isPostgres() || isYugabyte(); + } + public boolean isPostgres() { return Platform.POSTGRES == platform().base(); } @@ -273,7 +281,7 @@ public abstract class BaseTestCase { * Platform specific IN clause assert. */ protected void platformAssertIn(String sql, String containsIn) { - if (isPostgres()) { + if (isPostgres() || isYugabyte()) { assertThat(sql).contains(containsIn+" = any("); } else { assertThat(sql).contains(containsIn+" in "); @@ -285,7 +293,7 @@ public abstract class BaseTestCase { * Platform specific NOT IN clause assert. */ protected void platformAssertNotIn(String sql, String containsIn) { - if (isPostgres()) { + if (isPostgres() || isYugabyte()) { assertThat(sql).contains(containsIn+" != all("); } else { assertThat(sql).contains(containsIn+" not in "); diff --git a/ebean-test/src/test/java/io/ebean/EbeanServer_deleteAllByIdTest.java b/ebean-test/src/test/java/io/ebean/EbeanServer_deleteAllByIdTest.java index 61c9031d0..455871ae6 100644 --- a/ebean-test/src/test/java/io/ebean/EbeanServer_deleteAllByIdTest.java +++ b/ebean-test/src/test/java/io/ebean/EbeanServer_deleteAllByIdTest.java @@ -11,10 +11,10 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertNotNull; -public class EbeanServer_deleteAllByIdTest extends BaseTestCase { +class EbeanServer_deleteAllByIdTest extends BaseTestCase { @Test - public void saveAllByVarArgs() { + void saveAllByVarArgs() { final EBasicVer bean0 = bean("foo0"); final EBasicVer bean1 = bean("foo1"); @@ -41,8 +41,7 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase { } @Test - public void deleteAllById() { - + void deleteAllById() { List someBeans = beans(3); DB.saveAll(someBeans); @@ -61,8 +60,7 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase { } @Test - public void deleteAllById_withTransaction() { - + void deleteAllById_withTransaction() { List someBeans = beans(3); DB.saveAll(someBeans); @@ -84,8 +82,7 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase { } @Test - public void deleteAllPermanentById() { - + void deleteAllPermanentById() { List someBeans = beans(3); DB.saveAll(someBeans); @@ -103,10 +100,8 @@ public class EbeanServer_deleteAllByIdTest extends BaseTestCase { platformAssertIn(loggedSql.get(0), "delete from e_basicver where id "); } - @Test - public void deleteAllPermanentById_withTransaction() { - + void deleteAllPermanentById_withTransaction() { List someBeans = beans(3); DB.saveAll(someBeans); diff --git a/ebean-test/src/test/java/io/ebean/UpdateQueryTest.java b/ebean-test/src/test/java/io/ebean/UpdateQueryTest.java index 26fcd0324..ec8e55c30 100644 --- a/ebean-test/src/test/java/io/ebean/UpdateQueryTest.java +++ b/ebean-test/src/test/java/io/ebean/UpdateQueryTest.java @@ -117,7 +117,7 @@ public class UpdateQueryTest extends BaseTestCase { assertThat(sql).hasSize(1); assertThat(rows).isEqualTo(0); - if (isPostgres()) { + if (isPostgresCompatible()) { assertSql(sql.get(0)).contains("update o_customer set status = ? where id = any(?)"); } else { assertSql(sql.get(0)).contains("update o_customer set status = ? where id in (?,?,?,?,?)"); // bind padding to 5 diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/expression/IsEmptyExpressionQueryTest.java b/ebean-test/src/test/java/io/ebeaninternal/server/expression/IsEmptyExpressionQueryTest.java index cf2a11e04..db93edf36 100644 --- a/ebean-test/src/test/java/io/ebeaninternal/server/expression/IsEmptyExpressionQueryTest.java +++ b/ebean-test/src/test/java/io/ebeaninternal/server/expression/IsEmptyExpressionQueryTest.java @@ -121,7 +121,7 @@ public class IsEmptyExpressionQueryTest extends BaseTestCase { .query(); query.findList(); - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(sqlOf(query)).contains("select distinct on (t0.id) t0.id from o_customer t0 join contact u1 on u1.customer_id = t0.id where not exists (select 1 from contact_note x where x.contact_id = u1.id)"); } else { @@ -140,7 +140,7 @@ public class IsEmptyExpressionQueryTest extends BaseTestCase { .query(); query.findList(); - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(sqlOf(query)).contains("select distinct on (t0.id) t0.id from o_customer t0 join contact u1 on u1.customer_id = t0.id where exists (select 1 from contact_note x where x.contact_id = u1.id)"); } else { diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/grammer/EqlParserTest.java b/ebean-test/src/test/java/io/ebeaninternal/server/grammer/EqlParserTest.java index 4d2f4f2e2..89201f9a7 100644 --- a/ebean-test/src/test/java/io/ebeaninternal/server/grammer/EqlParserTest.java +++ b/ebean-test/src/test/java/io/ebeaninternal/server/grammer/EqlParserTest.java @@ -22,17 +22,15 @@ import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; -public class EqlParserTest extends BaseTestCase { - +class EqlParserTest extends BaseTestCase { @Test - public void illegal_syntax() { + void illegal_syntax() { assertThrows(IllegalArgumentException.class, () -> parse("find Article where name = :p0")); } @Test - public void where_eq() { - + void where_eq() { Query query = parse("where name eq 'Rob'"); query.findList(); @@ -40,7 +38,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_eqOrNull_bindVal() { + void where_eqOrNull_bindVal() { Query query = parse("where name eqOrNull 'Rob'"); query.findList(); @@ -48,7 +46,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_eqOrNull_bindNamed() { + void where_eqOrNull_bindNamed() { Query query = parse("where name eqOrNull :name"); query.setParameter("name", "Rob"); query.findList(); @@ -57,8 +55,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_eqOrNull_bindPositioned() { - + void where_eqOrNull_bindPositioned() { final Query query = where("name eqOrNull ?", "Rob"); query.findList(); if (isH2()) { @@ -67,8 +64,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_eqOrNull_bindPositioned_asNull() { - + void where_eqOrNull_bindPositioned_asNull() { final Query query = where("name eqOrNull ?", (String)null); query.findList(); if (isH2()) { @@ -77,8 +73,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_gtOrNull_bindPositioned() { - + void where_gtOrNull_bindPositioned() { final Query query = where("name gtOrNull ?", "Rob"); query.findList(); if (isH2()) { @@ -87,8 +82,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_geOrNull_bindPositioned() { - + void where_geOrNull_bindPositioned() { final Query query = where("name geOrNull ?", "Rob"); query.findList(); if (isH2()) { @@ -97,8 +91,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_ltOrNull_bindPositioned() { - + void where_ltOrNull_bindPositioned() { final Query query = where("name ltOrNull ?", "Rob"); query.findList(); if (isH2()) { @@ -107,8 +100,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_leOrNull_bindPositioned() { - + void where_leOrNull_bindPositioned() { final Query query = where("name leOrNull ?", "Rob"); query.findList(); if (isH2()) { @@ -117,8 +109,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_eq_reverse() { - + void where_eq_reverse() { Query query = parse("where 'Rob' eq name"); query.findList(); @@ -126,40 +117,35 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_gt_reverse() { - + void where_gt_reverse() { Query query = parse("where 'Rob' > name"); query.findList(); assertSql(query).contains("where t0.name < ?"); } @Test - public void where_gte_reverse() { - + void where_gte_reverse() { Query query = parse("where 'Rob' >= name"); query.findList(); assertSql(query).contains("where t0.name <= ?"); } @Test - public void where_lt_reverse() { - + void where_lt_reverse() { Query query = parse("where 'Rob' < name"); query.findList(); assertSql(query).contains("where t0.name > ?"); } @Test - public void where_lte_reverse() { - + void where_lte_reverse() { Query query = parse("where 'Rob' <= name"); query.findList(); assertSql(query).contains("where t0.name >= ?"); } @Test - public void where_ieq() { - + void where_ieq() { Query query = parse("where name ieq 'Rob'"); query.findList(); @@ -167,8 +153,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_ine() { - + void where_ine() { Query query = parse("where name ine 'Rob'"); query.findList(); @@ -176,16 +161,14 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_ieq_reverse() { - + void where_ieq_reverse() { Query query = parse("where 'Rob' ieq name"); query.findList(); assertSql(query).contains("where lower(t0.name) = ?"); } @Test - public void where_ine_reverse() { - + void where_ine_reverse() { Query query = parse("where 'Rob' ine name"); query.findList(); @@ -193,8 +176,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_eq2() { - + void where_eq2() { Query query = parse("where name = 'Rob'"); query.findList(); @@ -202,8 +184,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_namedParam() { - + void where_namedParam() { Query query = parse("where name eq :name"); query.setParameter("name", "Rob"); query.findList(); @@ -212,7 +193,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_namedParam_otherOrder() { + void where_namedParam_otherOrder() { Query query = parse("where :nm < name"); query.setParameter("nm", "Rob"); query.findList(); @@ -221,8 +202,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_namedParam_startsWith() { - + void where_namedParam_startsWith() { Query query = parse("where name startsWith :name"); query.setParameter("name", "Rob"); query.findList(); @@ -232,8 +212,7 @@ public class EqlParserTest extends BaseTestCase { @Test @IgnorePlatform({Platform.HANA, Platform.DB2}) // The HANA JDBC driver checks the field length on binding and rejects 'NEW' - public void where_or1() { - + void where_or1() { Query query = parse("where name = 'Rob' or (status = 'NEW' and smallnote is null)"); query.findList(); @@ -242,8 +221,7 @@ public class EqlParserTest extends BaseTestCase { @Test @ForPlatform({Platform.HANA, Platform.DB2}) - public void where_or1_hana() { - + void where_or1_hana() { Query query = parse("where name = 'Rob' or (status = 'N' and smallnote is null)"); query.findList(); @@ -252,8 +230,7 @@ public class EqlParserTest extends BaseTestCase { @Test @IgnorePlatform({Platform.HANA, Platform.DB2}) // The HANA & DB2 JDBC driver checks the field length on binding and rejects 'NEW' - public void where_or2() { - + void where_or2() { Query query = parse("where (name = 'Rob' or status = 'NEW') and smallnote is null"); query.findList(); @@ -262,8 +239,7 @@ public class EqlParserTest extends BaseTestCase { @Test @ForPlatform({Platform.HANA, Platform.DB2}) - public void where_or2_hana() { - + void where_or2_hana() { Query query = parse("where (name = 'Rob' or status = 'N') and smallnote is null"); query.findList(); @@ -272,8 +248,7 @@ public class EqlParserTest extends BaseTestCase { @Test @IgnorePlatform({Platform.HANA, Platform.DB2}) // The HANA & DB2 JDBC driver checks the field length on binding and rejects 'NEW' - public void test_simplifyExpressions() { - + void test_simplifyExpressions() { Query query = parse("where not (name = 'Rob' and status = 'NEW')"); query.findList(); assertSql(query).contains("where not (t0.name = ? and t0.status = ?)"); @@ -289,8 +264,7 @@ public class EqlParserTest extends BaseTestCase { @Test @ForPlatform({Platform.HANA, Platform.DB2}) - public void test_simplifyExpressions_hana() { - + void test_simplifyExpressions_hana() { Query query = parse("where not (name = 'Rob' and status = 'N')"); query.findList(); assertSql(query).contains("where not (t0.name = ? and t0.status = ?)"); @@ -305,8 +279,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_in() { - + void where_in() { Query query = parse("where name in ('Rob','Jim')"); query.findList(); @@ -314,8 +287,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_in_when_namedParams() { - + void where_in_when_namedParams() { Query query = parse("where name in (:one, :two)"); query.setParameter("one", "Foo"); query.setParameter("two", "Bar"); @@ -325,8 +297,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_in_when_namedParams_withWhitespace() { - + void where_in_when_namedParams_withWhitespace() { Query query = parse("where name in (:one, :two)"); query.setParameter("one", "Foo"); query.setParameter("two", "Bar"); @@ -336,8 +307,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_in_when_namedParams_withNoWhitespace() { - + void where_in_when_namedParams_withNoWhitespace() { Query query = parse("where name in (:one,:two)"); query.setParameter("one", "Foo"); query.setParameter("two", "Bar"); @@ -347,8 +317,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_in_when_namedParamAsList() { - + void where_in_when_namedParamAsList() { Query query = parse("where name in (:names)"); query.setParameter("names", Arrays.asList("Baz", "Maz", "Jim")); query.findList(); @@ -357,60 +326,49 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_inOrEmpty_withVals() { - + void where_inOrEmpty_withVals() { final Query query = where("name inOrEmpty ?", Arrays.asList("Baz", "Maz", "Jim")); query.findList(); platformAssertIn(query.getGeneratedSql(), "where t0.name"); } @Test - public void where_inOrEmpty_withValsAsSet() { - + void where_inOrEmpty_withValsAsSet() { final Query query = where("name inOrEmpty ?", new HashSet<>(Arrays.asList("Baz", "Maz", "Jim"))); query.findList(); platformAssertIn(query.getGeneratedSql(), "where t0.name"); } @Test - public void where_inOrEmpty_withEmpty() { - + void where_inOrEmpty_withEmpty() { final Query query = where("name inOrEmpty ?", new ArrayList()); query.findList(); assertSql(query).doesNotContain("where"); } @Test - public void where_inOrEmpty_withNull() { - + void where_inOrEmpty_withNull() { List names = null; final Query query = where("name inOrEmpty ?", names); query.findList(); assertSql(query).doesNotContain("where"); } - @Test//(expected = IllegalArgumentException.class) - public void query_inOrEmpty_withVals() { + @Test + void query_inOrEmpty_withVals() { assertThrows(IllegalArgumentException.class, () -> parse("where name inOrEmpty (:names)")); -// query.setParameter("names", Arrays.asList("Baz", "Maz", "Jim")); -// query.findList(); -// platformAssertIn(query.getGeneratedSql(), "where t0.name"); } /** * This test fails in that we can't use inOrEmpty with named parameters. */ - @Test//(expected = IllegalArgumentException.class) - public void query_inOrEmpty_withNamedParams_expect_IllegalArgument() { + @Test + void query_inOrEmpty_withNamedParams_expect_IllegalArgument() { assertThrows(IllegalArgumentException.class, () -> parse("where name inOrEmpty (:names)")); -// query.setParameter("names", new ArrayList<>()); -// assertThrows(IllegalArgumentException.class, query::findList); -// assertSql(query).doesNotContain("where"); } @Test - public void where_inrange() { - + void where_inrange() { Query query = parse("where name inrange 'As' to 'B'"); query.findList(); @@ -418,8 +376,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_inrange_withNamedParams() { - + void where_inrange_withNamedParams() { Query query = parse("where name inrange :one to :two"); query.setParameter("one", "a"); query.setParameter("two", "b"); @@ -429,8 +386,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_between() { - + void where_between() { Query query = parse("where name between 'As' and 'B'"); query.findList(); @@ -438,8 +394,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_between_withNamedParams() { - + void where_between_withNamedParams() { Query query = parse("where name between :one and :two"); query.setParameter("one", "a"); query.setParameter("two", "b"); @@ -449,8 +404,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_betweenProperty() { - + void where_betweenProperty() { Query query = parse("where 'x' between name and smallnote"); query.findList(); @@ -458,8 +412,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_betweenProperty_withNamed() { - + void where_betweenProperty_withNamed() { Query query = parse("where :some between name and smallnote"); query.setParameter("some", "A"); query.findList(); @@ -468,8 +421,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void selectFetch_basic() { - + void selectFetch_basic() { Query query = parse("select name fetch billingAddress"); query.findList(); @@ -477,8 +429,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void selectFetch_basic2() { - + void selectFetch_basic2() { ResetBasicData.reset(); Query query = parse("select name, status fetch billingAddress"); @@ -488,8 +439,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void selectFetch_withProperties() { - + void selectFetch_withProperties() { Query query = parse("select name fetch billingAddress (line1, city) "); query.findList(); @@ -498,8 +448,7 @@ public class EqlParserTest extends BaseTestCase { @Test @IgnorePlatform(Platform.SQLSERVER) - public void selectFetchFetchLimit() { - + void selectFetchFetchLimit() { Query query = parse("select name fetch billingAddress (line1, city) fetch shippingAddress (line1) limit 10"); query.findList(); @@ -507,18 +456,15 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void selectFetchFetchMany() { - + void selectFetchFetchMany() { Query query = parse("select name fetch billingAddress (line1, city) fetch contacts"); query.findList(); assertSql(query, 16).contains("select t0.id, t0.name, t1.id, t1.line_1, t1.city, t2.id, t2.first_name, t2.last_name, t2.phone, t2.mobile, t2.email, t2.is_member, t2.cretime, t2.updtime, t2.customer_id, t2.group_id from o_customer t0"); } - @Test - public void selectFetchFetchManyProperties() { - + void selectFetchFetchManyProperties() { Query query = parse("select name fetch billingAddress (line1, city) fetch contacts (email)"); query.findList(); @@ -527,8 +473,7 @@ public class EqlParserTest extends BaseTestCase { @Test @IgnorePlatform(Platform.SQLSERVER) - public void selectFetchFetchManyPropertiesLimit() { - + void selectFetchFetchManyPropertiesLimit() { ResetBasicData.reset(); LoggedSql.start(); @@ -543,8 +488,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_basic() { - + void fetch_basic() { Query query = parse("fetch billingAddress"); query.findList(); @@ -552,8 +496,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_withProperty() { - + void fetch_withProperty() { Query query = parse("fetch billingAddress (city)"); query.findList(); @@ -561,8 +504,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_withProperty_noWhitespace() { - + void fetch_withProperty_noWhitespace() { Query query = parse("fetch billingAddress(city)"); query.findList(); @@ -570,8 +512,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_basic_multiple() { - + void fetch_basic_multiple() { Query query = parse("fetch billingAddress fetch shippingAddress"); query.findList(); @@ -580,8 +521,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_basic_multiple_withProperties() { - + void fetch_basic_multiple_withProperties() { Query query = parse("fetch billingAddress (city) fetch shippingAddress (city)"); query.findList(); @@ -589,8 +529,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_lazy() { - + void fetch_lazy() { Query query = parse("fetch lazy billingAddress"); query.findList(); @@ -598,8 +537,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_lazy50() { - + void fetch_lazy50() { Query query = parse("fetch lazy(50) billingAddress"); query.findList(); @@ -607,8 +545,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_query50() { - + void fetch_query50() { ResetBasicData.reset(); Query query = parse("fetch query(50) billingAddress"); query.findList(); @@ -617,8 +554,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_query50_asHint() { - + void fetch_query50_asHint() { ResetBasicData.reset(); Query query = parse("fetch query(50) billingAddress (city)"); query.findList(); @@ -627,8 +563,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void fetch_lazy50_asHint() { - + void fetch_lazy50_asHint() { ResetBasicData.reset(); Query query = parse("fetch lazy(50) billingAddress (city) order by id"); List list = query.findList(); @@ -640,8 +575,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void select() { - + void select() { ResetBasicData.reset(); Query query = parse("select (name)"); @@ -654,8 +588,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void select_sum() { - + void select_sum() { ResetBasicData.reset(); Query query = parse("select (sum(id))"); @@ -664,8 +597,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void select_max() { - + void select_max() { ResetBasicData.reset(); Query query = parse("select (max(cretime))"); @@ -678,8 +610,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void select_agg() { - + void select_agg() { ResetBasicData.reset(); Query query = parse("select status, max(cretime)"); @@ -690,8 +621,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void select_agg_sum() { - + void select_agg_sum() { ResetBasicData.reset(); Query query = DB.createQuery(OrderDetail.class, "select sum(orderQty) fetch `order` (id)"); @@ -702,8 +632,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void selectDistinct() { - + void selectDistinct() { ResetBasicData.reset(); Query query = parse("select distinct (name)"); @@ -711,10 +640,8 @@ public class EqlParserTest extends BaseTestCase { assertSql(query).contains("select distinct t0.name from o_customer t0"); } - @Test - public void limit() { - + void limit() { ResetBasicData.reset(); Query query = parse("limit 10"); @@ -725,8 +652,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void limitOffset() { - + void limitOffset() { ResetBasicData.reset(); Query query = parse("order by name limit 10 offset 5"); @@ -737,8 +663,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void orderBy() { - + void orderBy() { ResetBasicData.reset(); Query query = parse("order by id"); @@ -749,8 +674,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void orderBy_desc() { - + void orderBy_desc() { ResetBasicData.reset(); Query query = parse("order by id desc"); @@ -761,8 +685,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void orderBy_nullsLast() { - + void orderBy_nullsLast() { if (!isPlatformOrderNullsSupport()) { return; } @@ -777,8 +700,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void orderBy_nullsFirst() { - + void orderBy_nullsFirst() { if (!isPlatformOrderNullsSupport()) { return; } @@ -792,8 +714,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void orderBy_multiple() { - + void orderBy_multiple() { if (!isPlatformOrderNullsSupport()) { return; } @@ -807,15 +728,13 @@ public class EqlParserTest extends BaseTestCase { } private Query parse(String raw) { - Query query = DB.find(Customer.class); EqlParser.parse(raw, (SpiQuery) query); return query; } @Test - public void where_simple() { - + void where_simple() { final Query query = where("name isNotNull"); query.findList(); if (isH2()) { @@ -824,8 +743,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_withParams() { - + void where_withParams() { final Query query = where("id isNotNull and name = ? and smallnote istartsWith ?", "Rob", "Foo"); query.findList(); if (isH2()) { @@ -834,8 +752,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_withParamsQuPos() { - + void where_withParamsQuPos() { final Query query = where("name = ?1 and smallnote istartsWith ?2 and name like ?1", "Rob", "Foo"); query.findList(); if (isH2()) { @@ -844,8 +761,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_orSimple() { - + void where_orSimple() { final Query query = where("id isNotNull or name = ?", "Rob", "Foo"); query.findList(); if (isH2()) { @@ -854,8 +770,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_orWithParams() { - + void where_orWithParams() { final Query query = where("(id isNotNull or name = ?) and smallnote istartsWith ?", "Rob", "Foo"); query.findList(); if (isH2()) { @@ -864,8 +779,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_dateInRange() { - + void where_dateInRange() { final Query query = where("anniversary inrange ? to ?", LocalDate.now().minusDays(7), LocalDate.now()); query.findList(); if (isH2()) { @@ -874,8 +788,7 @@ public class EqlParserTest extends BaseTestCase { } @Test - public void where_dateInRange_camelCase() { - + void where_dateInRange_camelCase() { final Query query = where("anniversary inRange ? to ?", LocalDate.now().minusDays(7), LocalDate.now()); query.findList(); if (isH2()) { @@ -884,10 +797,8 @@ public class EqlParserTest extends BaseTestCase { } private Query where(String where, Object... params) { - Query query = DB.find(Customer.class); EqlParser.parseWhere(where, query.where(), query.getExpressionFactory(), params); - return query; } } diff --git a/ebean-test/src/test/java/io/ebeaninternal/server/rawsql/TestRawSqlBuilder.java b/ebean-test/src/test/java/io/ebeaninternal/server/rawsql/TestRawSqlBuilder.java index 84239ca9b..c4fa0d4c9 100644 --- a/ebean-test/src/test/java/io/ebeaninternal/server/rawsql/TestRawSqlBuilder.java +++ b/ebean-test/src/test/java/io/ebeaninternal/server/rawsql/TestRawSqlBuilder.java @@ -207,13 +207,9 @@ public class TestRawSqlBuilder extends BaseTestCase { assertEquals(5, columnMapping.getIndexPosition("dataMonth")); } + @ForPlatform(Platform.POSTGRES) @Test public void postgres_parse_withDateTruncCaseHaving() { - - if (!isPostgres()) { - return; - } - ResetBasicData.reset(); String sql = "select DATE_TRUNC('DAY', d.order_date) as day," + diff --git a/ebean-test/src/test/java/org/tests/basic/TestQueryForUpdate.java b/ebean-test/src/test/java/org/tests/basic/TestQueryForUpdate.java index 28768109c..89217ca7a 100644 --- a/ebean-test/src/test/java/org/tests/basic/TestQueryForUpdate.java +++ b/ebean-test/src/test/java/org/tests/basic/TestQueryForUpdate.java @@ -34,8 +34,6 @@ public class TestQueryForUpdate extends BaseTestCase { if (isSqlServer()) { assertThat(sqlOf(query)).contains("with (updlock)"); - } else if (isPostgres()) { - assertThat(sqlOf(query)).contains("for update"); } else { assertThat(sqlOf(query)).contains("for update"); } @@ -134,14 +132,10 @@ public class TestQueryForUpdate extends BaseTestCase { List sql = LoggedSql.stop(); assertThat(sql).hasSize(2); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertSql(sql.get(0)).contains("from e_basic t0 where t0.id ="); assertSql(sql.get(1)).contains("from e_basic t0 where t0.id ="); - if (isPostgres()) { - assertSql(sql.get(1)).contains("for update"); - } else { - assertSql(sql.get(1)).contains("for update"); - } + assertSql(sql.get(1)).contains("for update"); } transaction.end(); @@ -165,8 +159,6 @@ public class TestQueryForUpdate extends BaseTestCase { assertThat(sqlOf(query)).contains("for update"); } else if (isSqlServer()) { assertThat(sqlOf(query)).contains("with (updlock,nowait)"); - } else if (isPostgres()) { - assertThat(sqlOf(query)).contains("for update nowait"); } else { assertThat(sqlOf(query)).contains("for update nowait"); } @@ -192,8 +184,6 @@ public class TestQueryForUpdate extends BaseTestCase { assertThat(sqlOf(query)).contains("with (updlock,nowait)"); } else if (isH2()) { assertThat(sqlOf(query)).contains("for update"); - } else if (isPostgres()) { - assertThat(sqlOf(query)).contains("for update nowait"); } else { assertThat(sqlOf(query)).contains("for update nowait"); } diff --git a/ebean-test/src/test/java/org/tests/basic/type/TestInetAddressType.java b/ebean-test/src/test/java/org/tests/basic/type/TestInetAddressType.java index fad06a837..5dbfa8b6a 100644 --- a/ebean-test/src/test/java/org/tests/basic/type/TestInetAddressType.java +++ b/ebean-test/src/test/java/org/tests/basic/type/TestInetAddressType.java @@ -26,8 +26,7 @@ public class TestInetAddressType extends TransactionalTestCase { @Test public void testIp6() throws UnknownHostException { - - if (isPostgres() || isYugabyte()) { + if (isPostgresCompatible()) { insertUpdateDeleteFind("2001:db8:85a3:0:0:8a2e:370:7334", "2001:db8:85a3::8a2e:370:7334", "2001:4f8:3:ba::/64", "2001:4f8:3:ba::/64"); } else { insertUpdateDeleteFind("2001:db8:85a3:0:0:8a2e:370:7334", "2001:db8:85a3:0:0:8a2e:370:7334", "192.168.100.128/25", "192.168.100.128/25"); diff --git a/ebean-test/src/test/java/org/tests/basic/type/TestSqlRowUUID.java b/ebean-test/src/test/java/org/tests/basic/type/TestSqlRowUUID.java index d2b3084f3..1578462a2 100644 --- a/ebean-test/src/test/java/org/tests/basic/type/TestSqlRowUUID.java +++ b/ebean-test/src/test/java/org/tests/basic/type/TestSqlRowUUID.java @@ -43,7 +43,7 @@ public class TestSqlRowUUID extends BaseTestCase { assertThat(value).isEqualTo(e.getId()); - if (isPostgres()) { + if (isPostgresCompatible()) { usingPostrgesAnyWithPositionedParameter_needsExplicitCast(e); } } diff --git a/ebean-test/src/test/java/org/tests/compositekeys/TestOnCascadeDeleteChildrenWithCompositeKeys.java b/ebean-test/src/test/java/org/tests/compositekeys/TestOnCascadeDeleteChildrenWithCompositeKeys.java index bddc156bb..dbcaf4b0d 100644 --- a/ebean-test/src/test/java/org/tests/compositekeys/TestOnCascadeDeleteChildrenWithCompositeKeys.java +++ b/ebean-test/src/test/java/org/tests/compositekeys/TestOnCascadeDeleteChildrenWithCompositeKeys.java @@ -86,7 +86,7 @@ public class TestOnCascadeDeleteChildrenWithCompositeKeys extends BaseTestCase { beanProperty.findIdsByParentId(null, ids, null, null, true); beanProperty.findIdsByParentId(1L, null, null, null, true); } - + /** * Test makes select and a select distinct of entities with composite keys. */ @@ -106,7 +106,7 @@ public class TestOnCascadeDeleteChildrenWithCompositeKeys extends BaseTestCase { query1.setDistinct(true).setCountDistinct(CountDistinctOrder.COUNT_DESC_ATTR_ASC).setMaxRows(20); query1.findSingleAttributeList(); - if (isH2() || isMariaDB() || isPostgres()) { + if (isH2() || isMariaDB() || isPostgresCompatible()) { assertThat(query1.getGeneratedSql()).contains("select distinct r1.attribute_, count(*) from " + "(select distinct t0.user_id, t0.role_id, t1.name as attribute_ " + "from em_user_role t0 join em_user t1 on t1.id = t0.user_id) r1 " diff --git a/ebean-test/src/test/java/org/tests/delete/TestDeleteByQuery.java b/ebean-test/src/test/java/org/tests/delete/TestDeleteByQuery.java index 8ff2ad54b..7d01a60d8 100644 --- a/ebean-test/src/test/java/org/tests/delete/TestDeleteByQuery.java +++ b/ebean-test/src/test/java/org/tests/delete/TestDeleteByQuery.java @@ -40,7 +40,7 @@ public class TestDeleteByQuery extends BaseTestCase { assertSql(sql.get(0)).contains("delete from bbookmark_user where id in (select top 3 t0.id from bbookmark_user t0 where t0.name like "); } else { assertSql(sql.get(0)).contains("delete from bbookmark_user where id in (select t0.id from bbookmark_user t0 where t0.name like"); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertSql(sql.get(0)).contains("limit 3"); } } diff --git a/ebean-test/src/test/java/org/tests/history/TestHistoryInsert.java b/ebean-test/src/test/java/org/tests/history/TestHistoryInsert.java index c78e49c6e..5039ad72e 100644 --- a/ebean-test/src/test/java/org/tests/history/TestHistoryInsert.java +++ b/ebean-test/src/test/java/org/tests/history/TestHistoryInsert.java @@ -139,7 +139,7 @@ public class TestHistoryInsert extends BaseTestCase { assertThat(sql).hasSize(1); if (isH2()) { assertThat(sql.get(0)).contains("and t0.sys_period_start < ? and (t0.sys_period_end >= ? or t0.sys_period_end is null)"); - } else if (isPostgres()) { + } else if (isPostgresCompatible()) { assertThat(sql.get(0)).contains("and lower(t0.sys_period) < ? and (upper(t0.sys_period) >= ? or upper(t0.sys_period) is null)"); } diff --git a/ebean-test/src/test/java/org/tests/iud/TestCarWheelIud.java b/ebean-test/src/test/java/org/tests/iud/TestCarWheelIud.java index 4b57bede3..51b1fe382 100644 --- a/ebean-test/src/test/java/org/tests/iud/TestCarWheelIud.java +++ b/ebean-test/src/test/java/org/tests/iud/TestCarWheelIud.java @@ -85,7 +85,7 @@ public class TestCarWheelIud extends BaseTestCase { final List sql = LoggedSql.stop(); assertThat(sql).hasSize(2); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertSql(sql.get(0)).contains("select t0.brand, sum(t0.sold) from sa_car t0 group by t0.brand limit 10"); assertSql(sql.get(1)).contains("select count(*) from ( select t0.brand, sum(t0.sold) from sa_car t0 group by t0.brand)"); } diff --git a/ebean-test/src/test/java/org/tests/model/aggregation/TestAggregationTopLevel.java b/ebean-test/src/test/java/org/tests/model/aggregation/TestAggregationTopLevel.java index 950ba1588..d8c7fea17 100644 --- a/ebean-test/src/test/java/org/tests/model/aggregation/TestAggregationTopLevel.java +++ b/ebean-test/src/test/java/org/tests/model/aggregation/TestAggregationTopLevel.java @@ -49,7 +49,7 @@ public class TestAggregationTopLevel extends BaseTestCase { List sql = LoggedSql.stop(); assertThat(sql).hasSize(2); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertSql(sql.get(0)).contains("select count(*) from ( select t0.edate, sum(t0.total_kms) from d_machine_stats t0 group by t0.edate having sum(t0.total_kms) > ?)"); assertSql(sql.get(1)).contains("select t0.edate, sum(t0.total_kms) from d_machine_stats t0 group by t0.edate having sum(t0.total_kms) > ? limit 10"); } else if (isSqlServer()) { diff --git a/ebean-test/src/test/java/org/tests/model/array/EArrayBean.java b/ebean-test/src/test/java/org/tests/model/array/EArrayBean.java index dfe91a27b..6ff468209 100644 --- a/ebean-test/src/test/java/org/tests/model/array/EArrayBean.java +++ b/ebean-test/src/test/java/org/tests/model/array/EArrayBean.java @@ -8,6 +8,7 @@ import io.ebean.annotation.NotNull; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Version; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -38,7 +39,7 @@ public class EArrayBean { List otherIds = new ArrayList<>(); @DbArray - List doubs; + List decimals; @DbArray List statuses; @@ -103,12 +104,12 @@ public class EArrayBean { this.otherIds = otherIds; } - public List getDoubs() { - return doubs; + public List getDecimals() { + return decimals; } - public void setDoubs(List doubs) { - this.doubs = doubs; + public void setDecimals(List decimals) { + this.decimals = decimals; } public List getStatuses() { diff --git a/ebean-test/src/test/java/org/tests/model/array/TestDbArray_asSet.java b/ebean-test/src/test/java/org/tests/model/array/TestDbArray_asSet.java index 0ff6f57e1..8a2cb9911 100644 --- a/ebean-test/src/test/java/org/tests/model/array/TestDbArray_asSet.java +++ b/ebean-test/src/test/java/org/tests/model/array/TestDbArray_asSet.java @@ -53,7 +53,7 @@ public class TestDbArray_asSet extends BaseTestCase { assertThat(found.getPhoneNumbers()).containsExactly("4321", "9823"); - if (isPostgres()) { + if (isPostgresCompatible()) { Query query = DB.find(EArraySetBean.class) .where() .arrayContains("otherIds", 96L, 97L) diff --git a/ebean-test/src/test/java/org/tests/model/array/TestDbArray_basic.java b/ebean-test/src/test/java/org/tests/model/array/TestDbArray_basic.java index 0a4b1a0fb..7352a5bd5 100644 --- a/ebean-test/src/test/java/org/tests/model/array/TestDbArray_basic.java +++ b/ebean-test/src/test/java/org/tests/model/array/TestDbArray_basic.java @@ -7,6 +7,7 @@ import io.ebean.annotation.Platform; import io.ebean.test.LoggedSql; import org.junit.jupiter.api.Test; +import java.math.BigDecimal; import java.sql.SQLException; import java.util.*; @@ -14,7 +15,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; -public class TestDbArray_basic extends BaseTestCase { +class TestDbArray_basic extends BaseTestCase { private final EArrayBean bean = new EArrayBean(); @@ -22,7 +23,7 @@ public class TestDbArray_basic extends BaseTestCase { @Test @IgnorePlatform(Platform.HANA) - public void insert() throws SQLException { + void insert() throws SQLException { DB.find(EArrayBean.class).delete(); bean.setName("some stuff"); assertThat(bean.getStatuses()).as("DbArray is auto initialised").isNotNull(); @@ -31,17 +32,16 @@ public class TestDbArray_basic extends BaseTestCase { phNumbers.add("4321"); phNumbers.add("9823"); - - List doubles = new ArrayList<>(); - doubles.add(1.3); - doubles.add(2.4); + List doubles = new ArrayList<>(); + doubles.add(BigDecimal.valueOf(1.3)); + doubles.add(BigDecimal.valueOf(2.4)); bean.getUids().add(UUID.randomUUID()); bean.getUids().add(UUID.randomUUID()); bean.getOtherIds().add(95L); bean.getOtherIds().add(96L); bean.getOtherIds().add(97L); - bean.setDoubs(doubles); + bean.setDecimals(doubles); bean.setStatuses(new ArrayList<>()); bean.getStatuses().add(EArrayBean.Status.ONE); bean.getStatuses().add(EArrayBean.Status.THREE); @@ -60,7 +60,7 @@ public class TestDbArray_basic extends BaseTestCase { assertThat(found.getPhoneNumbers()).containsExactly("4321", "9823"); - if (isPostgres()) { + if (isPostgresCompatible()) { Query query = DB.find(EArrayBean.class) .where() .arrayContains("otherIds", 96L, 97L) @@ -118,7 +118,7 @@ public class TestDbArray_basic extends BaseTestCase { } //@Test//(dependsOnMethods = "insert") - public void json_parse_format() { + void json_parse_format() { String asJson = DB.json().toJson(found); assertThat(asJson).contains("\"phoneNumbers\":[\"4321\",\"9823\"]"); @@ -132,7 +132,7 @@ public class TestDbArray_basic extends BaseTestCase { } //@Test//(dependsOnMethods = "insert") - public void update_when_notDirty() { + void update_when_notDirty() { found.setName("jack"); LoggedSql.start(); @@ -144,7 +144,7 @@ public class TestDbArray_basic extends BaseTestCase { } //@Test//(dependsOnMethods = "update_when_notDirty") - public void update_when_dirty() { + void update_when_dirty() { found.getPhoneNumbers().add("9987"); found.getUids().add(UUID.randomUUID()); @@ -158,8 +158,7 @@ public class TestDbArray_basic extends BaseTestCase { @Test @IgnorePlatform(Platform.HANA) - public void insertNulls() { - + void insertNulls() { EArrayBean bean = new EArrayBean(); bean.setName("some nulls"); bean.setPhoneNumbers(null); @@ -171,8 +170,7 @@ public class TestDbArray_basic extends BaseTestCase { @Test @IgnorePlatform(Platform.HANA) - public void insertAll_when_hasNulls() { - + void insertAll_when_hasNulls() { EArrayBean bean = new EArrayBean(); bean.setName("some nulls"); bean.setPhoneNumbers(null); @@ -189,16 +187,16 @@ public class TestDbArray_basic extends BaseTestCase { /** * Platforms without Array support use JSON which by default isn't including null values. */ - @ForPlatform({Platform.H2, Platform.POSTGRES}) + @ForPlatform({Platform.H2, Platform.POSTGRES, Platform.YUGABYTE}) @Test - public void nullItems() { + void nullItems() { EArrayBean bean = new EArrayBean(); bean.setName("null items"); - List doubles = new ArrayList<>(); - doubles.add(1.3); + List doubles = new ArrayList<>(); + doubles.add(BigDecimal.valueOf(1.3)); doubles.add(null); - doubles.add(2.4); + doubles.add(BigDecimal.valueOf(2.4)); bean.getPhoneNumbers().add("111222333"); bean.getPhoneNumbers().add(null); @@ -213,7 +211,7 @@ public class TestDbArray_basic extends BaseTestCase { bean.getUids().add(null); bean.getUids().add(UUID.randomUUID()); - bean.setDoubs(doubles); + bean.setDecimals(doubles); bean.setStatuses(new ArrayList<>()); bean.getStatuses().add(EArrayBean.Status.ONE); @@ -235,7 +233,7 @@ public class TestDbArray_basic extends BaseTestCase { assertThat(found.getPhoneNumbers()).containsExactly("111222333", null, "333222111"); assertThat(found.getOtherIds()).containsExactly(15L, null, 30L, null); assertNull(found.getUids().get(1)); - assertThat(found.getDoubs()).containsExactly(1.3, null, 2.4); + assertThat(found.getDecimals()).contains(new BigDecimal("1.3"), null, new BigDecimal("2.4")); assertThat(found.getStatuses()).containsExactly(EArrayBean.Status.ONE, null, EArrayBean.Status.THREE); assertThat(found.getVcEnums()).containsExactly(VarcharEnum.ONE, null, VarcharEnum.TWO); assertThat(found.getIntEnums()).containsExactly(null, IntEnum.ZERO, null, IntEnum.TWO); @@ -244,8 +242,7 @@ public class TestDbArray_basic extends BaseTestCase { @Test @IgnorePlatform(Platform.HANA) - public void hitCache() { - + void hitCache() { List uids = new ArrayList<>(); uids.add(UUID.randomUUID()); uids.add(UUID.randomUUID()); @@ -271,17 +268,17 @@ public class TestDbArray_basic extends BaseTestCase { } @Test - @ForPlatform(Platform.POSTGRES) - public void asDto_withArray() { + @ForPlatform({Platform.POSTGRES, Platform.YUGABYTE}) + void asDto_withArray() { DB.find(EArrayBean.class).delete(); bean.setName("array in dto test"); List phNumbers = bean.getPhoneNumbers(); phNumbers.add("4321"); phNumbers.add("9823"); - List doubs = bean.getDoubs(); - doubs.add(1.23); - doubs.add(4.56); + List doubs = bean.getDecimals(); + doubs.add(BigDecimal.valueOf(1.23)); + doubs.add(BigDecimal.valueOf(4.56)); DB.save(bean); // Data is saved correctly @@ -290,7 +287,7 @@ public class TestDbArray_basic extends BaseTestCase { // Interestingly writing `select("id,name,phone_numbers,doubs")` // generates `select t0.id, t0.name, t0.id, t0.doubs` // surprisingly changing unknown property to id - .select("id,name,phoneNumbers,doubs") + .select("id,name,phoneNumbers,decimals") .asDto(EArrayBeanDto.class) // Shouldn't be necessary // But without it I see error @@ -300,7 +297,7 @@ public class TestDbArray_basic extends BaseTestCase { List dtos = query.findList(); List sql = LoggedSql.stop(); - assertSql(sql.get(0)).contains("select t0.id, t0.name, t0.phone_numbers, t0.doubs"); + assertSql(sql.get(0)).contains("select t0.id, t0.name, t0.phone_numbers, t0.decimals"); for (EArrayBeanDto dto : dtos) { assertThat(dto.id).isNotNull(); @@ -308,13 +305,13 @@ public class TestDbArray_basic extends BaseTestCase { // Failure: null assertThat(dto.phoneNumbers).isNotNull(); // Failure: null - assertThat(dto.doubs).isNotNull(); + assertThat(dto.decimals).isNotNull(); } } @Test - @ForPlatform(Platform.POSTGRES) - public void sqlUpdate_withArray() { + @ForPlatform({Platform.POSTGRES, Platform.YUGABYTE}) + void sqlUpdate_withArray() { DB.find(EArrayBean.class).delete(); bean.setName("array in sql update test"); DB.save(bean); @@ -329,11 +326,7 @@ public class TestDbArray_basic extends BaseTestCase { SqlUpdate update1 = DB.sqlUpdate("UPDATE earray_bean SET phone_numbers = ?") .setParameter(1, phNumbers); update1.execute(); - System.out.println("done"); - // Named param fails with - // javax.persistence.PersistenceException: - // ERROR: syntax error at or near "$2" SqlUpdate update2 = DB.sqlUpdate("UPDATE earray_bean SET phone_numbers = :pns") .setArrayParameter("pns", phNumbers); update2.execute(); @@ -341,19 +334,19 @@ public class TestDbArray_basic extends BaseTestCase { found = DB.find(EArrayBean.class, bean.getId()); System.out.println(found); assertEquals("array in sql update test", found.getName()); - assertThat(found.getPhoneNumbers()).containsExactly("4321", "9823"); + assertThat(found.getPhoneNumbers()).containsExactlyInAnyOrder("4321", "9823"); } public static class EArrayBeanDto { Integer id; List phoneNumbers; - List doubs; + List decimals; String name; @Override public String toString() { - return "id:" + id + " name:" + name + " phoneNumbers:" + phoneNumbers + " doubs:" + doubs; + return "id:" + id + " name:" + name + " phoneNumbers:" + phoneNumbers + " doubs:" + decimals; } public Integer getId() { @@ -380,12 +373,12 @@ public class TestDbArray_basic extends BaseTestCase { this.phoneNumbers = phoneNumbers; } - public List getDoubs() { - return doubs; + public List getDecimals() { + return decimals; } - public void setDoubs(List doubs) { - this.doubs = doubs; + public void setDecimals(List decimals) { + this.decimals = decimals; } } } diff --git a/ebean-test/src/test/java/org/tests/model/basic/cache/TestCacheViaComplexNaturalKey3.java b/ebean-test/src/test/java/org/tests/model/basic/cache/TestCacheViaComplexNaturalKey3.java index 38798bba1..3f2090dd0 100644 --- a/ebean-test/src/test/java/org/tests/model/basic/cache/TestCacheViaComplexNaturalKey3.java +++ b/ebean-test/src/test/java/org/tests/model/basic/cache/TestCacheViaComplexNaturalKey3.java @@ -369,7 +369,7 @@ public class TestCacheViaComplexNaturalKey3 extends BaseTestCase { if (isH2()) { assertSql(sql.get(0)).contains("from o_cached_natkey3 t0 where t0.store = ? and concat(t0.sku,'-',t0.code) in (?,?) order by t0.sku desc; --bind(def,Array[2]={2-1000,3-1000})"); - } else if (isPostgres() || isOracle() || isDb2() || isYugabyte()) { + } else if (isPostgresCompatible() || isOracle() || isDb2()) { assertSql(sql.get(0)).contains("from o_cached_natkey3 t0 where t0.store = ? and (t0.sku||'-'||t0.code)"); } else if (isHana()) { assertSql(sql.get(0)).contains("from o_cached_natkey3 t0 where t0.store = ? and concat(t0.sku, '-'||t0.code)"); @@ -412,7 +412,7 @@ public class TestCacheViaComplexNaturalKey3 extends BaseTestCase { if (isH2()) { assertSql(sql.get(0)).contains("from o_cached_natkey3 t0 where t0.store = ? and concat(t0.sku,':',t0.code,'-foo') in (?,?) order by t0.sku desc; --bind(def,Array[2]={2:1000-foo,3:1000-foo})"); - } else if (isPostgres() || isOracle() || isDb2() || isYugabyte()){ + } else if (isPostgresCompatible() || isOracle() || isDb2()){ assertSql(sql.get(0)).contains("from o_cached_natkey3 t0 where t0.store = ? and (t0.sku||':'||t0.code||'-foo')"); } else if (isHana()){ assertSql(sql.get(0)).contains("from o_cached_natkey3 t0 where t0.store = ? and concat(t0.sku, ':'||t0.code||'-foo')"); diff --git a/ebean-test/src/test/java/org/tests/model/carwheeltruck/TestMTOInheritNoDiscriminator.java b/ebean-test/src/test/java/org/tests/model/carwheeltruck/TestMTOInheritNoDiscriminator.java index 580f7ddb6..107089063 100644 --- a/ebean-test/src/test/java/org/tests/model/carwheeltruck/TestMTOInheritNoDiscriminator.java +++ b/ebean-test/src/test/java/org/tests/model/carwheeltruck/TestMTOInheritNoDiscriminator.java @@ -30,7 +30,7 @@ public class TestMTOInheritNoDiscriminator extends BaseTestCase { final List sql = LoggedSql.stop(); assertThat(sql).hasSize(1); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertSql(sql.get(0)).contains("select t0.id, t0.name, t0.version, t2.type, t0.truck_plate_no, t0.basic_id, t1.id, t1.some_uid, t1.foo, t1.owner_id from ttruck_holder t0 join tcar t2 on t2.plate_no = t0.truck_plate_no left join ttruck_holder_item t1 on t1.owner_id = t0.id where t0.id = ? order by t0.id"); } } diff --git a/ebean-test/src/test/java/org/tests/model/history/TestHistoryEmbeddedId.java b/ebean-test/src/test/java/org/tests/model/history/TestHistoryEmbeddedId.java index e76cd7714..029100f3e 100644 --- a/ebean-test/src/test/java/org/tests/model/history/TestHistoryEmbeddedId.java +++ b/ebean-test/src/test/java/org/tests/model/history/TestHistoryEmbeddedId.java @@ -51,7 +51,7 @@ public class TestHistoryEmbeddedId extends BaseTestCase { assertThat(sql.get(0)).contains("from hembi_bean_with_history t0 where t0.part=? and t0.brand=?"); if (isH2()) { assertThat(sql.get(0)).contains("order by t0.sys_period_start desc"); - } else if (isPostgres()) { + } else if (isPostgresCompatible()) { assertThat(sql.get(0)).contains("order by lower(t0.sys_period) desc"); } } diff --git a/ebean-test/src/test/java/org/tests/query/TestImplicitJoinOnParentRelationship.java b/ebean-test/src/test/java/org/tests/query/TestImplicitJoinOnParentRelationship.java index fd73bdbb1..402b6dc99 100644 --- a/ebean-test/src/test/java/org/tests/query/TestImplicitJoinOnParentRelationship.java +++ b/ebean-test/src/test/java/org/tests/query/TestImplicitJoinOnParentRelationship.java @@ -23,7 +23,7 @@ public class TestImplicitJoinOnParentRelationship extends BaseTestCase { query.findList(); - if (isPostgres()) { + if (platformDistinctOn()) { String expectedSql = "select distinct on (t0.id) t0.id, t0.name from o_customer t0 join o_order u1 on u1.kcustomer_id = t0.id and u1.order_date is not null join o_order_detail u2 on u2.order_id = u1.id and u2.id > 0 join o_product u3 on u3.id = u2.product_id where u3.name = ?"; assertThat(sqlOf(query, 1)).contains(expectedSql); @@ -54,7 +54,7 @@ public class TestImplicitJoinOnParentRelationship extends BaseTestCase { query.findList(); - if (isPostgres()) { + if (platformDistinctOn()) { String expectedSql = "select distinct on (t0.id) t0.id, t0.name from o_customer t0 left join o_order u1 on u1.kcustomer_id = t0.id and u1.order_date is not null left join o_order_detail u2 on u2.order_id = u1.id and u2.id > 0 left join o_product u3 on u3.id = u2.product_id where (u3.name = ? or t0.id = ?)"; assertThat(sqlOf(query, 1)).contains(expectedSql); } else { @@ -75,7 +75,7 @@ public class TestImplicitJoinOnParentRelationship extends BaseTestCase { query.findList(); - if (isPostgres()) { + if (platformDistinctOn()) { String expectedSql = "select distinct on (t0.id) t0.id, t0.name from o_customer t0 left join o_order u1 on u1.kcustomer_id = t0.id and u1.order_date is not null left join o_order_detail u2 on u2.order_id = u1.id and u2.id > 0 left join o_product u3 on u3.id = u2.product_id where (u3.name = ? or t0.id = ?)"; assertThat(sqlOf(query, 1)).contains(expectedSql); diff --git a/ebean-test/src/test/java/org/tests/query/TestManyWhereJoin.java b/ebean-test/src/test/java/org/tests/query/TestManyWhereJoin.java index 4fa4d5685..b2b38c42e 100644 --- a/ebean-test/src/test/java/org/tests/query/TestManyWhereJoin.java +++ b/ebean-test/src/test/java/org/tests/query/TestManyWhereJoin.java @@ -34,7 +34,7 @@ public class TestManyWhereJoin extends BaseTestCase { // join o_order u1 on u1.kcustomer_id = t0.id // where u1.status = ? ; --bind(NEW) - if (isPostgres()) { + if (isPostgresCompatible()) { assertThat(sql).contains("select distinct on (t0.id) t0.id, "); } else { assertThat(sql).contains("select distinct t0.id"); @@ -70,7 +70,7 @@ public class TestManyWhereJoin extends BaseTestCase { // where t1.order_date is not null and u1.status = ? // order by t0.id; --bind(NEW) - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(sql).contains("select distinct on (t0.id, t1.id) t0.id, t0.status,"); } else { assertThat(sql).contains("select distinct t0.id, t0.status, t1.id, t1.status,"); @@ -101,7 +101,7 @@ public class TestManyWhereJoin extends BaseTestCase { // where u1.product_id = ? // order by t0.cretime; --bind(1) - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(sql).contains("select distinct on (t0.cretime, t0.id) t0.id, t0.status,"); } else { assertThat(sql).contains("select distinct t0.id, t0.status,"); @@ -135,7 +135,7 @@ public class TestManyWhereJoin extends BaseTestCase { // where u1.product_id = ? // order by t0.cretime - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(sql).contains("select distinct on (t0.cretime, t0.id) t0.id, t0.status,"); } else { assertThat(sql).contains("select distinct t0.id, t0.status,"); @@ -171,7 +171,7 @@ public class TestManyWhereJoin extends BaseTestCase { // where t1.id > 0 and u1.product_id = ? // order by t0.cretime, t0.id, t1.id asc, t1.order_qty asc, t1.cretime desc; --bind(1) - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(sql).contains("select distinct on (t0.cretime, t0.id, t1.id, t1.order_qty, t1.cretime) t0.id, t0.status,"); } else { assertThat(sql).contains("select distinct t0.id, t0.status,"); diff --git a/ebean-test/src/test/java/org/tests/query/TestQueryExists.java b/ebean-test/src/test/java/org/tests/query/TestQueryExists.java index e52212207..58fc9f412 100644 --- a/ebean-test/src/test/java/org/tests/query/TestQueryExists.java +++ b/ebean-test/src/test/java/org/tests/query/TestQueryExists.java @@ -29,7 +29,7 @@ public class TestQueryExists extends BaseTestCase { String sql = LoggedSql.stop().get(0); assertThat(check).isTrue(); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertThat(sql).contains("select t0.id from o_order t0 where t0.id > ? limit 1"); } diff --git a/ebean-test/src/test/java/org/tests/query/TestQueryFilterMany.java b/ebean-test/src/test/java/org/tests/query/TestQueryFilterMany.java index 9460b1bf0..0d8830797 100644 --- a/ebean-test/src/test/java/org/tests/query/TestQueryFilterMany.java +++ b/ebean-test/src/test/java/org/tests/query/TestQueryFilterMany.java @@ -65,7 +65,7 @@ public class TestQueryFilterMany extends BaseTestCase { assertThat(sqlList.get(0)).contains("lower(t0.name) = ?"); assertThat(sqlList.get(1)).contains("status = ?"); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertThat(sqlList.get(0)).doesNotContain("offset"); assertThat(sqlList.get(0)).contains(" limit 5"); assertThat(sqlList.get(1)).contains(" offset 3"); @@ -97,7 +97,7 @@ public class TestQueryFilterMany extends BaseTestCase { assertThat(sqlList.get(0)).contains("lower(t0.name) = ?"); assertThat(sqlList.get(1)).contains("status = ?"); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertThat(sqlList.get(0)).doesNotContain("offset"); assertThat(sqlList.get(0)).contains(" limit 5"); assertThat(sqlList.get(1)).contains(" offset 3"); @@ -126,7 +126,7 @@ public class TestQueryFilterMany extends BaseTestCase { assertThat(sqlList.get(0)).contains("lower(t0.name) = ?"); assertThat(sqlList.get(1)).contains("status = ?"); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertThat(sqlList.get(0)).doesNotContain("offset"); assertThat(sqlList.get(0)).contains(" limit 5"); assertThat(sqlList.get(1)).contains(" order by t0.order_date desc, t0.id limit 100 offset 3"); @@ -220,7 +220,7 @@ public class TestQueryFilterMany extends BaseTestCase { List sqlList = LoggedSql.stop(); assertEquals(1, sqlList.size()); assertThat(sqlList.get(0)).contains("from o_customer t0 left join o_order t1 on t1.kcustomer_id = t0.id and t1.order_date is not null left join o_customer t2 on t2.id = t1.kcustomer_id where t1.status "); - if (isPostgres()) { + if (isPostgresCompatible()) { assertThat(sqlList.get(0)).contains("where t1.status = any(?) order by t0.id"); } else { assertThat(sqlList.get(0)).contains("where t1.status in (?) order by t0.id"); @@ -243,7 +243,7 @@ public class TestQueryFilterMany extends BaseTestCase { List sqlList = LoggedSql.stop(); assertEquals(2, sqlList.size()); assertThat(sqlList.get(0)).contains("from o_customer t0"); - if (isPostgres()) { + if (isPostgresCompatible()) { assertThat(sqlList.get(1)).contains("from o_order t0 join o_customer t1 on t1.id = t0.kcustomer_id where t0.order_date is not null and (t0.kcustomer_id) = any(?)"); assertThat(sqlList.get(1)).contains(" and t0.status = any(?)"); } else { diff --git a/ebean-test/src/test/java/org/tests/query/TestSubQuery.java b/ebean-test/src/test/java/org/tests/query/TestSubQuery.java index b8e26f70c..1f868508b 100644 --- a/ebean-test/src/test/java/org/tests/query/TestSubQuery.java +++ b/ebean-test/src/test/java/org/tests/query/TestSubQuery.java @@ -69,7 +69,7 @@ public class TestSubQuery extends BaseTestCase { // execute the subQuery as copy (generatedSQL must be part of original query) Query debugSq = sq.copy(); debugSq.findSingleAttribute(); - if (isPostgres()) { + if (isPostgresCompatible()) { assertThat(debugSq.getGeneratedSql()).isEqualTo("select t1.id from o_order_detail t0 join o_order t1 on t1.id = t0.order_id where t0.product_id = any(?)"); } else { assertSql(debugSq.getGeneratedSql()).isEqualTo("select t1.id from o_order_detail t0 join o_order t1 on t1.id = t0.order_id where t0.product_id in (?)"); @@ -78,7 +78,7 @@ public class TestSubQuery extends BaseTestCase { Query query = DB.find(Order.class).select("shipDate").where().isIn("id", sq).query(); query.findSingleAttribute(); - if (isPostgres()) { + if (isPostgresCompatible()) { assertThat(query.getGeneratedSql()).isEqualTo("select t0.ship_date from o_order t0 where (t0.id) in (" + debugSq.getGeneratedSql() + ")"); } else { assertSql(query.getGeneratedSql()).isEqualTo("select t0.ship_date from o_order t0 where (t0.id) in (" + trimSql(debugSq.getGeneratedSql()) + ")"); diff --git a/ebean-test/src/test/java/org/tests/query/aggregation/TestAggregationCount.java b/ebean-test/src/test/java/org/tests/query/aggregation/TestAggregationCount.java index 5efd69bf8..8536cc0be 100644 --- a/ebean-test/src/test/java/org/tests/query/aggregation/TestAggregationCount.java +++ b/ebean-test/src/test/java/org/tests/query/aggregation/TestAggregationCount.java @@ -149,7 +149,7 @@ public class TestAggregationCount extends BaseTestCase { String sql = sqlOf(query, 5); if (isH2()) { assertThat(sql).contains("select distinct t0.id, t0.name, count(u1.id), sum(u1.my_units), sum(u1.my_units * u1.amount), sum(u1.my_units), t0.name from tevent_one t0 "); - } else if (isPostgres()) { + } else if (isPostgresCompatible()) { assertThat(sql).contains("t0.name, count(u1.id), sum(u1.my_units), sum(u1.my_units * u1.amount), sum(u1.my_units), t0.name from tevent_one t0 "); } assertThat(sql).contains("from tevent_one t0 join tevent_many u1 on u1.event_id = t0.id "); diff --git a/ebean-test/src/test/java/org/tests/query/finder/TestCustomerFinder.java b/ebean-test/src/test/java/org/tests/query/finder/TestCustomerFinder.java index 85e43db88..a69fc0f84 100644 --- a/ebean-test/src/test/java/org/tests/query/finder/TestCustomerFinder.java +++ b/ebean-test/src/test/java/org/tests/query/finder/TestCustomerFinder.java @@ -237,7 +237,7 @@ public class TestCustomerFinder extends BaseTestCase { assertThat(metricsJson).contains("\"name\":\"txn.main\""); assertThat(metricsJson).contains("\"name\":\"orm.Customer.findList\""); assertThat(metricsJson).contains("\"loc\":\"org.tests.model.basic.finder.CustomerFinder.byNameStatus\""); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertThat(metricsJson).contains("\"hash\":\"de3affa5b4bff07e19c1c012590dcde6\""); assertThat(metricsJson).contains("\"sql\":\"select t0.id, t0.status,"); } diff --git a/ebean-test/src/test/java/org/tests/query/joins/TestDisjunctWhereOuterOnMany.java b/ebean-test/src/test/java/org/tests/query/joins/TestDisjunctWhereOuterOnMany.java index c617a1a60..b6b8d394d 100644 --- a/ebean-test/src/test/java/org/tests/query/joins/TestDisjunctWhereOuterOnMany.java +++ b/ebean-test/src/test/java/org/tests/query/joins/TestDisjunctWhereOuterOnMany.java @@ -56,7 +56,7 @@ public class TestDisjunctWhereOuterOnMany extends BaseTestCase { assertEquals(2, list.size()); assertEquals(2, rowCount); - if (isPostgres()) { + if (platformDistinctOn()) { String expectedSql = "select distinct on (t0.id) t0.id, t0.name, t0.description, t0.version from uuone t0 left join uutwo u1 on u1.master_id = t0.id where (t0.name = ? or u1.name = ?)"; assertSql(query).contains(expectedSql); diff --git a/ebean-test/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java b/ebean-test/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java index baee1f9d6..d790e99c9 100644 --- a/ebean-test/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java +++ b/ebean-test/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java @@ -115,7 +115,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { .where().isNotNull("order.shipments.order.totalAmount").query(); shipQuery.findList(); - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(shipQuery.getGeneratedSql()).contains("select distinct on (t0.id) t0.id from or_order_ship t0"); } else { assertSql(shipQuery.getGeneratedSql()).contains("select distinct t0.id from or_order_ship t0 "); diff --git a/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByWithDistinct.java b/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByWithDistinct.java index 9d7f1780b..673aa0363 100644 --- a/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByWithDistinct.java +++ b/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByWithDistinct.java @@ -49,7 +49,7 @@ public class TestOrderByWithDistinct extends BaseTestCase { query.findList(); String sql = sqlOf(query); - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(sql).contains("select distinct on (t0.user_name, t0.userid) t0.userid,"); } else if (isH2()) { assertThat(sql).contains("select distinct t0.userid, t0.user_name, t0.user_type_id from muser t0"); @@ -133,7 +133,7 @@ public class TestOrderByWithDistinct extends BaseTestCase { assertEquals(1, list.size()); assertEquals(user1, list.get(0)); String generatedSql = query.getGeneratedSql(); - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(generatedSql).contains("select distinct on (t1.name, t0.user_name, t0.userid) t0.userid"); // using distinct } else { @@ -168,7 +168,7 @@ public class TestOrderByWithDistinct extends BaseTestCase { // order by t1.name; --bind(A) generatedSql = query.getGeneratedSql(); - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(generatedSql).contains("select distinct on (t1.name, t0.userid) t0.userid"); // using distinct } else { assertThat(generatedSql).contains("select distinct t0.userid"); // using distinct diff --git a/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByWithDistinctTake2.java b/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByWithDistinctTake2.java index f97b20167..66832db7e 100644 --- a/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByWithDistinctTake2.java +++ b/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByWithDistinctTake2.java @@ -36,7 +36,7 @@ public class TestOrderByWithDistinctTake2 extends BaseTestCase { // where lower(u1.first_name) like ? // order by t0.name; --bind(r%) - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(generatedSql).contains("select distinct on (t0.name, t0.id) t0.id, t0.name"); } else { @@ -59,7 +59,7 @@ public class TestOrderByWithDistinctTake2 extends BaseTestCase { String generatedSql = sqlOf(query); - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(generatedSql).contains("select distinct on (t0.name, t0.id) t0.id, t0.name, t0.id"); } else { assertThat(generatedSql).contains("select distinct t0.id, t0.name, t0.id"); diff --git a/ebean-test/src/test/java/org/tests/query/other/TestQueryConversationRowCount.java b/ebean-test/src/test/java/org/tests/query/other/TestQueryConversationRowCount.java index 9ea1847a1..ffd7c8527 100644 --- a/ebean-test/src/test/java/org/tests/query/other/TestQueryConversationRowCount.java +++ b/ebean-test/src/test/java/org/tests/query/other/TestQueryConversationRowCount.java @@ -42,7 +42,7 @@ public class TestQueryConversationRowCount extends BaseTestCase { // where t0.group_id = ? and ((t0.open = ? and u1.user_id = ? ) or t0.open = ? ) // order by t0.when_created desc; - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(generatedSql).contains("select distinct on (t0.when_created, t0.id) t0.id, t0.title, t0.isopen"); } else { diff --git a/ebean-test/src/test/java/org/tests/query/other/TestQueryDistinct.java b/ebean-test/src/test/java/org/tests/query/other/TestQueryDistinct.java index 8f64e0836..5786658a2 100644 --- a/ebean-test/src/test/java/org/tests/query/other/TestQueryDistinct.java +++ b/ebean-test/src/test/java/org/tests/query/other/TestQueryDistinct.java @@ -94,7 +94,7 @@ public class TestQueryDistinct extends BaseTestCase { query.findList(); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { String generatedSql = sqlOf(query); assertThat(generatedSql).contains("select distinct t0.name from o_customer t0 limit 10"); } diff --git a/ebean-test/src/test/java/org/tests/query/other/TestQueryRowCountWithMany.java b/ebean-test/src/test/java/org/tests/query/other/TestQueryRowCountWithMany.java index 54740de23..bca8d203a 100644 --- a/ebean-test/src/test/java/org/tests/query/other/TestQueryRowCountWithMany.java +++ b/ebean-test/src/test/java/org/tests/query/other/TestQueryRowCountWithMany.java @@ -41,7 +41,7 @@ public class TestQueryRowCountWithMany extends BaseTestCase { // order by t0.cretime, t0.id, t1.id asc, t1.order_qty asc, t1.cretime desc; --bind(1) String generatedSql = sqlOf(query, 1); - if (isPostgres()) { + if (platformDistinctOn()) { assertThat(generatedSql).contains("select distinct on (t0.cretime, t0.id, t1.id, t1.order_qty, t1.cretime) t0.id, t0.status,"); // need the distinct } else { diff --git a/ebean-test/src/test/java/org/tests/query/sqlquery/SqlQueryTests.java b/ebean-test/src/test/java/org/tests/query/sqlquery/SqlQueryTests.java index 71501faa7..485a741c3 100644 --- a/ebean-test/src/test/java/org/tests/query/sqlquery/SqlQueryTests.java +++ b/ebean-test/src/test/java/org/tests/query/sqlquery/SqlQueryTests.java @@ -313,8 +313,7 @@ public class SqlQueryTests extends BaseTestCase { @Test public void firstRow() { - - if (isPostgres()) { + if (isPostgresCompatible()) { ResetBasicData.reset(); diff --git a/ebean-test/src/test/java/org/tests/quotedidentifier/TestQuotedIdentifierQuery.java b/ebean-test/src/test/java/org/tests/quotedidentifier/TestQuotedIdentifierQuery.java index b62e40121..f30d1ba60 100644 --- a/ebean-test/src/test/java/org/tests/quotedidentifier/TestQuotedIdentifierQuery.java +++ b/ebean-test/src/test/java/org/tests/quotedidentifier/TestQuotedIdentifierQuery.java @@ -25,7 +25,7 @@ public class TestQuotedIdentifierQuery extends BaseTestCase { .raw("t0.`CODE` = ?", "bar") .findList(); - } else if (isH2() || isPostgres()) { + } else if (isH2() || isPostgresCompatible()) { DB.find(BWithQIdent.class) .where() diff --git a/ebean-test/src/test/java/org/tests/rawsql/nativesql/TestNativeSqlBasic.java b/ebean-test/src/test/java/org/tests/rawsql/nativesql/TestNativeSqlBasic.java index f73ce824b..b34bfd55a 100644 --- a/ebean-test/src/test/java/org/tests/rawsql/nativesql/TestNativeSqlBasic.java +++ b/ebean-test/src/test/java/org/tests/rawsql/nativesql/TestNativeSqlBasic.java @@ -94,7 +94,7 @@ public class TestNativeSqlBasic extends BaseTestCase { query.findList(); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertThat(sqlOf(query)).contains(" limit 10"); } } @@ -113,7 +113,7 @@ public class TestNativeSqlBasic extends BaseTestCase { query.findList(); - if (isH2() || isPostgres()) { + if (isH2() || isPostgresCompatible()) { assertThat(sqlOf(query)).contains(" limit 10 offset 20"); } } diff --git a/ebean-test/src/test/resources/ebean.properties b/ebean-test/src/test/resources/ebean.properties index 7b77017ed..907ceda44 100644 --- a/ebean-test/src/test/resources/ebean.properties +++ b/ebean-test/src/test/resources/ebean.properties @@ -158,8 +158,8 @@ datasource.oracle.url=jdbc:oracle:thin:@localhost:1521:XE #ebean.postgres.timestamp=timestamp datasource.pg.username=unit -datasource.pg.password=unit -datasource.pg.url=jdbc:postgresql://127.0.0.1:5432/unit +datasource.pg.password=test +datasource.pg.url=jdbc:postgresql://127.0.0.1:6432/unit #datasource.pg.capturestacktrace=true datasource.pg.maxStackTraceSize=50 diff --git a/ebean-test/testconfig/ebean-sqlserver17.properties b/ebean-test/testconfig/ebean-sqlserver17.properties index 92efeb165..c0388b6ec 100644 --- a/ebean-test/testconfig/ebean-sqlserver17.properties +++ b/ebean-test/testconfig/ebean-sqlserver17.properties @@ -1,6 +1,6 @@ ebean.test.platform=sqlserver ebean.test.dbName=test_ebean -ebean.test.sqlserver.version=2017-latest +ebean.test.sqlserver.version=2017-CU28-ubuntu-16.04 ebean.test.sqlserver.containerName=local_sqlserver2017 ebean.test.sqlserver.collation=LATIN1_GENERAL_100_CS_AS_SC ebean.test.sqlserver.port=9435 diff --git a/ebean/pom.xml b/ebean/pom.xml index f178b31dc..c5512e0cb 100644 --- a/ebean/pom.xml +++ b/ebean/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT ebean composite @@ -22,20 +22,20 @@ io.ebean ebean-api - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT io.ebean ebean-querybean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT diff --git a/kotlin-querybean-generator/pom.xml b/kotlin-querybean-generator/pom.xml index af382c110..7272996d8 100644 --- a/kotlin-querybean-generator/pom.xml +++ b/kotlin-querybean-generator/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT kotlin querybean generator @@ -29,7 +29,7 @@ io.ebean ebean-querybean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test @@ -43,7 +43,7 @@ io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test @@ -64,7 +64,7 @@ io.ebean ebean-ddl-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test diff --git a/pom.xml b/pom.xml index a70b81c76..272487a96 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ io.ebean ebean-parent - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT pom ebean parent diff --git a/querybean-generator/pom.xml b/querybean-generator/pom.xml index cc6947200..47d9c0c56 100644 --- a/querybean-generator/pom.xml +++ b/querybean-generator/pom.xml @@ -4,7 +4,7 @@ ebean-parent io.ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT querybean generator diff --git a/tests/test-java16/pom.xml b/tests/test-java16/pom.xml index a45c0ca20..370b558cc 100644 --- a/tests/test-java16/pom.xml +++ b/tests/test-java16/pom.xml @@ -20,7 +20,7 @@ io.ebean ebean - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT @@ -32,7 +32,7 @@ io.ebean ebean-test - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test @@ -58,7 +58,7 @@ io.ebean querybean-generator - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT diff --git a/tests/test-kotlin/pom.xml b/tests/test-kotlin/pom.xml index 07d81c933..f9507fef1 100644 --- a/tests/test-kotlin/pom.xml +++ b/tests/test-kotlin/pom.xml @@ -36,14 +36,14 @@ io.ebean ebean-test - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test io.ebean ebean-core - 12.15.0-SNAPSHOT + 12.15.1-SNAPSHOT test