mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
fixed issue #4152, TableMetaTSDB support canal.instance.filter.query.ddl=true
This commit is contained in:
@@ -286,12 +286,18 @@ public class LogEventConvert extends AbstractCanalLifeCycle implements BinlogPar
|
|||||||
|
|
||||||
boolean isDml = (type == EventType.INSERT || type == EventType.UPDATE || type == EventType.DELETE);
|
boolean isDml = (type == EventType.INSERT || type == EventType.UPDATE || type == EventType.DELETE);
|
||||||
|
|
||||||
|
// filterQueryDdl=true的情况下,也得更新tablemeta
|
||||||
if (!isSeek && !isDml) {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (filterQueryDdl) {
|
||||||
|
// 全部DDL过滤,那就忽略事件生成
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
Header header = createHeader(event.getHeader(), schemaName, tableName, type);
|
Header header = createHeader(event.getHeader(), schemaName, tableName, type);
|
||||||
RowChange.Builder rowChangeBuilder = RowChange.newBuilder();
|
RowChange.Builder rowChangeBuilder = RowChange.newBuilder();
|
||||||
rowChangeBuilder.setIsDdl(!isDml);
|
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.RENAME || result.getType() == EventType.CINDEX
|
||||||
|| result.getType() == EventType.DINDEX) { // 针对DDL类型
|
|| result.getType() == EventType.DINDEX) { // 针对DDL类型
|
||||||
|
|
||||||
if (filterQueryDdl) {
|
if (!filterQueryDdl && (StringUtils.isEmpty(tableName)
|
||||||
return true;
|
|| (result.getType() == EventType.RENAME && StringUtils.isEmpty(result.getOriTableName())))) {
|
||||||
}
|
|
||||||
|
|
||||||
if (StringUtils.isEmpty(tableName)
|
|
||||||
|| (result.getType() == EventType.RENAME && StringUtils.isEmpty(result.getOriTableName()))) {
|
|
||||||
// 如果解析不出tableName,记录一下日志,方便bugfix,目前直接抛出异常,中断解析
|
// 如果解析不出tableName,记录一下日志,方便bugfix,目前直接抛出异常,中断解析
|
||||||
throw new CanalParseException("SimpleDdlParser process query failed. pls submit issue with this queryString: "
|
throw new CanalParseException("SimpleDdlParser process query failed. pls submit issue with this queryString: "
|
||||||
+ queryString + " , and DdlResult: " + result.toString());
|
+ queryString + " , and DdlResult: " + result.toString());
|
||||||
|
|||||||
Reference in New Issue
Block a user