|
@@ -286,12 +286,18 @@ public class LogEventConvert extends AbstractCanalLifeCycle implements BinlogPar
|
|
|
|
|
|
boolean isDml = (type == EventType.INSERT || type == EventType.UPDATE || type == EventType.DELETE);
|
|
|
|
|
|
+ // filterQueryDdl=true的情况下,也得更新tablemeta
|
|
|
if (!isSeek && !isDml) {
|
|
|
// 使用新的表结构元数据管理方式
|
|
|
EntryPosition position = createPosition(event.getHeader());
|
|
|
tableMetaCache.apply(position, event.getDbName(), queryString, null);
|
|
|
}
|
|
|
|
|
|
+ if (filterQueryDdl) {
|
|
|
+ // 全部DDL过滤,那就忽略事件生成
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
Header header = createHeader(event.getHeader(), schemaName, tableName, type);
|
|
|
RowChange.Builder rowChangeBuilder = RowChange.newBuilder();
|
|
|
rowChangeBuilder.setIsDdl(!isDml);
|
|
@@ -335,12 +341,8 @@ public class LogEventConvert extends AbstractCanalLifeCycle implements BinlogPar
|
|
|
|| result.getType() == EventType.RENAME || result.getType() == EventType.CINDEX
|
|
|
|| result.getType() == EventType.DINDEX) { // 针对DDL类型
|
|
|
|
|
|
- if (filterQueryDdl) {
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- if (StringUtils.isEmpty(tableName)
|
|
|
- || (result.getType() == EventType.RENAME && StringUtils.isEmpty(result.getOriTableName()))) {
|
|
|
+ if (!filterQueryDdl && (StringUtils.isEmpty(tableName)
|
|
|
+ || (result.getType() == EventType.RENAME && StringUtils.isEmpty(result.getOriTableName())))) {
|
|
|
// 如果解析不出tableName,记录一下日志,方便bugfix,目前直接抛出异常,中断解析
|
|
|
throw new CanalParseException("SimpleDdlParser process query failed. pls submit issue with this queryString: "
|
|
|
+ queryString + " , and DdlResult: " + result.toString());
|