diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java index 239a3b90e..8443f2532 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PlatformDdl.java @@ -198,7 +198,9 @@ public class PlatformDdl { * Write all the table columns converting to platform types as necessary. */ public void writeTableColumns(DdlBuffer apply, List columns, DdlIdentity identity) { - columns = sortColumns(columns); + if ("true".equalsIgnoreCase(System.getProperty("ebean.ddl.sortColumns", "true"))) { + columns = sortColumns(columns); + } for (int i = 0; i < columns.size(); i++) { if (i > 0) { apply.append(","); diff --git a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java index e0d58c53a..e7567f90e 100644 --- a/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java +++ b/ebean-ddl-generator/src/main/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdl.java @@ -106,7 +106,7 @@ public class PostgresDdl extends PlatformDdl { } private boolean isVariableLength(String type) { - return type.startsWith("varchar") || type.startsWith("varbinary"); + return type.startsWith("varchar") || type.startsWith("varbinary") || type.startsWith("json"); } static final class DDLColumnSort implements Comparable { diff --git a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdlTest.java b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdlTest.java index 3a16a70f8..607f8166b 100644 --- a/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdlTest.java +++ b/ebean-ddl-generator/src/test/java/io/ebeaninternal/dbmigration/ddlgeneration/platform/PostgresDdlTest.java @@ -11,7 +11,7 @@ import static org.assertj.core.api.Assertions.assertThat; class PostgresDdlTest { - private PostgresDdl postgresDdl = new PostgresDdl(new PostgresPlatform()); + final PostgresDdl postgresDdl = new PostgresDdl(new PostgresPlatform()); @Test void setLockTimeout() { @@ -40,6 +40,12 @@ class PostgresDdlTest { assertThat(cols).extracting("type").containsExactly("int", "decimal(1)", "decimal(2)", "varbinary(1)", "varbinary(2)"); } + @Test + void sortColumns_json() { + List cols = postgresDdl.sortColumns(columns("json", "jsonb", "int")); + assertThat(cols).extracting("type").containsExactly("int", "json", "jsonb"); + } + @Test void sortColumns_clobs() { List cols = postgresDdl.sortColumns(columns("clob", "blob", "longvarchar(1)", "int", "longvarbinary(2)"));