From 75ee65f9e8a7661be3cb022473aa8a6a97262cac Mon Sep 17 00:00:00 2001 From: mcy Date: Thu, 20 Dec 2018 19:45:57 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20fixed=20#1313?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rdb/service/RdbMirrorDbSyncService.java | 5 +-- .../client/adapter/rdb/support/SyncUtil.java | 36 ++++++------------- 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/service/RdbMirrorDbSyncService.java b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/service/RdbMirrorDbSyncService.java index cd3c6567..9cc1e7db 100644 --- a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/service/RdbMirrorDbSyncService.java +++ b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/service/RdbMirrorDbSyncService.java @@ -74,8 +74,9 @@ public class RdbMirrorDbSyncService { rdbSyncService.sync(dmlList, dml -> { MirrorDbConfig mirrorDbConfig = mirrorDbConfigCache .get(dml.getDestination() + "." + dml.getDatabase()); - String destination = StringUtils.trimToEmpty(dml.getDestination()); - String database = dml.getDatabase(); + if (mirrorDbConfig == null) { + return false; + } String table = dml.getTable(); MappingConfig config = mirrorDbConfig.getTableConfig().get(table); diff --git a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java index 6e9b81a6..e8789b03 100644 --- a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java +++ b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java @@ -86,9 +86,7 @@ public class SyncUtil { } break; case Types.TINYINT: - if (value instanceof Byte || value instanceof Short || value instanceof Integer) { - pstmt.setByte(i, (byte) value); - } else if (value instanceof Number) { + if (value instanceof Number) { pstmt.setByte(i, ((Number) value).byteValue()); } else if (value instanceof String) { pstmt.setByte(i, Byte.parseByte((String) value)); @@ -97,9 +95,7 @@ public class SyncUtil { } break; case Types.SMALLINT: - if (value instanceof Byte || value instanceof Short || value instanceof Integer) { - pstmt.setShort(i, (short) value); - } else if (value instanceof Number) { + if (value instanceof Number) { pstmt.setShort(i, ((Number) value).shortValue()); } else if (value instanceof String) { pstmt.setShort(i, Short.parseShort((String) value)); @@ -108,10 +104,7 @@ public class SyncUtil { } break; case Types.INTEGER: - if (value instanceof Byte || value instanceof Short || value instanceof Integer - || value instanceof Long) { - pstmt.setInt(i, (int) value); - } else if (value instanceof Number) { + if (value instanceof Number) { pstmt.setInt(i, ((Number) value).intValue()); } else if (value instanceof String) { pstmt.setInt(i, Integer.parseInt((String) value)); @@ -120,10 +113,7 @@ public class SyncUtil { } break; case Types.BIGINT: - if (value instanceof Byte || value instanceof Short || value instanceof Integer - || value instanceof Long) { - pstmt.setLong(i, (long) value); - } else if (value instanceof Number) { + if (value instanceof Number) { pstmt.setLong(i, ((Number) value).longValue()); } else if (value instanceof String) { pstmt.setLong(i, Long.parseLong((String) value)); @@ -136,13 +126,13 @@ public class SyncUtil { if (value instanceof BigDecimal) { pstmt.setBigDecimal(i, (BigDecimal) value); } else if (value instanceof Byte) { - pstmt.setInt(i, (int) value); + pstmt.setInt(i, (Byte) value); } else if (value instanceof Short) { - pstmt.setInt(i, (int) value); + pstmt.setInt(i, (Short) value); } else if (value instanceof Integer) { - pstmt.setInt(i, (int) value); + pstmt.setInt(i, (Integer) value); } else if (value instanceof Long) { - pstmt.setLong(i, (long) value); + pstmt.setLong(i, (Long) value); } else if (value instanceof Float) { pstmt.setBigDecimal(i, new BigDecimal((float) value)); } else if (value instanceof Double) { @@ -154,10 +144,7 @@ public class SyncUtil { } break; case Types.REAL: - if (value instanceof Byte || value instanceof Short || value instanceof Integer || value instanceof Long - || value instanceof Float || value instanceof Double) { - pstmt.setFloat(i, (float) value); - } else if (value instanceof Number) { + if (value instanceof Number) { pstmt.setFloat(i, ((Number) value).floatValue()); } else if (value instanceof String) { pstmt.setFloat(i, Float.parseFloat((String) value)); @@ -167,10 +154,7 @@ public class SyncUtil { break; case Types.FLOAT: case Types.DOUBLE: - if (value instanceof Byte || value instanceof Short || value instanceof Integer || value instanceof Long - || value instanceof Float || value instanceof Double) { - pstmt.setDouble(i, (double) value); - } else if (value instanceof Number) { + if (value instanceof Number) { pstmt.setDouble(i, ((Number) value).doubleValue()); } else if (value instanceof String) { pstmt.setDouble(i, Double.parseDouble((String) value)); From 34b5f9c927c41d18b780a0fc0c60bca2be8a55bb Mon Sep 17 00:00:00 2001 From: mcy Date: Thu, 20 Dec 2018 19:53:30 +0800 Subject: [PATCH 2/2] modify --- .../otter/canal/client/adapter/rdb/support/SyncUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java index e8789b03..6be006d2 100644 --- a/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java +++ b/client-adapter/rdb/src/main/java/com/alibaba/otter/canal/client/adapter/rdb/support/SyncUtil.java @@ -126,9 +126,9 @@ public class SyncUtil { if (value instanceof BigDecimal) { pstmt.setBigDecimal(i, (BigDecimal) value); } else if (value instanceof Byte) { - pstmt.setInt(i, (Byte) value); + pstmt.setInt(i, ((Byte) value).intValue()); } else if (value instanceof Short) { - pstmt.setInt(i, (Short) value); + pstmt.setInt(i, ((Short) value).intValue()); } else if (value instanceof Integer) { pstmt.setInt(i, (Integer) value); } else if (value instanceof Long) {