From cb51ea42386e68bc1b0b76d73fd2a4c8d363d68b Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Wed, 18 May 2016 21:04:36 +1200 Subject: [PATCH] #713 - DB Migration - When change is from Not Null to Null ... this migration is duplicated in subsequent migration generation --- .../ebean/dbmigration/model/MColumn.java | 7 +++++ .../ebean/dbmigration/model/MColumnTest.java | 31 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/main/java/com/avaje/ebean/dbmigration/model/MColumn.java b/src/main/java/com/avaje/ebean/dbmigration/model/MColumn.java index 286261ca7..ce150d00d 100644 --- a/src/main/java/com/avaje/ebean/dbmigration/model/MColumn.java +++ b/src/main/java/com/avaje/ebean/dbmigration/model/MColumn.java @@ -268,6 +268,10 @@ public class MColumn { return val != null && !val.isEmpty(); } + private boolean hasValue(Boolean val) { + return val != null; + } + private AlterColumn getAlterColumn(String tableName, boolean tableWithHistory) { if (alterColumn == null) { alterColumn = new AlterColumn(); @@ -396,6 +400,9 @@ public class MColumn { if (hasValue(alterColumn.getType())) { type = alterColumn.getType(); } + if (hasValue(alterColumn.isNotnull())) { + notnull = alterColumn.isNotnull(); + } if (hasValue(alterColumn.getDefaultValue())) { defaultValue = alterColumn.getDefaultValue(); } diff --git a/src/test/java/com/avaje/ebean/dbmigration/model/MColumnTest.java b/src/test/java/com/avaje/ebean/dbmigration/model/MColumnTest.java index 7793999c7..0bcdf6e5e 100644 --- a/src/test/java/com/avaje/ebean/dbmigration/model/MColumnTest.java +++ b/src/test/java/com/avaje/ebean/dbmigration/model/MColumnTest.java @@ -58,6 +58,37 @@ public class MColumnTest { assertThat(alterColumn.getDefaultValue()).isNull(); } + @Test + public void diffNull() throws Exception { + + ModelDiff diff = diff(); + + MColumn newCol = basic(); + newCol.setNotnull(false); + + MColumn baseCol = basic(); + baseCol.setNotnull(true); + + baseCol.compare(diff, table, newCol); + + assertChanges(diff); + AlterColumn alterColumn = getAlterColumn(diff); + assertThat(alterColumn.isNotnull()).isEqualTo(false); + } + + @Test + public void applyNotNull_expect_notNull() throws Exception { + + MColumn newCol = basic(); + newCol.setNotnull(true); + + AlterColumn alterColumn = new AlterColumn(); + alterColumn.setNotnull(Boolean.FALSE); + newCol.apply(alterColumn); + + assertThat(newCol.isNotnull()).isFalse(); + } + @Test public void diffCheckAdd() throws Exception {