diff --git a/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/config/SqlParser.java b/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/config/SqlParser.java index a0e4d83d..d4c7680f 100644 --- a/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/config/SqlParser.java +++ b/client-adapter/elasticsearch/src/main/java/com/alibaba/otter/canal/client/adapter/es/config/SqlParser.java @@ -9,10 +9,7 @@ import java.util.stream.Collectors; import com.alibaba.fastsql.sql.SQLUtils; import com.alibaba.fastsql.sql.ast.SQLExpr; -import com.alibaba.fastsql.sql.ast.expr.SQLBinaryOpExpr; -import com.alibaba.fastsql.sql.ast.expr.SQLIdentifierExpr; -import com.alibaba.fastsql.sql.ast.expr.SQLMethodInvokeExpr; -import com.alibaba.fastsql.sql.ast.expr.SQLPropertyExpr; +import com.alibaba.fastsql.sql.ast.expr.*; import com.alibaba.fastsql.sql.ast.statement.*; import com.alibaba.fastsql.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock; import com.alibaba.fastsql.sql.dialect.mysql.parser.MySqlStatementParser; @@ -121,6 +118,10 @@ public class SqlParser { fieldItem.setBinaryOp(true); visitColumn(sqlBinaryOpExpr.getLeft(), fieldItem); visitColumn(sqlBinaryOpExpr.getRight(), fieldItem); + } else if (expr instanceof SQLCaseExpr) { + SQLCaseExpr sqlCaseExpr = (SQLCaseExpr) expr; + fieldItem.setMethod(true); + sqlCaseExpr.getItems().forEach(item-> visitColumn(item.getConditionExpr(), fieldItem)); } }