From 417e04f65584d2758b878249c060b2788f79c7ed Mon Sep 17 00:00:00 2001 From: wuwo Date: Fri, 9 Nov 2018 19:23:03 +0800 Subject: [PATCH] fixed DatabaseTableMeta#compareTableMeta --- .../parse/inbound/mysql/tsdb/DatabaseTableMeta.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/tsdb/DatabaseTableMeta.java b/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/tsdb/DatabaseTableMeta.java index ad15a695..068db5ed 100644 --- a/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/tsdb/DatabaseTableMeta.java +++ b/parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/tsdb/DatabaseTableMeta.java @@ -502,11 +502,13 @@ public class DatabaseTableMeta implements TableMetaTSDB { return false; } + String sign = sourceField.isUnsigned() ? "unsigned" : "signed"; + String sourceColumnType = StringUtils.removeEndIgnoreCase(sourceField.getColumnType(), sign).trim(); + String targetColumnType = StringUtils.removeEndIgnoreCase(targetField.getColumnType(), sign).trim(); + boolean columnTypeCompare = false; - columnTypeCompare |= StringUtils.containsIgnoreCase(sourceField.getColumnType(), - targetField.getColumnType()); - columnTypeCompare |= StringUtils.containsIgnoreCase(targetField.getColumnType(), - sourceField.getColumnType()); + columnTypeCompare |= StringUtils.containsIgnoreCase(sourceColumnType, targetColumnType); + columnTypeCompare |= StringUtils.containsIgnoreCase(targetColumnType, sourceColumnType); if (!columnTypeCompare) { return false; }