Package io.debezium.connector.mysql
Class MySqlUnsignedIntegerConverter
java.lang.Object
io.debezium.connector.mysql.MySqlUnsignedIntegerConverter
A converter API for MySQL Unsigned Integer types. It intends to convert any integer type value from binlog into the correct representation of unsigned numeric
MySQL binlog stores unsigned numeric into this format: (insertion value - Maximum data type boundary - 1), therefore to calculate the correct unsigned numeric representation
we will inverse the original calculation by applying this calculation: (insertion value + Maximum data type boundary + 1). Please see DBZ-228 for more info
- Author:
- Omar Al-Safi
-
Field Summary
Modifier and TypeFieldDescriptionprivate static final BigDecimal
private static final BigDecimal
private static final long
private static final long
private static final int
private static final int
private static final int
private static final int
private static final short
private static final short
Maximum values for Unsigned Integer Types. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic BigDecimal
convertUnsignedBigint
(BigDecimal originalNumber) Convert original value insertion of type 'BIGINT' into the correct BIGINT UNSIGNED representation Note: Unsigned BIGINT (64-bit) is represented in 'BigDecimal' data type.static long
convertUnsignedInteger
(long originalNumber) Convert original value insertion of type 'INT' into the correct INT UNSIGNED representation Note: Unsigned INT (32-bit) is represented in 'Long' 64-bit data type.static int
convertUnsignedMediumint
(int originalNumber) Convert original value insertion of type 'MEDIUMINT' into the correct MEDIUMINT UNSIGNED representation Note: Unsigned MEDIUMINT (24-bit) is represented in 'Integer' 32-bit data type since the MAX value of Unsigned MEDIUMINT 16777215 < Max value of Integer 2147483647static int
convertUnsignedSmallint
(int originalNumber) Convert original value insertion of type 'SMALLINT' into the correct SMALLINT UNSIGNED representation Note: Unsigned SMALLINT (16-bit) is represented in 'Integer' 32-bit data type.static short
convertUnsignedTinyint
(short originalNumber) Convert original value insertion of type 'TINYINT' into the correct TINYINT UNSIGNED representation Note: Unsigned TINYINT (8-bit) is represented in 'Short' 16-bit data type.
-
Field Details
-
TINYINT_MAX_VALUE
private static final short TINYINT_MAX_VALUEMaximum values for Unsigned Integer Types. Needed in order to calculate actual value of an Unsigned Integer Types from binlog value. Reference to- See Also:
-
SMALLINT_MAX_VALUE
private static final int SMALLINT_MAX_VALUE- See Also:
-
MEDIUMINT_MAX_VALUE
private static final int MEDIUMINT_MAX_VALUE- See Also:
-
INT_MAX_VALUE
private static final long INT_MAX_VALUE- See Also:
-
BIGINT_MAX_VALUE
-
TINYINT_CORRECTION
private static final short TINYINT_CORRECTION- See Also:
-
SMALLINT_CORRECTION
private static final int SMALLINT_CORRECTION- See Also:
-
MEDIUMINT_CORRECTION
private static final int MEDIUMINT_CORRECTION- See Also:
-
INT_CORRECTION
private static final long INT_CORRECTION- See Also:
-
BIGINT_CORRECTION
-
-
Constructor Details
-
MySqlUnsignedIntegerConverter
private MySqlUnsignedIntegerConverter()Private constructor
-
-
Method Details
-
convertUnsignedTinyint
public static short convertUnsignedTinyint(short originalNumber) Convert original value insertion of type 'TINYINT' into the correct TINYINT UNSIGNED representation Note: Unsigned TINYINT (8-bit) is represented in 'Short' 16-bit data type. Reference: https://kafka.apache.org/0102/javadoc/org/apache/kafka/connect/data/Schema.Type.html -
convertUnsignedSmallint
public static int convertUnsignedSmallint(int originalNumber) Convert original value insertion of type 'SMALLINT' into the correct SMALLINT UNSIGNED representation Note: Unsigned SMALLINT (16-bit) is represented in 'Integer' 32-bit data type. Reference: https://kafka.apache.org/0102/javadoc/org/apache/kafka/connect/data/Schema.Type.html -
convertUnsignedMediumint
public static int convertUnsignedMediumint(int originalNumber) Convert original value insertion of type 'MEDIUMINT' into the correct MEDIUMINT UNSIGNED representation Note: Unsigned MEDIUMINT (24-bit) is represented in 'Integer' 32-bit data type since the MAX value of Unsigned MEDIUMINT 16777215 < Max value of Integer 2147483647 -
convertUnsignedInteger
public static long convertUnsignedInteger(long originalNumber) Convert original value insertion of type 'INT' into the correct INT UNSIGNED representation Note: Unsigned INT (32-bit) is represented in 'Long' 64-bit data type. Reference: https://kafka.apache.org/0102/javadoc/org/apache/kafka/connect/data/Schema.Type.html -
convertUnsignedBigint
Convert original value insertion of type 'BIGINT' into the correct BIGINT UNSIGNED representation Note: Unsigned BIGINT (64-bit) is represented in 'BigDecimal' data type. Reference: https://kafka.apache.org/0102/javadoc/org/apache/kafka/connect/data/Schema.Type.html- Parameters:
originalNumber
-BigDecimal
the original insertion value- Returns:
BigDecimal
the correct representation of the original insertion value
-