diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/AbstractHanaDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/AbstractHanaDdl.java index cd3b580b3..9f749bc14 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/AbstractHanaDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/AbstractHanaDdl.java @@ -44,8 +44,8 @@ public abstract class AbstractHanaDdl extends PlatformDdl { String columnName = alter.getColumnName(); String currentType = alter.getCurrentType(); String type = alter.getType() != null ? alter.getType() : currentType; - type = convert(type, false); - currentType = convert(currentType, false); + type = convert(type); + currentType = convert(currentType); boolean notnull = (alter.isNotnull() != null) ? alter.isNotnull() : Boolean.TRUE.equals(alter.isCurrentNotnull()); String notnullClause = notnull ? " not null" : ""; String defaultValue = DdlHelp.isDropDefault(alter.getDefaultValue()) ? "null" @@ -103,7 +103,7 @@ public abstract class AbstractHanaDdl extends PlatformDdl { protected String convertArrayType(String logicalArrayType) { Matcher matcher = ARRAY_PATTERN.matcher(logicalArrayType); if (matcher.matches()) { - return convert(matcher.group(1), false) + " array" + (matcher.group(2) == null ? "" : matcher.group(2)); + return convert(matcher.group(1)) + " array" + (matcher.group(2) == null ? "" : matcher.group(2)); } else { return fallbackArrayType; } diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java index 78d3839ca..f6d5ce94c 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/DbTriggerBasedHistoryDdl.java @@ -195,7 +195,7 @@ public abstract class DbTriggerBasedHistoryDdl implements PlatformHistoryDdl { */ protected void writeColumnDefinition(DdlBuffer buffer, String columnName, String type) throws IOException { - String platformType = platformDdl.convert(type, false); + String platformType = platformDdl.convert(type); buffer.append(" "); buffer.append(platformDdl.lowerColumnName(columnName), 29); buffer.append(platformType); diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaHistoryDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaHistoryDdl.java index 9fd37416f..84dc76ea7 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaHistoryDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/HanaHistoryDdl.java @@ -109,7 +109,7 @@ public class HanaHistoryDdl implements PlatformHistoryDdl { protected void writeColumnDefinition(DdlBuffer buffer, String columnName, String type, String defaultValue, boolean isNotNull, String generated) throws IOException { - String platformType = platformDdl.convert(type, false); + String platformType = platformDdl.convert(type); buffer.append(" ").append(platformDdl.lowerColumnName(columnName)); buffer.append(" ").append(platformType); if (defaultValue != null) { diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java index d0009c0e4..428bdf0ee 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/MySqlDdl.java @@ -107,7 +107,7 @@ public class MySqlDdl extends PlatformDdl { String tableName = alter.getTableName(); String columnName = alter.getColumnName(); String type = alter.getType() != null ? alter.getType() : alter.getCurrentType(); - type = convert(type, false); + type = convert(type); boolean notnull = (alter.isNotnull() != null) ? alter.isNotnull() : Boolean.TRUE.equals(alter.isCurrentNotnull()); String notnullClause = notnull ? " not null" : ""; diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java index 0b29db556..4ee4a752e 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java @@ -246,12 +246,14 @@ public class PlatformDdl { */ protected void writeColumnDefinition(DdlBuffer buffer, Column column, boolean useIdentity) throws IOException { - boolean identityColumn = useIdentity && isTrue(column.isPrimaryKey()); - String platformType = convert(column.getType(), identityColumn); + String columnDefn = convert(column.getType()); + if (useIdentity && isTrue(column.isPrimaryKey())) { + columnDefn = asIdentityColumn(columnDefn); + } buffer.append(" "); buffer.append(lowerColumnName(column.getName()), 29); - buffer.append(platformType); + buffer.append(columnDefn); if (!Boolean.TRUE.equals(column.isPrimaryKey())) { String defaultValue = convertDefaultValue(column.getDefaultValue()); if (defaultValue != null) { @@ -297,15 +299,14 @@ public class PlatformDdl { /** * Convert the standard type to the platform specific type. */ - public String convert(String type, boolean identity) { + public String convert(String type) { if (type == null) { return null; } if (type.contains("[]")) { return convertArrayType(type); } - String platformType = typeConverter.convert(type); - return identity ? asIdentityColumn(platformType) : platformType; + return typeConverter.convert(type); } /** @@ -511,13 +512,12 @@ public class PlatformDdl { public void alterTableAddColumn(DdlBuffer buffer, String tableName, Column column, boolean onHistoryTable, String defaultValue) throws IOException { - String convertedType = convert(column.getType(), false); + String convertedType = convert(column.getType()); buffer.append("alter table ").append(tableName) .append(" ").append(addColumn).append(" ").append(column.getName()) .append(" ").append(convertedType); - // Add default value also to history table if it is not excluded if (defaultValue != null) { if (!onHistoryTable || !isTrue(column.isHistoryExclude())) { @@ -568,7 +568,7 @@ public class PlatformDdl { *

*/ public String alterColumnType(String tableName, String columnName, String type) { - return "alter table " + tableName + " " + alterColumn + " " + columnName + " " + columnSetType + convert(type, false) + alterColumnSuffix; + return "alter table " + tableName + " " + alterColumn + " " + columnName + " " + columnSetType + convert(type) + alterColumnSuffix; } /** diff --git a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java index 7dc2a2fba..027031f20 100644 --- a/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java +++ b/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/SqlServerDdl.java @@ -157,7 +157,7 @@ public class SqlServerDdl extends PlatformDdl { String tableName = alter.getTableName(); String columnName = alter.getColumnName(); String type = alter.getType() != null ? alter.getType() : alter.getCurrentType(); - type = convert(type, false); + type = convert(type); boolean notnull = (alter.isNotnull() != null) ? alter.isNotnull() : Boolean.TRUE.equals(alter.isCurrentNotnull()); String notnullClause = notnull ? " not null" : ""; diff --git a/src/test/java/io/ebean/config/dbplatform/H2PlatformTest.java b/src/test/java/io/ebean/config/dbplatform/H2PlatformTest.java index fff3a8354..bf1b5b1df 100644 --- a/src/test/java/io/ebean/config/dbplatform/H2PlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/H2PlatformTest.java @@ -11,17 +11,17 @@ public class H2PlatformTest { @Test public void testTypeConversion() { - + PlatformDdl ddl = PlatformDdlBuilder.create(new H2Platform()); - assertThat(ddl.convert("clob", false)).isEqualTo("clob"); - assertThat(ddl.convert("json", false)).isEqualTo("clob"); - assertThat(ddl.convert("jsonb", false)).isEqualTo("clob"); - assertThat(ddl.convert("varchar(20)", false)).isEqualTo("varchar(20)"); - assertThat(ddl.convert("decimal(10)", false)).isEqualTo("decimal(10)"); - assertThat(ddl.convert("decimal(8,4)", false)).isEqualTo("decimal(8,4)"); - assertThat(ddl.convert("boolean", false)).isEqualTo("boolean"); - assertThat(ddl.convert("bit", false)).isEqualTo("bit"); + assertThat(ddl.convert("clob")).isEqualTo("clob"); + assertThat(ddl.convert("json")).isEqualTo("clob"); + assertThat(ddl.convert("jsonb")).isEqualTo("clob"); + assertThat(ddl.convert("varchar(20)")).isEqualTo("varchar(20)"); + assertThat(ddl.convert("decimal(10)")).isEqualTo("decimal(10)"); + assertThat(ddl.convert("decimal(8,4)")).isEqualTo("decimal(8,4)"); + assertThat(ddl.convert("boolean")).isEqualTo("boolean"); + assertThat(ddl.convert("bit")).isEqualTo("bit"); } } diff --git a/src/test/java/io/ebean/config/dbplatform/HanaPlatformTest.java b/src/test/java/io/ebean/config/dbplatform/HanaPlatformTest.java index 948513a05..3b15dd6f8 100644 --- a/src/test/java/io/ebean/config/dbplatform/HanaPlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/HanaPlatformTest.java @@ -17,29 +17,29 @@ public class HanaPlatformTest { PlatformDdl ddl = PlatformDdlBuilder.create(platform); - assertThat(ddl.convert("clob", false)).isEqualTo("nclob"); - assertThat(ddl.convert("blob", false)).isEqualTo("blob"); - assertThat(ddl.convert("json", false)).isEqualTo("nclob"); - assertThat(ddl.convert("jsonb", false)).isEqualTo("nclob"); - assertThat(ddl.convert("jsonvarchar", false)).isEqualTo("nvarchar(255)"); + assertThat(ddl.convert("clob")).isEqualTo("nclob"); + assertThat(ddl.convert("blob")).isEqualTo("blob"); + assertThat(ddl.convert("json")).isEqualTo("nclob"); + assertThat(ddl.convert("jsonb")).isEqualTo("nclob"); + assertThat(ddl.convert("jsonvarchar")).isEqualTo("nvarchar(255)"); - assertThat(ddl.convert("double", false)).isEqualTo("double"); - assertThat(ddl.convert("varchar(20)", false)).isEqualTo("nvarchar(20)"); - assertThat(ddl.convert("decimal(10)", false)).isEqualTo("decimal(10)"); - assertThat(ddl.convert("decimal(8,4)", false)).isEqualTo("decimal(8,4)"); - assertThat(ddl.convert("boolean", false)).isEqualTo("boolean"); - assertThat(ddl.convert("bit", false)).isEqualTo("smallint"); - assertThat(ddl.convert("tinyint", false)).isEqualTo("smallint"); - assertThat(ddl.convert("binary", false)).isEqualTo("varbinary(255)"); - assertThat(ddl.convert("binary(16)", false)).isEqualTo("varbinary(16)"); - - assertThat(ddl.convert("point", false)).isEqualTo("st_point"); - - assertThat(ddl.convert("multilinestring", false)).isEqualTo("st_geometry"); - assertThat(ddl.convert("multipolygon", false)).isEqualTo("st_geometry"); - assertThat(ddl.convert("multipoint", false)).isEqualTo("st_geometry"); - assertThat(ddl.convert("linestring", false)).isEqualTo("st_geometry"); - assertThat(ddl.convert("polygon", false)).isEqualTo("st_geometry"); + assertThat(ddl.convert("double")).isEqualTo("double"); + assertThat(ddl.convert("varchar(20)")).isEqualTo("nvarchar(20)"); + assertThat(ddl.convert("decimal(10)")).isEqualTo("decimal(10)"); + assertThat(ddl.convert("decimal(8,4)")).isEqualTo("decimal(8,4)"); + assertThat(ddl.convert("boolean")).isEqualTo("boolean"); + assertThat(ddl.convert("bit")).isEqualTo("smallint"); + assertThat(ddl.convert("tinyint")).isEqualTo("smallint"); + assertThat(ddl.convert("binary")).isEqualTo("varbinary(255)"); + assertThat(ddl.convert("binary(16)")).isEqualTo("varbinary(16)"); + + assertThat(ddl.convert("point")).isEqualTo("st_point"); + + assertThat(ddl.convert("multilinestring")).isEqualTo("st_geometry"); + assertThat(ddl.convert("multipolygon")).isEqualTo("st_geometry"); + assertThat(ddl.convert("multipoint")).isEqualTo("st_geometry"); + assertThat(ddl.convert("linestring")).isEqualTo("st_geometry"); + assertThat(ddl.convert("polygon")).isEqualTo("st_geometry"); } @Test diff --git a/src/test/java/io/ebean/config/dbplatform/MySqlPlatformTest.java b/src/test/java/io/ebean/config/dbplatform/MySqlPlatformTest.java index dcf3af621..2d5d7cb94 100644 --- a/src/test/java/io/ebean/config/dbplatform/MySqlPlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/MySqlPlatformTest.java @@ -15,12 +15,12 @@ public class MySqlPlatformTest { @Test public void testTypeConversion() { PlatformDdl ddl = PlatformDdlBuilder.create(mySqlPlatform); - assertThat(ddl.convert("clob", false)).isEqualTo("longtext"); - assertThat(ddl.convert("json", false)).isEqualTo("json"); - assertThat(ddl.convert("jsonb", false)).isEqualTo("json"); - assertThat(ddl.convert("varchar(20)", false)).isEqualTo("varchar(20)"); - assertThat(ddl.convert("boolean", false)).isEqualTo("tinyint(1)"); - assertThat(ddl.convert("bit", false)).isEqualTo("tinyint(1)"); + assertThat(ddl.convert("clob")).isEqualTo("longtext"); + assertThat(ddl.convert("json")).isEqualTo("json"); + assertThat(ddl.convert("jsonb")).isEqualTo("json"); + assertThat(ddl.convert("varchar(20)")).isEqualTo("varchar(20)"); + assertThat(ddl.convert("boolean")).isEqualTo("tinyint(1)"); + assertThat(ddl.convert("bit")).isEqualTo("tinyint(1)"); } @Test diff --git a/src/test/java/io/ebean/config/dbplatform/OraclePlatformTest.java b/src/test/java/io/ebean/config/dbplatform/OraclePlatformTest.java index 119d58ff1..56fe32965 100644 --- a/src/test/java/io/ebean/config/dbplatform/OraclePlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/OraclePlatformTest.java @@ -17,19 +17,19 @@ public class OraclePlatformTest { PlatformDdl ddl = PlatformDdlBuilder.create(platform); - assertThat(ddl.convert("clob", false)).isEqualTo("clob"); - assertThat(ddl.convert("blob", false)).isEqualTo("blob"); - assertThat(ddl.convert("json", false)).isEqualTo("clob"); - assertThat(ddl.convert("jsonb", false)).isEqualTo("clob"); + assertThat(ddl.convert("clob")).isEqualTo("clob"); + assertThat(ddl.convert("blob")).isEqualTo("blob"); + assertThat(ddl.convert("json")).isEqualTo("clob"); + assertThat(ddl.convert("jsonb")).isEqualTo("clob"); - assertThat(ddl.convert("double", false)).isEqualTo("number(19,4)"); - assertThat(ddl.convert("varchar(20)", false)).isEqualTo("varchar2(20)"); - assertThat(ddl.convert("decimal(10)", false)).isEqualTo("number(10)"); - assertThat(ddl.convert("decimal(8,4)", false)).isEqualTo("number(8,4)"); - assertThat(ddl.convert("boolean", false)).isEqualTo("number(1)"); - assertThat(ddl.convert("bit", false)).isEqualTo("bit"); - assertThat(ddl.convert("tinyint", false)).isEqualTo("number(3)"); - assertThat(ddl.convert("binary(16)", false)).isEqualTo("raw(16)"); + assertThat(ddl.convert("double")).isEqualTo("number(19,4)"); + assertThat(ddl.convert("varchar(20)")).isEqualTo("varchar2(20)"); + assertThat(ddl.convert("decimal(10)")).isEqualTo("number(10)"); + assertThat(ddl.convert("decimal(8,4)")).isEqualTo("number(8,4)"); + assertThat(ddl.convert("boolean")).isEqualTo("number(1)"); + assertThat(ddl.convert("bit")).isEqualTo("bit"); + assertThat(ddl.convert("tinyint")).isEqualTo("number(3)"); + assertThat(ddl.convert("binary(16)")).isEqualTo("raw(16)"); } @Test diff --git a/src/test/java/io/ebean/config/dbplatform/PostgresPlatformTest.java b/src/test/java/io/ebean/config/dbplatform/PostgresPlatformTest.java index b992e2fa4..38626760c 100644 --- a/src/test/java/io/ebean/config/dbplatform/PostgresPlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/PostgresPlatformTest.java @@ -17,19 +17,19 @@ public class PostgresPlatformTest { PostgresPlatform platform = new PostgresPlatform(); PlatformDdl ddl = PlatformDdlBuilder.create(platform); - assertThat(ddl.convert("clob", false)).isEqualTo("text"); - assertThat(ddl.convert("blob", false)).isEqualTo("bytea"); - assertThat(ddl.convert("json", false)).isEqualTo("json"); - assertThat(ddl.convert("jsonb", false)).isEqualTo("jsonb"); - assertThat(ddl.convert("hstore", false)).isEqualTo("hstore"); - assertThat(ddl.convert("double", false)).isEqualTo("float"); - assertThat(ddl.convert("tinyint", false)).isEqualTo("smallint"); - assertThat(ddl.convert("double", false)).isEqualTo("float"); - assertThat(ddl.convert("varchar(20)", false)).isEqualTo("varchar(20)"); - assertThat(ddl.convert("decimal(10)", false)).isEqualTo("decimal(10)"); - assertThat(ddl.convert("decimal(8,4)", false)).isEqualTo("decimal(8,4)"); - assertThat(ddl.convert("boolean", false)).isEqualTo("boolean"); - assertThat(ddl.convert("bit", false)).isEqualTo("bit"); + assertThat(ddl.convert("clob")).isEqualTo("text"); + assertThat(ddl.convert("blob")).isEqualTo("bytea"); + assertThat(ddl.convert("json")).isEqualTo("json"); + assertThat(ddl.convert("jsonb")).isEqualTo("jsonb"); + assertThat(ddl.convert("hstore")).isEqualTo("hstore"); + assertThat(ddl.convert("double")).isEqualTo("float"); + assertThat(ddl.convert("tinyint")).isEqualTo("smallint"); + assertThat(ddl.convert("double")).isEqualTo("float"); + assertThat(ddl.convert("varchar(20)")).isEqualTo("varchar(20)"); + assertThat(ddl.convert("decimal(10)")).isEqualTo("decimal(10)"); + assertThat(ddl.convert("decimal(8,4)")).isEqualTo("decimal(8,4)"); + assertThat(ddl.convert("boolean")).isEqualTo("boolean"); + assertThat(ddl.convert("bit")).isEqualTo("bit"); } diff --git a/src/test/java/io/ebean/config/dbplatform/SqlserverPlatformTest.java b/src/test/java/io/ebean/config/dbplatform/SqlserverPlatformTest.java index e35fc23b8..c1b7415de 100644 --- a/src/test/java/io/ebean/config/dbplatform/SqlserverPlatformTest.java +++ b/src/test/java/io/ebean/config/dbplatform/SqlserverPlatformTest.java @@ -17,19 +17,19 @@ public class SqlserverPlatformTest { PlatformDdl ddl = PlatformDdlBuilder.create(platform); - assertThat(ddl.convert("clob", false)).isEqualTo("nvarchar(max)"); - assertThat(ddl.convert("blob", false)).isEqualTo("image"); - assertThat(ddl.convert("json", false)).isEqualTo("nvarchar(max)"); - assertThat(ddl.convert("jsonb", false)).isEqualTo("nvarchar(max)"); + assertThat(ddl.convert("clob")).isEqualTo("nvarchar(max)"); + assertThat(ddl.convert("blob")).isEqualTo("image"); + assertThat(ddl.convert("json")).isEqualTo("nvarchar(max)"); + assertThat(ddl.convert("jsonb")).isEqualTo("nvarchar(max)"); - assertThat(ddl.convert("double", false)).isEqualTo("float(32)"); - assertThat(ddl.convert("varchar(20)", false)).isEqualTo("nvarchar(20)"); - assertThat(ddl.convert("decimal(10)", false)).isEqualTo("numeric(10)"); - assertThat(ddl.convert("decimal(8,4)", false)).isEqualTo("numeric(8,4)"); - assertThat(ddl.convert("boolean", false)).isEqualTo("bit"); - assertThat(ddl.convert("bit", false)).isEqualTo("bit"); - assertThat(ddl.convert("tinyint", false)).isEqualTo("smallint"); - assertThat(ddl.convert("binary(16)", false)).isEqualTo("binary(16)"); + assertThat(ddl.convert("double")).isEqualTo("float(32)"); + assertThat(ddl.convert("varchar(20)")).isEqualTo("nvarchar(20)"); + assertThat(ddl.convert("decimal(10)")).isEqualTo("numeric(10)"); + assertThat(ddl.convert("decimal(8,4)")).isEqualTo("numeric(8,4)"); + assertThat(ddl.convert("boolean")).isEqualTo("bit"); + assertThat(ddl.convert("bit")).isEqualTo("bit"); + assertThat(ddl.convert("tinyint")).isEqualTo("smallint"); + assertThat(ddl.convert("binary(16)")).isEqualTo("binary(16)"); } @Test