From d1c21bf50adabde3e69fe9a842e7c59398ad57f8 Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Wed, 14 Jun 2023 17:50:08 +0200 Subject: [PATCH] Hana, NuoDb, SqlAnywhere: add limits (untested!) --- .../java/io/ebean/platform/hana/HanaPlatform.java | 14 ++++++++++---- .../io/ebean/platform/nuodb/NuoDbPlatform.java | 10 ++++------ .../platform/sqlanywhere/SqlAnywherePlatform.java | 15 +++++++++++---- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/platforms/hana/src/main/java/io/ebean/platform/hana/HanaPlatform.java b/platforms/hana/src/main/java/io/ebean/platform/hana/HanaPlatform.java index aa0e7b388..39e4d034f 100644 --- a/platforms/hana/src/main/java/io/ebean/platform/hana/HanaPlatform.java +++ b/platforms/hana/src/main/java/io/ebean/platform/hana/HanaPlatform.java @@ -34,9 +34,9 @@ public class HanaPlatform extends DatabasePlatform { this.dbTypeMap.put(DbType.BIGINT, new DbPlatformType("bigint", false)); this.dbTypeMap.put(DbType.BINARY, new DbPlatformType("varbinary", 255)); this.dbTypeMap.put(DbType.BIT, new DbPlatformType("smallint", false)); - this.dbTypeMap.put(DbType.BLOB, new DbPlatformType("blob", false)); + this.dbTypeMap.put(DbType.CHAR, new DbPlatformType("nvarchar", 255)); - this.dbTypeMap.put(DbType.CLOB, new DbPlatformType("nclob", false)); + this.dbTypeMap.put(DbType.INTEGER, new DbPlatformType("integer", false)); this.dbTypeMap.put(DbType.JSONVARCHAR, new DbPlatformType("nvarchar", 255)); this.dbTypeMap.put(DbType.LINESTRING, new DbPlatformType("st_geometry")); @@ -50,8 +50,14 @@ public class HanaPlatform extends DatabasePlatform { this.dbTypeMap.put(DbType.SMALLINT, new DbPlatformType("smallint", false)); this.dbTypeMap.put(DbType.TINYINT, new DbPlatformType("smallint", false)); this.dbTypeMap.put(DbType.UUID, new DbPlatformType("varchar", 40)); - this.dbTypeMap.put(DbType.VARBINARY, new DbPlatformType("varbinary", 255)); - this.dbTypeMap.put(DbType.VARCHAR, new DbPlatformType("nvarchar", 255)); + + DbPlatformType nclob = new DbPlatformType("nclob", false); + dbTypeMap.put(DbType.VARCHAR, new DbPlatformType("nvarchar", 255, 5000, nclob)); + this.dbTypeMap.put(DbType.CLOB, nclob); + + DbPlatformType blob = new DbPlatformType("blob", false); + this.dbTypeMap.put(DbType.VARBINARY, new DbPlatformType("varbinary", 255, 5000, blob)); + this.dbTypeMap.put(DbType.BLOB, blob); } @Override diff --git a/platforms/nuodb/src/main/java/io/ebean/platform/nuodb/NuoDbPlatform.java b/platforms/nuodb/src/main/java/io/ebean/platform/nuodb/NuoDbPlatform.java index d08fa0826..a8fa428f9 100644 --- a/platforms/nuodb/src/main/java/io/ebean/platform/nuodb/NuoDbPlatform.java +++ b/platforms/nuodb/src/main/java/io/ebean/platform/nuodb/NuoDbPlatform.java @@ -4,12 +4,7 @@ import io.ebean.BackgroundExecutor; import io.ebean.Query; import io.ebean.Query.LockWait; import io.ebean.annotation.Platform; -import io.ebean.config.dbplatform.DatabasePlatform; -import io.ebean.config.dbplatform.DbPlatformType; -import io.ebean.config.dbplatform.DbType; -import io.ebean.config.dbplatform.IdType; -import io.ebean.config.dbplatform.PlatformIdGenerator; -import io.ebean.config.dbplatform.SqlErrorCodes; +import io.ebean.config.dbplatform.*; import javax.sql.DataSource; @@ -41,6 +36,9 @@ public class NuoDbPlatform extends DatabasePlatform { .build(); dbTypeMap.put(DbType.INTEGER, new DbPlatformType("integer", false)); + // no max length found in documentation. Assuming 4000 + dbTypeMap.put(DbType.VARCHAR, new DbPlatformType("varchar", 255, 4000, new DbPlatformType("clob", false))); + dbTypeMap.put(DbType.VARBINARY, new DbPlatformType("varbinary", 255, 4000, new DbPlatformType("blob", false))); } @Override diff --git a/platforms/sqlanywhere/src/main/java/io/ebean/platform/sqlanywhere/SqlAnywherePlatform.java b/platforms/sqlanywhere/src/main/java/io/ebean/platform/sqlanywhere/SqlAnywherePlatform.java index a9aa3f41d..2942fafb0 100644 --- a/platforms/sqlanywhere/src/main/java/io/ebean/platform/sqlanywhere/SqlAnywherePlatform.java +++ b/platforms/sqlanywhere/src/main/java/io/ebean/platform/sqlanywhere/SqlAnywherePlatform.java @@ -33,10 +33,17 @@ public class SqlAnywherePlatform extends DatabasePlatform { dbTypeMap.put(DbType.DOUBLE, new DbPlatformType("float(32)")); dbTypeMap.put(DbType.TINYINT, new DbPlatformType("smallint")); dbTypeMap.put(DbType.DECIMAL, new DbPlatformType("numeric", 16, 3)); - dbTypeMap.put(DbType.BLOB, new DbPlatformType("binary(4500)")); - dbTypeMap.put(DbType.CLOB, new DbPlatformType("long varchar")); - dbTypeMap.put(DbType.LONGVARBINARY, new DbPlatformType("long binary")); - dbTypeMap.put(DbType.LONGVARCHAR, new DbPlatformType("long varchar")); + + DbPlatformType clob = new DbPlatformType("long varchar", false); + dbTypeMap.put(DbType.CLOB, clob); + dbTypeMap.put(DbType.LONGVARCHAR,clob); + dbTypeMap.put(DbType.VARCHAR, new DbPlatformType("varchar", 255, 32767, clob)); + + DbPlatformType blob = new DbPlatformType("long binary", false); + dbTypeMap.put(DbType.VARBINARY, new DbPlatformType("varbinary", 255, 32767, blob)); + dbTypeMap.put(DbType.LONGVARBINARY, blob); + dbTypeMap.put(DbType.BLOB, blob); + }