From d5b0515da45675171f9896b99b4f5d88d3e433fe Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 25 Sep 2016 01:15:51 +0800 Subject: [PATCH] refactor sql parser. --- .../ast/statement/MySqlUpdateStatement.java | 12 ------------ .../mysql/parser/MySqlSelectParser.java | 19 +++++++++---------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlUpdateStatement.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlUpdateStatement.java index 1844896a40..9a0ab0b49d 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlUpdateStatement.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/ast/statement/MySqlUpdateStatement.java @@ -54,18 +54,6 @@ public class MySqlUpdateStatement extends SQLUpdateStatement implements MySqlSta this.limit = limit; } -// public List getReturning() { -// return returning; -// } - - public void addReturning(List returning) { - List thisReturning = this.getReturning(); - for (SQLSelectItem item : returning) { - item.setParent(this); - thisReturning.add(item.getExpr()); - } - } - @Override protected void accept0(SQLASTVisitor visitor) { if (visitor instanceof MySqlASTVisitor) { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java index 993b060a72..e120acbd76 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java @@ -19,15 +19,7 @@ import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLSetQuantifier; import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr; -import com.alibaba.druid.sql.ast.statement.SQLExprTableSource; -import com.alibaba.druid.sql.ast.statement.SQLSelect; -import com.alibaba.druid.sql.ast.statement.SQLSelectQuery; -import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock; -import com.alibaba.druid.sql.ast.statement.SQLSubqueryTableSource; -import com.alibaba.druid.sql.ast.statement.SQLTableSource; -import com.alibaba.druid.sql.ast.statement.SQLUnionQuery; -import com.alibaba.druid.sql.ast.statement.SQLUnionQueryTableSource; -import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem; +import com.alibaba.druid.sql.ast.statement.*; import com.alibaba.druid.sql.dialect.mysql.ast.MySqlForceIndexHint; import com.alibaba.druid.sql.dialect.mysql.ast.MySqlIgnoreIndexHint; import com.alibaba.druid.sql.dialect.mysql.ast.MySqlIndexHint; @@ -44,6 +36,8 @@ import com.alibaba.druid.sql.parser.SQLExprParser; import com.alibaba.druid.sql.parser.SQLSelectParser; import com.alibaba.druid.sql.parser.Token; +import java.util.List; + public class MySqlSelectParser extends SQLSelectParser { protected boolean returningFlag = false; @@ -66,7 +60,12 @@ public class MySqlSelectParser extends SQLSelectParser { if (lexer.token() == Token.UPDATE) { // taobao returning to urgly syntax updateStmt = this.parseUpdateStatment(); - updateStmt.addReturning(queryBlock.getSelectList()); + List returnning = updateStmt.getReturning(); + for (SQLSelectItem item : queryBlock.getSelectList()) { + SQLExpr itemExpr = item.getExpr(); + itemExpr.setParent(updateStmt); + returnning.add(itemExpr); + } returningFlag = true; return; }