diff --git a/debezium-core/src/main/java/io/debezium/relational/history/JsonTableChangeSerializer.java b/debezium-core/src/main/java/io/debezium/relational/history/JsonTableChangeSerializer.java index 27abc4b0b..dd302df0d 100644 --- a/debezium-core/src/main/java/io/debezium/relational/history/JsonTableChangeSerializer.java +++ b/debezium-core/src/main/java/io/debezium/relational/history/JsonTableChangeSerializer.java @@ -91,6 +91,7 @@ private Document toDocument(Column column) { document.setBoolean("autoIncremented", column.isAutoIncremented()); document.setBoolean("generated", column.isGenerated()); document.setString("comment", column.comment()); + document.setBoolean("hasDefaultValue", column.hasDefaultValue()); column.defaultValueExpression().ifPresent(d -> document.setString("defaultValueExpression", d)); @@ -161,10 +162,14 @@ private static Table fromDocument(TableId id, Document document) { columnEditor.comment(columnComment); } + Boolean hasDefaultValue = v.getBoolean("hasDefaultValue"); String defaultValueExpression = v.getString("defaultValueExpression"); if (defaultValueExpression != null) { columnEditor.defaultValueExpression(defaultValueExpression); } + else if (Boolean.TRUE.equals(hasDefaultValue)) { + columnEditor.defaultValueExpression(null); + } Array enumValues = v.getArray("enumValues"); if (enumValues != null && !enumValues.isEmpty()) { diff --git a/debezium-core/src/test/java/io/debezium/relational/history/HistoryRecordTest.java b/debezium-core/src/test/java/io/debezium/relational/history/HistoryRecordTest.java index 52289519d..fcce241bf 100644 --- a/debezium-core/src/test/java/io/debezium/relational/history/HistoryRecordTest.java +++ b/debezium-core/src/test/java/io/debezium/relational/history/HistoryRecordTest.java @@ -54,6 +54,14 @@ public void canSerializeAndDeserializeHistoryRecord() throws Exception { .defaultValueExpression("1") .enumValues(Collect.arrayListOf("1", "2")) .create()) + .addColumn(Column.editor() + .name("third") + .jdbcType(Types.VARCHAR) + .type("VARCHAR") + .length(22) + .optional(true) + .comment("third comment") + .create()) .setPrimaryKeyNames("first") .setComment("table comment") .create();