Browse Source

filter dml before apply to tsdb

wuwo 6 years ago
parent
commit
332f759f96

+ 4 - 3
parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/dbsync/LogEventConvert.java

@@ -260,7 +260,9 @@ public class LogEventConvert extends AbstractCanalLifeCycle implements BinlogPar
                 return null;
                 return null;
             }
             }
 
 
-            if (!isSeek) {
+            boolean isDml = (type == EventType.INSERT || type == EventType.UPDATE || type == EventType.DELETE);
+            
+            if (!isSeek && !isDml) {
                 // 使用新的表结构元数据管理方式
                 // 使用新的表结构元数据管理方式
                 EntryPosition position = createPosition(event.getHeader());
                 EntryPosition position = createPosition(event.getHeader());
                 tableMetaCache.apply(position, event.getDbName(), queryString, null);
                 tableMetaCache.apply(position, event.getDbName(), queryString, null);
@@ -268,8 +270,7 @@ public class LogEventConvert extends AbstractCanalLifeCycle implements BinlogPar
 
 
             Header header = createHeader(event.getHeader(), schemaName, tableName, type);
             Header header = createHeader(event.getHeader(), schemaName, tableName, type);
             RowChange.Builder rowChangeBuider = RowChange.newBuilder();
             RowChange.Builder rowChangeBuider = RowChange.newBuilder();
-            if (type != EventType.QUERY && type != EventType.INSERT && type != EventType.UPDATE
-                && type != EventType.DELETE) {
+            if (type != EventType.QUERY && !isDml) {
                 rowChangeBuider.setIsDdl(true);
                 rowChangeBuider.setIsDdl(true);
             }
             }
             rowChangeBuider.setSql(queryString);
             rowChangeBuider.setSql(queryString);