Bladeren bron

fix:当查询列包含常量拼接时解析主键字段进行条件拼接时会多出 where null=null (#2188)

gaecfov 5 jaren geleden
bovenliggende
commit
365ca4d01f

+ 7 - 4
client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/config/SchemaItem.java

@@ -87,10 +87,13 @@ public class SchemaItem {
                         .forEach((fieldName, fieldItem) -> fieldItem.getColumnItems().forEach(columnItem -> {
                             // TableItem tableItem = getAliasTableItems().get(columnItem.getOwner());
                             // if (!tableItem.isSubQuery()) {
-                            List<FieldItem> fieldItems = columnFields.computeIfAbsent(
-                                columnItem.getOwner() + "." + columnItem.getColumnName(),
-                                k -> new ArrayList<>());
-                            fieldItems.add(fieldItem);
+                            //当数据列并非原始列时,columnName是空的,例如concat('px',id)
+                            if(columnItem.getColumnName() != null) {
+                                List<FieldItem> fieldItems = columnFields.computeIfAbsent(
+                                    columnItem.getOwner() + "." + columnItem.getColumnName(),
+                                    k -> new ArrayList<>());
+                                fieldItems.add(fieldItem);
+                            }
                             // } else {
                             // tableItem.getSubQueryFields().forEach(subQueryField -> {
                             // List<FieldItem> fieldItems = columnFields.computeIfAbsent(