mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
refactor sql parser.
This commit is contained in:
-12
@@ -54,18 +54,6 @@ public class MySqlUpdateStatement extends SQLUpdateStatement implements MySqlSta
|
||||
this.limit = limit;
|
||||
}
|
||||
|
||||
// public List<SQLSelectItem> getReturning() {
|
||||
// return returning;
|
||||
// }
|
||||
|
||||
public void addReturning(List<SQLSelectItem> returning) {
|
||||
List<SQLExpr> thisReturning = this.getReturning();
|
||||
for (SQLSelectItem item : returning) {
|
||||
item.setParent(this);
|
||||
thisReturning.add(item.getExpr());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void accept0(SQLASTVisitor visitor) {
|
||||
if (visitor instanceof MySqlASTVisitor) {
|
||||
|
||||
@@ -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<SQLExpr> returnning = updateStmt.getReturning();
|
||||
for (SQLSelectItem item : queryBlock.getSelectList()) {
|
||||
SQLExpr itemExpr = item.getExpr();
|
||||
itemExpr.setParent(updateStmt);
|
||||
returnning.add(itemExpr);
|
||||
}
|
||||
returningFlag = true;
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user