From f0cc055833cb1a5cf03acf6533253452e0ffd51b Mon Sep 17 00:00:00 2001 From: Jiri Pechanec Date: Fri, 14 Feb 2020 05:59:48 +0100 Subject: [PATCH] DBZ-1773 Change test for null value --- .../java/io/debezium/connector/mysql/SnapshotReader.java | 5 ++++- .../java/io/debezium/connector/mysql/MySqlTinyIntIT.java | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/debezium-connector-mysql/src/main/java/io/debezium/connector/mysql/SnapshotReader.java b/debezium-connector-mysql/src/main/java/io/debezium/connector/mysql/SnapshotReader.java index b576dc260..759fdbcff 100644 --- a/debezium-connector-mysql/src/main/java/io/debezium/connector/mysql/SnapshotReader.java +++ b/debezium-connector-mysql/src/main/java/io/debezium/connector/mysql/SnapshotReader.java @@ -163,7 +163,10 @@ else if (actualColumn.jdbcType() == Types.TIMESTAMP) { // JDBC's rs.GetObject() will return a Boolean for all TINYINT(1) columns. // TINYINT columns are reprtoed as SMALLINT by JDBC driver else if (actualColumn.jdbcType() == Types.TINYINT || actualColumn.jdbcType() == Types.SMALLINT) { - return rs.wasNull() ? null : rs.getInt(fieldNo); + // It seems that rs.wasNull() returns false when default value is set and NULL is inserted + // We thus need to use getObject() to identify if the value was provided and if yes then + // read it again to get correct scale + return rs.getObject(fieldNo) == null ? null : rs.getInt(fieldNo); } else { return rs.getObject(fieldNo); diff --git a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlTinyIntIT.java b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlTinyIntIT.java index dfdd2fa08..2f975f3a4 100644 --- a/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlTinyIntIT.java +++ b/debezium-connector-mysql/src/test/java/io/debezium/connector/mysql/MySqlTinyIntIT.java @@ -89,6 +89,6 @@ private void assertChangeRecord() throws InterruptedException { Assertions.assertThat(change.getInt16("ti")).isEqualTo((short) 100); Assertions.assertThat(change.getInt16("ti1")).isEqualTo((short) 5); - Assertions.assertThat(change.getInt16("ti2")).isEqualTo((byte) 50); + Assertions.assertThat(change.getInt16("ti2")).isEqualTo((short) 50); } }