diff --git a/hapi-fhir-jpaserver-migrate/src/main/java/ca/uhn/fhir/jpa/migrate/JdbcUtils.java b/hapi-fhir-jpaserver-migrate/src/main/java/ca/uhn/fhir/jpa/migrate/JdbcUtils.java index f1c889442be..14ba712aa2d 100644 --- a/hapi-fhir-jpaserver-migrate/src/main/java/ca/uhn/fhir/jpa/migrate/JdbcUtils.java +++ b/hapi-fhir-jpaserver-migrate/src/main/java/ca/uhn/fhir/jpa/migrate/JdbcUtils.java @@ -235,6 +235,8 @@ public class JdbcUtils { return new ColumnType(BaseTableColumnTypeTask.ColumnTypeEnum.DATE_TIMESTAMP, length); case Types.BLOB: return new ColumnType(BaseTableColumnTypeTask.ColumnTypeEnum.BLOB, length); + case Types.CLOB: + return new ColumnType(BaseTableColumnTypeTask.ColumnTypeEnum.CLOB, length); default: throw new IllegalArgumentException("Don't know how to handle datatype " + dataType + " for column " + theColumnName + " on table " + theTableName); } diff --git a/hapi-fhir-jpaserver-migrate/src/test/java/ca/uhn/fhir/jpa/migrate/taskdef/ModifyColumnTest.java b/hapi-fhir-jpaserver-migrate/src/test/java/ca/uhn/fhir/jpa/migrate/taskdef/ModifyColumnTest.java index 470870226f0..3a0a12c8237 100644 --- a/hapi-fhir-jpaserver-migrate/src/test/java/ca/uhn/fhir/jpa/migrate/taskdef/ModifyColumnTest.java +++ b/hapi-fhir-jpaserver-migrate/src/test/java/ca/uhn/fhir/jpa/migrate/taskdef/ModifyColumnTest.java @@ -9,7 +9,28 @@ import static org.hamcrest.Matchers.containsInAnyOrder; import static org.junit.Assert.*; public class ModifyColumnTest extends BaseTest { + @Test + public void testColumnWithJdbcTypeClob() throws SQLException { + executeSql("create table SOMETABLE (TEXTCOL clob)"); + ModifyColumnTask task = new ModifyColumnTask(); + task.setTableName("SOMETABLE"); + task.setColumnName("TEXTCOL"); + task.setColumnType(AddColumnTask.ColumnTypeEnum.STRING); + task.setNullable(true); + task.setColumnLength(250); + getMigrator().addTask(task); + + getMigrator().migrate(); + + assertEquals(new JdbcUtils.ColumnType(BaseTableColumnTypeTask.ColumnTypeEnum.STRING, 250), JdbcUtils.getColumnType(getConnectionProperties(), "SOMETABLE", "TEXTCOL")); + assertEquals(1, task.getExecutedStatements().size()); + + // Make sure additional migrations don't crash + getMigrator().migrate(); + getMigrator().migrate(); + + } @Test public void testColumnAlreadyExists() throws SQLException {