From a72cbaf243533b430f043dcedbc72c7ba393134e Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 4 Feb 2022 08:40:23 +1300 Subject: [PATCH 1/7] #2547 - Cockroach identity DDL - Changing to use standard GENERATED ... AS IDENTITY syntax --- .../server/core/InternalConfiguration.java | 2 +- .../server/type/DefaultTypeManager.java | 3 ++- .../ddlgeneration/platform/CockroachDdl.java | 14 +------------- ebean-test/src/test/java/main/StartCockroach.java | 14 +++++++------- 4 files changed, 11 insertions(+), 22 deletions(-) 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 03ec25ed0..e6944a9e9 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 @@ -280,7 +280,7 @@ public final class InternalConfiguration { private MultiValueBind createMultiValueBind(Platform platform) { // only Postgres at this stage - if (platform.base() == Platform.POSTGRES || platform.base() == Platform.YUGABYTE) { + if (platform.base() == Platform.POSTGRES || platform.base() == Platform.YUGABYTE || platform.base() == Platform.COCKROACH) { return new PostgresMultiValueBind(); } return new MultiValueBind(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java index 747208ecc..020ba58ae 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/type/DefaultTypeManager.java @@ -202,7 +202,8 @@ public final class DefaultTypeManager implements TypeManager { private boolean isPostgresCompatible(DatabasePlatform databasePlatform) { return databasePlatform.isPlatform(Platform.POSTGRES) - || databasePlatform.isPlatform(Platform.YUGABYTE); + || databasePlatform.isPlatform(Platform.YUGABYTE) + || databasePlatform.isPlatform(Platform.COCKROACH); } private boolean hstoreSupport() { diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/CockroachDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/CockroachDdl.java index 8c3d8bfe4..7a14001fa 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/CockroachDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/CockroachDdl.java @@ -21,21 +21,9 @@ public class CockroachDdl extends PlatformDdl { return NativeDbArray.logicalToNative(logicalArrayType); } - /** - * Map bigint, integer and smallint all into serial. - */ @Override public String asIdentityColumn(String columnDefn, DdlIdentity identity) { - if ("bigint".equalsIgnoreCase(columnDefn)) { - return "serial"; - } - if ("integer".equalsIgnoreCase(columnDefn)) { - return "serial"; - } - if ("smallint".equalsIgnoreCase(columnDefn)) { - return "serial"; - } - return columnDefn; + return asIdentityStandardOptions(columnDefn, identity); } @Override diff --git a/ebean-test/src/test/java/main/StartCockroach.java b/ebean-test/src/test/java/main/StartCockroach.java index dfdd96a40..bb189daa0 100644 --- a/ebean-test/src/test/java/main/StartCockroach.java +++ b/ebean-test/src/test/java/main/StartCockroach.java @@ -1,16 +1,16 @@ package main; -//import io.ebean.docker.commands.CockroachConfig; -//import io.ebean.docker.commands.CockroachContainer; +import io.ebean.docker.commands.CockroachConfig; +import io.ebean.docker.commands.CockroachContainer; public class StartCockroach { public static void main(String[] args) { -// CockroachConfig config = new CockroachConfig(); -// config.setDbName("unit"); -// -// CockroachContainer container = new CockroachContainer(config); -// container.startWithDropCreate(); + CockroachConfig config = new CockroachConfig("v21.2.4"); + config.setDbName("unit"); + + CockroachContainer container = new CockroachContainer(config); + container.start(); } } From cf3499f0e4b17ec6864ca380c51ec6a5a873bb48 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 4 Feb 2022 08:41:34 +1300 Subject: [PATCH 2/7] #2547 - Update BaseTestCase to include CockroachDB --- ebean-test/src/test/java/io/ebean/BaseTestCase.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ebean-test/src/test/java/io/ebean/BaseTestCase.java b/ebean-test/src/test/java/io/ebean/BaseTestCase.java index c1920b894..195a7dd62 100644 --- a/ebean-test/src/test/java/io/ebean/BaseTestCase.java +++ b/ebean-test/src/test/java/io/ebean/BaseTestCase.java @@ -200,7 +200,7 @@ public abstract class BaseTestCase { } public boolean isPostgresCompatible() { - return isPostgres() || isYugabyte(); + return isPostgres() || isYugabyte() || isCockroach(); } public boolean isPostgres() { @@ -211,6 +211,10 @@ public abstract class BaseTestCase { return Platform.YUGABYTE == platform().base(); } + public boolean isCockroach() { + return Platform.COCKROACH == platform().base(); + } + public boolean isMySql() { return Platform.MYSQL == platform(); } @@ -281,7 +285,7 @@ public abstract class BaseTestCase { * Platform specific IN clause assert. */ protected void platformAssertIn(String sql, String containsIn) { - if (isPostgres() || isYugabyte()) { + if (isPostgresCompatible()) { assertThat(sql).contains(containsIn+" = any("); } else { assertThat(sql).contains(containsIn+" in "); From daf0ba67a41b5535cbe49b5d48dc28ceb54cc421 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 4 Feb 2022 08:58:21 +1300 Subject: [PATCH 3/7] #2547 - CockroachDB - Use ON DISTINCT ... like Postgres and Yugabyte --- .../main/java/io/ebeaninternal/server/query/CQueryBuilder.java | 2 +- .../src/test/java/org/tests/basic/TestQueryUsingConnection.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 7559f7283..77dc2b1e6 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) || dbPlatform.isPlatform(Platform.YUGABYTE); + return dbPlatform.isPlatform(Platform.POSTGRES) || dbPlatform.isPlatform(Platform.YUGABYTE) || dbPlatform.isPlatform(Platform.COCKROACH); } boolean isPlatformDistinctNoLobs() { diff --git a/ebean-test/src/test/java/org/tests/basic/TestQueryUsingConnection.java b/ebean-test/src/test/java/org/tests/basic/TestQueryUsingConnection.java index 4e12f1bc5..3ea035b32 100644 --- a/ebean-test/src/test/java/org/tests/basic/TestQueryUsingConnection.java +++ b/ebean-test/src/test/java/org/tests/basic/TestQueryUsingConnection.java @@ -35,7 +35,7 @@ public class TestQueryUsingConnection extends BaseTestCase { } } - @IgnorePlatform(Platform.SQLSERVER) + @IgnorePlatform({Platform.SQLSERVER, Platform.COCKROACH}) @Test public void usingTransaction() { From b3f110b7a5555971b026b37f20dc1278b753009e Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 4 Feb 2022 10:42:07 +1300 Subject: [PATCH 4/7] CockroachDB - Modify tests, use BigDecimal over Double etc --- .../src/test/java/io/ebean/BaseTestCase.java | 2 +- .../aggregateformula/TestAggregateFormula.java | 2 +- .../java/org/tests/json/TestJsonMapBasic.java | 2 +- .../java/org/tests/model/basic/OrderDetail.java | 9 +++++---- .../org/tests/model/basic/ResetBasicData.java | 15 ++++++++------- .../tests/model/history/TestHistoryExclude.java | 2 +- .../tests/model/history/TestHistoryInclude.java | 2 +- .../tests/model/history/TestHistoryOneToMany.java | 2 +- .../java/org/tests/model/tevent/TEventOne.java | 9 +++++---- .../query/aggregation/TestAggregationCount.java | 3 ++- .../text/json/TestTextJsonUpdateCascade.java | 5 +++-- ebean-test/src/test/resources/extra-ddl.xml | 2 +- 12 files changed, 30 insertions(+), 25 deletions(-) diff --git a/ebean-test/src/test/java/io/ebean/BaseTestCase.java b/ebean-test/src/test/java/io/ebean/BaseTestCase.java index 195a7dd62..c44ce2092 100644 --- a/ebean-test/src/test/java/io/ebean/BaseTestCase.java +++ b/ebean-test/src/test/java/io/ebean/BaseTestCase.java @@ -297,7 +297,7 @@ public abstract class BaseTestCase { * Platform specific NOT IN clause assert. */ protected void platformAssertNotIn(String sql, String containsIn) { - if (isPostgres() || isYugabyte()) { + if (isPostgresCompatible()) { assertThat(sql).contains(containsIn+" != all("); } else { assertThat(sql).contains(containsIn+" not in "); diff --git a/ebean-test/src/test/java/org/tests/aggregateformula/TestAggregateFormula.java b/ebean-test/src/test/java/org/tests/aggregateformula/TestAggregateFormula.java index c51e7ff58..97f66b7c6 100644 --- a/ebean-test/src/test/java/org/tests/aggregateformula/TestAggregateFormula.java +++ b/ebean-test/src/test/java/org/tests/aggregateformula/TestAggregateFormula.java @@ -15,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; public class TestAggregateFormula extends BaseTestCase { - @IgnorePlatform({Platform.SQLSERVER, Platform.MYSQL, Platform.MARIADB, Platform.NUODB}) + @IgnorePlatform({Platform.SQLSERVER, Platform.MYSQL, Platform.MARIADB, Platform.NUODB, Platform.COCKROACH}) @Test public void minDistinctOrderByNulls() { diff --git a/ebean-test/src/test/java/org/tests/json/TestJsonMapBasic.java b/ebean-test/src/test/java/org/tests/json/TestJsonMapBasic.java index 1c1cebb43..5ee67e02b 100644 --- a/ebean-test/src/test/java/org/tests/json/TestJsonMapBasic.java +++ b/ebean-test/src/test/java/org/tests/json/TestJsonMapBasic.java @@ -33,7 +33,7 @@ public class TestJsonMapBasic extends BaseTestCase { } @Test - @ForPlatform(Platform.POSTGRES) + @ForPlatform({Platform.POSTGRES, Platform.COCKROACH}) public void whereManyPredicatePg() { bean.setName("own1"); diff --git a/ebean-test/src/test/java/org/tests/model/basic/OrderDetail.java b/ebean-test/src/test/java/org/tests/model/basic/OrderDetail.java index 6face7896..393837296 100644 --- a/ebean-test/src/test/java/org/tests/model/basic/OrderDetail.java +++ b/ebean-test/src/test/java/org/tests/model/basic/OrderDetail.java @@ -5,6 +5,7 @@ import io.ebean.annotation.DocEmbedded; import javax.persistence.*; import java.io.Serializable; +import java.math.BigDecimal; import java.sql.Timestamp; /** @@ -27,7 +28,7 @@ public class OrderDetail implements Serializable { Integer shipQty; - Double unitPrice; + BigDecimal unitPrice; @ManyToOne @DocEmbedded(doc = "id,name,sku") @@ -41,7 +42,7 @@ public class OrderDetail implements Serializable { public OrderDetail() { } - public OrderDetail(Product product, Integer orderQty, Double unitPrice) { + public OrderDetail(Product product, Integer orderQty, BigDecimal unitPrice) { this.product = product; this.orderQty = orderQty; this.unitPrice = unitPrice; @@ -89,11 +90,11 @@ public class OrderDetail implements Serializable { this.shipQty = shipQty; } - public Double getUnitPrice() { + public BigDecimal getUnitPrice() { return unitPrice; } - public void setUnitPrice(Double unitPrice) { + public void setUnitPrice(BigDecimal unitPrice) { this.unitPrice = unitPrice; } diff --git a/ebean-test/src/test/java/org/tests/model/basic/ResetBasicData.java b/ebean-test/src/test/java/org/tests/model/basic/ResetBasicData.java index 819bc406c..2e2e8dba2 100644 --- a/ebean-test/src/test/java/org/tests/model/basic/ResetBasicData.java +++ b/ebean-test/src/test/java/org/tests/model/basic/ResetBasicData.java @@ -5,6 +5,7 @@ import io.ebean.Database; import io.ebean.Transaction; import org.tests.model.basic.Order.Status; +import java.math.BigDecimal; import java.sql.Date; import java.util.ArrayList; import java.util.List; @@ -213,9 +214,9 @@ public class ResetBasicData { order.setOrderDate(Date.valueOf("2018-07-01")); List details = new ArrayList<>(); - details.add(new OrderDetail(product1, 5, 10.50)); - details.add(new OrderDetail(product2, 3, 1.10)); - details.add(new OrderDetail(product3, 1, 2.00)); + details.add(new OrderDetail(product1, 5, BigDecimal.valueOf(10.50))); + details.add(new OrderDetail(product2, 3, BigDecimal.valueOf(1.10))); + details.add(new OrderDetail(product3, 1, BigDecimal.valueOf(2.00))); order.setDetails(details); order.addShipment(new OrderShipment()); DB.save(order); @@ -231,7 +232,7 @@ public class ResetBasicData { order.setOrderDate(Date.valueOf("2018-06-01")); List details = new ArrayList<>(); - details.add(new OrderDetail(product1, 4, 10.50)); + details.add(new OrderDetail(product1, 4, BigDecimal.valueOf(10.50))); order.setDetails(details); order.addShipment(new OrderShipment()); DB.save(order); @@ -247,9 +248,9 @@ public class ResetBasicData { order.setOrderDate(Date.valueOf("2018-07-02")); List details = new ArrayList<>(); - details.add(new OrderDetail(product1, 3, 10.50)); - details.add(new OrderDetail(product3, 40, 2.10)); - details.add(new OrderDetail(product1, 5, 10.00)); + details.add(new OrderDetail(product1, 3, BigDecimal.valueOf(10.50))); + details.add(new OrderDetail(product3, 40, BigDecimal.valueOf(2.10))); + details.add(new OrderDetail(product1, 5, BigDecimal.valueOf(10.00))); order.setDetails(details); order.addShipment(new OrderShipment()); DB.save(order); diff --git a/ebean-test/src/test/java/org/tests/model/history/TestHistoryExclude.java b/ebean-test/src/test/java/org/tests/model/history/TestHistoryExclude.java index a8bfdb268..512469c57 100644 --- a/ebean-test/src/test/java/org/tests/model/history/TestHistoryExclude.java +++ b/ebean-test/src/test/java/org/tests/model/history/TestHistoryExclude.java @@ -70,7 +70,7 @@ public class TestHistoryExclude extends BaseTestCase { linkFound.getDocs().size(); } - @IgnorePlatform({Platform.ORACLE, Platform.DB2}) + @IgnorePlatform({Platform.ORACLE, Platform.DB2, Platform.COCKROACH}) @Test public void testAsOfThenLazy() { diff --git a/ebean-test/src/test/java/org/tests/model/history/TestHistoryInclude.java b/ebean-test/src/test/java/org/tests/model/history/TestHistoryInclude.java index 8b7c8714f..d59579f03 100644 --- a/ebean-test/src/test/java/org/tests/model/history/TestHistoryInclude.java +++ b/ebean-test/src/test/java/org/tests/model/history/TestHistoryInclude.java @@ -37,7 +37,7 @@ public class TestHistoryInclude extends BaseTestCase { assertThat(linkFound.getDocs().size()).isEqualTo(2); } - @IgnorePlatform({Platform.ORACLE, Platform.DB2}) + @IgnorePlatform({Platform.ORACLE, Platform.DB2, Platform.COCKROACH}) @Test public void testAsOfThenLazy() { diff --git a/ebean-test/src/test/java/org/tests/model/history/TestHistoryOneToMany.java b/ebean-test/src/test/java/org/tests/model/history/TestHistoryOneToMany.java index d57fa1d8b..07254f3b6 100644 --- a/ebean-test/src/test/java/org/tests/model/history/TestHistoryOneToMany.java +++ b/ebean-test/src/test/java/org/tests/model/history/TestHistoryOneToMany.java @@ -14,7 +14,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class TestHistoryOneToMany extends BaseTestCase { - @IgnorePlatform({Platform.ORACLE, Platform.DB2}) + @IgnorePlatform({Platform.ORACLE, Platform.DB2, Platform.COCKROACH}) @Test public void test() throws InterruptedException { diff --git a/ebean-test/src/test/java/org/tests/model/tevent/TEventOne.java b/ebean-test/src/test/java/org/tests/model/tevent/TEventOne.java index 896d5a147..bcbad8ef2 100644 --- a/ebean-test/src/test/java/org/tests/model/tevent/TEventOne.java +++ b/ebean-test/src/test/java/org/tests/model/tevent/TEventOne.java @@ -3,6 +3,7 @@ package org.tests.model.tevent; import io.ebean.annotation.Aggregation; import javax.persistence.*; +import java.math.BigDecimal; import java.util.List; @Entity @@ -33,10 +34,10 @@ public class TEventOne { Long count; @Aggregation("sum(logs.myUnits)") - Double totalUnits; + BigDecimal totalUnits; @Aggregation("sum(logs.myUnits * logs.amount)") - Double totalAmount; + BigDecimal totalAmount; @OneToMany(mappedBy = "event", cascade = CascadeType.ALL) List logs; @@ -63,11 +64,11 @@ public class TEventOne { return count; } - public Double getTotalUnits() { + public BigDecimal getTotalUnits() { return totalUnits; } - public Double getTotalAmount() { + public BigDecimal getTotalAmount() { return totalAmount; } 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 3e65c2125..7a3bdc82c 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 @@ -13,6 +13,7 @@ import org.tests.model.basic.ResetBasicData; import org.tests.model.tevent.TEventMany; import org.tests.model.tevent.TEventOne; +import java.math.BigDecimal; import java.sql.Timestamp; import java.time.Instant; import java.util.List; @@ -53,7 +54,7 @@ public class TestAggregationCount extends BaseTestCase { for (TEventOne eventOne : list) { // lazy loading on Aggregation properties // is not expected to work at this stage - Double totalAmount = eventOne.getTotalAmount(); + BigDecimal totalAmount = eventOne.getTotalAmount(); assertThat(totalAmount).isNull(); } } diff --git a/ebean-test/src/test/java/org/tests/text/json/TestTextJsonUpdateCascade.java b/ebean-test/src/test/java/org/tests/text/json/TestTextJsonUpdateCascade.java index 1106d660f..d8d2912d7 100644 --- a/ebean-test/src/test/java/org/tests/text/json/TestTextJsonUpdateCascade.java +++ b/ebean-test/src/test/java/org/tests/text/json/TestTextJsonUpdateCascade.java @@ -9,6 +9,7 @@ import org.tests.model.basic.*; import org.tests.model.basic.Order.Status; import java.io.IOException; +import java.math.BigDecimal; import java.util.List; import static org.junit.jupiter.api.Assertions.*; @@ -36,14 +37,14 @@ public class TestTextJsonUpdateCascade extends TransactionalTestCase { OrderDetail orderDetail0 = order.getDetails().get(0); orderDetail0.setShipQty(300); - orderDetail0.setUnitPrice(56.98d); + orderDetail0.setUnitPrice(BigDecimal.valueOf(56.98d)); // remove one of the details... OrderDetail removedDetail = order.getDetails().remove(2); assertNotNull(removedDetail); Product p = DB.reference(Product.class, 1); - OrderDetail newDetail = new OrderDetail(p, 899, 12.12d); + OrderDetail newDetail = new OrderDetail(p, 899, BigDecimal.valueOf(12.12d)); // newDetail.setOrder(order); order.addDetail(newDetail); diff --git a/ebean-test/src/test/resources/extra-ddl.xml b/ebean-test/src/test/resources/extra-ddl.xml index 9bc702735..ba824c38a 100644 --- a/ebean-test/src/test/resources/extra-ddl.xml +++ b/ebean-test/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 From d0fcd4a13abbc17abf84a06ef6f9479a9f50d064 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 4 Feb 2022 15:55:00 +1300 Subject: [PATCH 5/7] #2549 - Fix DefaultPersister to expose non RuntimeExceptions on insert/update/delete. Not hide NoClassDefFoundError etc --- .../server/persist/DefaultPersister.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DefaultPersister.java b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DefaultPersister.java index 07410134b..4e4fc1039 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/persist/DefaultPersister.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/persist/DefaultPersister.java @@ -81,8 +81,7 @@ public final class DefaultPersister implements Persister { int rc = request.executeOrQueue(); request.commitTransIfRequired(); return rc; - - } catch (RuntimeException e) { + } catch (Throwable e) { request.rollbackTransIfRequired(); throw e; } finally { @@ -383,8 +382,7 @@ public final class DefaultPersister implements Persister { req.resetDepth(); req.commitTransIfRequired(); req.flushBatchOnCascade(); - - } catch (RuntimeException ex) { + } catch (Throwable ex) { req.rollbackTransIfRequired(); throw ex; } finally { @@ -420,8 +418,7 @@ public final class DefaultPersister implements Persister { req.resetDepth(); req.commitTransIfRequired(); req.flushBatchOnCascade(); - - } catch (RuntimeException ex) { + } catch (Throwable ex) { req.rollbackTransIfRequired(); throw ex; } finally { @@ -559,7 +556,7 @@ public final class DefaultPersister implements Persister { req.flushBatchOnCascade(); return rows; - } catch (RuntimeException ex) { + } catch (Throwable ex) { req.rollbackTransIfRequired(); throw ex; } finally { From b8b83c2ec81c48925c762adc812390ddda9b24f3 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 4 Feb 2022 16:59:16 +1300 Subject: [PATCH 6/7] Update more tests for CockroachDB --- .../java/org/tests/basic/encrypt/TestEncrypt.java | 2 +- .../test/java/org/tests/model/tevent/TEventMany.java | 9 +++++---- .../test/java/org/tests/query/TestQueryAlias.java | 3 +++ .../query/aggregation/TestAggregationCount.java | 12 ++++++------ 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/ebean-test/src/test/java/org/tests/basic/encrypt/TestEncrypt.java b/ebean-test/src/test/java/org/tests/basic/encrypt/TestEncrypt.java index 0189aaf03..ea2e2de5c 100644 --- a/ebean-test/src/test/java/org/tests/basic/encrypt/TestEncrypt.java +++ b/ebean-test/src/test/java/org/tests/basic/encrypt/TestEncrypt.java @@ -56,7 +56,7 @@ public class TestEncrypt extends BaseTestCase { assertThat(loggedSql.get(1)).contains("left join e_basicenc t1 on t1.id = t0.other_id"); } - @IgnorePlatform({Platform.ORACLE, Platform.DB2}) + @IgnorePlatform({Platform.ORACLE, Platform.DB2, Platform.COCKROACH}) @Test public void asDto() { DB.find(EBasicEncrypt.class).delete(); diff --git a/ebean-test/src/test/java/org/tests/model/tevent/TEventMany.java b/ebean-test/src/test/java/org/tests/model/tevent/TEventMany.java index a7eabce36..6e3492229 100644 --- a/ebean-test/src/test/java/org/tests/model/tevent/TEventMany.java +++ b/ebean-test/src/test/java/org/tests/model/tevent/TEventMany.java @@ -4,6 +4,7 @@ import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Version; +import java.math.BigDecimal; @Entity public class TEventMany { @@ -18,12 +19,12 @@ public class TEventMany { int myUnits; - double amount; + BigDecimal amount; @Version Long version; - public TEventMany(String description, int myUnits, double amount) { + public TEventMany(String description, int myUnits, BigDecimal amount) { this.description = description; this.myUnits = myUnits; this.amount = amount; @@ -61,11 +62,11 @@ public class TEventMany { this.myUnits = myUnits; } - public double getAmount() { + public BigDecimal getAmount() { return amount; } - public void setAmount(double amount) { + public void setAmount(BigDecimal amount) { this.amount = amount; } diff --git a/ebean-test/src/test/java/org/tests/query/TestQueryAlias.java b/ebean-test/src/test/java/org/tests/query/TestQueryAlias.java index d3df77f11..e9470dbd8 100644 --- a/ebean-test/src/test/java/org/tests/query/TestQueryAlias.java +++ b/ebean-test/src/test/java/org/tests/query/TestQueryAlias.java @@ -3,6 +3,8 @@ package org.tests.query; import io.ebean.BaseTestCase; import io.ebean.DB; import io.ebean.Query; +import io.ebean.annotation.IgnorePlatform; +import io.ebean.annotation.Platform; import org.junit.jupiter.api.Test; import org.tests.model.basic.CKeyParent; import org.tests.model.basic.ResetBasicData; @@ -37,6 +39,7 @@ public class TestQueryAlias extends BaseTestCase { assertThat(sql).contains("(myt0.one_key) in (select st0.one_key from ckey_parent st0)"); } + @IgnorePlatform(Platform.COCKROACH) @Test public void testExistsWithConcat() { 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 7a3bdc82c..09e9c5b1e 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 @@ -25,15 +25,15 @@ public class TestAggregationCount extends BaseTestCase { @BeforeAll public static void setup() { TEventOne one = new TEventOne("first", TEventOne.Status.AA); - one.getLogs().add(new TEventMany("all", 1, 10)); - one.getLogs().add(new TEventMany("be", 2, 12.2)); - one.getLogs().add(new TEventMany("add", 3, 13)); + one.getLogs().add(new TEventMany("all", 1, BigDecimal.valueOf(10))); + one.getLogs().add(new TEventMany("be", 2, BigDecimal.valueOf(12.2))); + one.getLogs().add(new TEventMany("add", 3, BigDecimal.valueOf(13))); DB.save(one); TEventOne two = new TEventOne("second", TEventOne.Status.AA); - two.getLogs().add(new TEventMany("at", 10, 10)); - two.getLogs().add(new TEventMany("add", 30, 13)); - two.getLogs().add(new TEventMany("alf", 30, 13)); + two.getLogs().add(new TEventMany("at", 10, BigDecimal.valueOf(10))); + two.getLogs().add(new TEventMany("add", 30, BigDecimal.valueOf(13))); + two.getLogs().add(new TEventMany("alf", 30, BigDecimal.valueOf(13))); DB.save(two); TEventOne three = new TEventOne("thrird", TEventOne.Status.BB); From 0d3ea9626c04203e52b24140ebe5acae71e89be9 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Fri, 4 Feb 2022 17:02:01 +1300 Subject: [PATCH 7/7] CockroachDB - Now supports LIKE ESCAPE and no longer needs Autocommit for DDL --- .../config/dbplatform/cockroach/CockroachPlatform.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/ebean-api/src/main/java/io/ebean/config/dbplatform/cockroach/CockroachPlatform.java b/ebean-api/src/main/java/io/ebean/config/dbplatform/cockroach/CockroachPlatform.java index 91a627510..8c1388885 100644 --- a/ebean-api/src/main/java/io/ebean/config/dbplatform/cockroach/CockroachPlatform.java +++ b/ebean-api/src/main/java/io/ebean/config/dbplatform/cockroach/CockroachPlatform.java @@ -11,10 +11,6 @@ public class CockroachPlatform extends PostgresPlatform { public CockroachPlatform() { super(); this.platform = Platform.COCKROACH; - // no like escape clause supported - this.likeSpecialCharacters = new char[]{'%', '_'}; - this.likeClauseRaw = "like ?"; - this.likeClauseEscaped = "like ?"; } /** @@ -22,7 +18,7 @@ public class CockroachPlatform extends PostgresPlatform { */ @Override public boolean isDdlAutoCommit() { - return true; + return false; } }