fixed issue #1100 , fix type compare

This commit is contained in:
jiangahng.loujh
2018-11-08 13:57:12 +08:00
parent 2c1f3e649a
commit 0677443ccf

View File

@@ -52,9 +52,11 @@ public class DatabaseTableMeta implements TableMetaTSDB {
private static Pattern pattern = Pattern.compile("Duplicate entry '.*' for key '*'");
private static Pattern h2Pattern = Pattern.compile("Unique index or primary key violation");
private static ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
Thread thread = new Thread(r, "[scheduler-table-meta-snapshot]");
Thread thread = new Thread(r,
"[scheduler-table-meta-snapshot]");
thread.setDaemon(true);
return thread;
}
@@ -488,7 +490,24 @@ public class DatabaseTableMeta implements TableMetaTSDB {
return false;
}
if (!StringUtils.equalsIgnoreCase(sourceField.getColumnType(), targetField.getColumnType())) {
// if (!StringUtils.equalsIgnoreCase(sourceField.getColumnType(),
// targetField.getColumnType())) {
// return false;
// }
// https://github.com/alibaba/canal/issues/1100
// 支持一下 int vs int(10)
if ((sourceField.isUnsigned() && !targetField.isUnsigned())
|| (!sourceField.isUnsigned() && targetField.isUnsigned())) {
return false;
}
boolean columnTypeCompare = false;
columnTypeCompare |= StringUtils.containsIgnoreCase(sourceField.getColumnType(),
targetField.getColumnType());
columnTypeCompare |= StringUtils.containsIgnoreCase(targetField.getColumnType(),
sourceField.getColumnType());
if (!columnTypeCompare) {
return false;
}