This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 390425aeafd Refactor MySQLBinlogUnsignedNumberHandler (#32553)
390425aeafd is described below
commit 390425aeafdbe05ec6a3a38548c9beb202a88cc5
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Aug 16 13:03:52 2024 +0800
Refactor MySQLBinlogUnsignedNumberHandler (#32553)
* Refactor MySQLBinlogBinaryStringHandler
* Refactor MySQLBinlogUnsignedNumberHandler
---
.../mysql/ingest/dumper/type/MySQLBinlogDataHandler.java | 2 +-
.../dumper/type/binary/MySQLBinlogBinaryStringHandler.java | 4 ++--
.../dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java | 6 ++++--
.../type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java | 2 ++
.../type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java | 8 +++-----
.../dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java | 9 +++------
.../type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java | 9 +++------
.../type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java | 9 +++------
.../type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java | 9 +++------
9 files changed, 24 insertions(+), 34 deletions(-)
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/MySQLBinlogDataHandler.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/MySQLBinlogDataHandler.java
index b2c986a4253..d88384d4e25 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/MySQLBinlogDataHandler.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/MySQLBinlogDataHandler.java
@@ -44,7 +44,7 @@ public final class MySQLBinlogDataHandler {
return null;
}
if (value instanceof MySQLBinaryString) {
- return MySQLBinlogBinaryStringHandler.handle(columnMetaData,
value);
+ return MySQLBinlogBinaryStringHandler.handle(columnMetaData,
(MySQLBinaryString) value);
}
Optional<Serializable> result =
MySQLBinlogUnsignedNumberHandlerEngine.handle(columnMetaData, value);
return result.orElse(value);
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/binary/MySQLBinlogBinaryStringHandler.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/binary/MySQLBinlogBinaryStringHandler.java
index 83d16e2c692..d06f5b3e439 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/binary/MySQLBinlogBinaryStringHandler.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/binary/MySQLBinlogBinaryStringHandler.java
@@ -38,7 +38,7 @@ public final class MySQLBinlogBinaryStringHandler {
* @param value to be handled value
* @return handled value
*/
- public static Serializable handle(final PipelineColumnMetaData
columnMetaData, final Serializable value) {
- return PipelineJdbcUtils.isBinaryColumn(columnMetaData.getDataType())
? ((MySQLBinaryString) value).getBytes() : new String(((MySQLBinaryString)
value).getBytes(), Charset.defaultCharset());
+ public static Serializable handle(final PipelineColumnMetaData
columnMetaData, final MySQLBinaryString value) {
+ return PipelineJdbcUtils.isBinaryColumn(columnMetaData.getDataType())
? value.getBytes() : new String(value.getBytes(), Charset.defaultCharset());
}
}
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java
index c730195d568..4c9590f4f72 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandler.java
@@ -21,8 +21,10 @@ import java.io.Serializable;
/**
* MySQL binlog unsigned number handler.
+ *
+ * @param <T> type of value
*/
-public interface MySQLBinlogUnsignedNumberHandler {
+public interface MySQLBinlogUnsignedNumberHandler<T extends Serializable> {
/**
* Handle unsigned number value.
@@ -30,5 +32,5 @@ public interface MySQLBinlogUnsignedNumberHandler {
* @param value to be handled value
* @return handled value
*/
- Serializable handle(Serializable value);
+ Number handle(T value);
}
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java
index 29ef481f239..62628a6e3ad 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/MySQLBinlogUnsignedNumberHandlerEngine.java
@@ -36,6 +36,7 @@ import java.util.Optional;
@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE)
public final class MySQLBinlogUnsignedNumberHandlerEngine {
+ @SuppressWarnings("rawtypes")
private static final Map<String, MySQLBinlogUnsignedNumberHandler>
HANDLERS = new HashMap<>();
static {
@@ -53,6 +54,7 @@ public final class MySQLBinlogUnsignedNumberHandlerEngine {
* @param value column value
* @return handled column value
*/
+ @SuppressWarnings("unchecked")
public static Optional<Serializable> handle(final PipelineColumnMetaData
columnMetaData, final Serializable value) {
String dataTypeName = columnMetaData.getDataTypeName();
return HANDLERS.containsKey(dataTypeName) ?
Optional.of(HANDLERS.get(dataTypeName).handle(value)) : Optional.empty();
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java
index 2872c476ac0..0c39bef3070 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedBigintHandler.java
@@ -19,19 +19,17 @@ package
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
import
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
-import java.io.Serializable;
import java.math.BigInteger;
/**
* MySQL binlog unsigned bigint handler.
*/
-public final class MySQLBinlogUnsignedBigintHandler implements
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedBigintHandler implements
MySQLBinlogUnsignedNumberHandler<Long> {
private static final BigInteger BIGINT_MODULO = new
BigInteger("18446744073709551616");
@Override
- public Serializable handle(final Serializable value) {
- long longValue = (long) value;
- return longValue < 0L ?
BIGINT_MODULO.add(BigInteger.valueOf(longValue)) : longValue;
+ public Number handle(final Long value) {
+ return value < 0L ? BIGINT_MODULO.add(BigInteger.valueOf(value)) :
value;
}
}
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java
index 991f02606ce..8f810fac443 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedIntHandler.java
@@ -19,18 +19,15 @@ package
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
import
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
-import java.io.Serializable;
-
/**
* MySQL binlog unsigned int handler.
*/
-public final class MySQLBinlogUnsignedIntHandler implements
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedIntHandler implements
MySQLBinlogUnsignedNumberHandler<Integer> {
private static final long INT_MODULO = 4294967296L;
@Override
- public Serializable handle(final Serializable value) {
- int intValue = (int) value;
- return intValue < 0 ? INT_MODULO + intValue : intValue;
+ public Number handle(final Integer value) {
+ return value < 0 ? INT_MODULO + value : value;
}
}
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java
index 674e308613e..bdf8eaabbe7 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedMediumintHandler.java
@@ -19,18 +19,15 @@ package
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
import
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
-import java.io.Serializable;
-
/**
* MySQL binlog unsigned mediumint handler.
*/
-public final class MySQLBinlogUnsignedMediumintHandler implements
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedMediumintHandler implements
MySQLBinlogUnsignedNumberHandler<Integer> {
private static final int MEDIUMINT_MODULO = 16777216;
@Override
- public Serializable handle(final Serializable value) {
- int intValue = (int) value;
- return intValue < 0 ? MEDIUMINT_MODULO + intValue : intValue;
+ public Number handle(final Integer value) {
+ return value < 0 ? MEDIUMINT_MODULO + value : value;
}
}
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java
index 8f1bde0cfd0..ba9aa715cb7 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedSmallintHandler.java
@@ -19,18 +19,15 @@ package
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
import
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
-import java.io.Serializable;
-
/**
* MySQL binlog unsigned smallint handler.
*/
-public final class MySQLBinlogUnsignedSmallintHandler implements
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedSmallintHandler implements
MySQLBinlogUnsignedNumberHandler<Short> {
private static final int SMALLINT_MODULO = 65536;
@Override
- public Serializable handle(final Serializable value) {
- short shortValue = (short) value;
- return shortValue < 0 ? SMALLINT_MODULO + shortValue : shortValue;
+ public Number handle(final Short value) {
+ return value < 0 ? SMALLINT_MODULO + value : value;
}
}
diff --git
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java
index 9a1ccd3291a..de3bb28e088 100644
---
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java
+++
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/dumper/type/unsigned/impl/MySQLBinlogUnsignedTinyintHandler.java
@@ -19,18 +19,15 @@ package
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigne
import
org.apache.shardingsphere.data.pipeline.mysql.ingest.dumper.type.unsigned.MySQLBinlogUnsignedNumberHandler;
-import java.io.Serializable;
-
/**
* MySQL binlog unsigned tinyint handler.
*/
-public final class MySQLBinlogUnsignedTinyintHandler implements
MySQLBinlogUnsignedNumberHandler {
+public final class MySQLBinlogUnsignedTinyintHandler implements
MySQLBinlogUnsignedNumberHandler<Byte> {
private static final int TINYINT_MODULO = 256;
@Override
- public Serializable handle(final Serializable value) {
- byte byteValue = (byte) value;
- return byteValue < 0 ? TINYINT_MODULO + byteValue : byteValue;
+ public Number handle(final Byte value) {
+ return value < 0 ? TINYINT_MODULO + value : value;
}
}