From 0181dfaa42281d669fd2b9b9459533609afb16f0 Mon Sep 17 00:00:00 2001 From: mcy Date: Thu, 21 Mar 2019 18:35:58 +0800 Subject: [PATCH] =?UTF-8?q?sql=E8=A7=A3=E6=9E=90=E5=AF=B9case=20when=20?= =?UTF-8?q?=E7=9A=84=E6=94=AF=E6=8C=81=20fix=20#1598?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../otter/canal/client/adapter/es/config/SqlParser.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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)); } }