mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve sqlwall
This commit is contained in:
@@ -15,16 +15,21 @@
|
||||
*/
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLCommentHint;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLCreateDatabaseStatement extends SQLStatementImpl {
|
||||
|
||||
private SQLName name;
|
||||
private SQLName name;
|
||||
|
||||
private String characterSet;
|
||||
private String collate;
|
||||
private String characterSet;
|
||||
private String collate;
|
||||
|
||||
private List<SQLCommentHint> hints;
|
||||
|
||||
public SQLCreateDatabaseStatement(){
|
||||
}
|
||||
@@ -61,4 +66,12 @@ public class SQLCreateDatabaseStatement extends SQLStatementImpl {
|
||||
this.collate = collate;
|
||||
}
|
||||
|
||||
public List<SQLCommentHint> getHints() {
|
||||
return hints;
|
||||
}
|
||||
|
||||
public void setHints(List<SQLCommentHint> hints) {
|
||||
this.hints = hints;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,13 +15,18 @@
|
||||
*/
|
||||
package com.alibaba.druid.sql.ast.statement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLCommentHint;
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.ast.SQLStatementImpl;
|
||||
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
|
||||
|
||||
public class SQLExplainStatement extends SQLStatementImpl {
|
||||
|
||||
protected SQLStatement statement;
|
||||
protected SQLStatement statement;
|
||||
|
||||
private List<SQLCommentHint> hints;
|
||||
|
||||
public SQLStatement getStatement() {
|
||||
return statement;
|
||||
@@ -41,4 +46,12 @@ public class SQLExplainStatement extends SQLStatementImpl {
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public List<SQLCommentHint> getHints() {
|
||||
return hints;
|
||||
}
|
||||
|
||||
public void setHints(List<SQLCommentHint> hints) {
|
||||
this.hints = hints;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2537,6 +2537,10 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
if (lexer.token() == Token.DEFAULT) {
|
||||
lexer.nextToken();
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.HINT) {
|
||||
stmt.setHints(this.exprParser.parseHints());
|
||||
}
|
||||
|
||||
return stmt;
|
||||
}
|
||||
|
||||
@@ -1123,12 +1123,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
print(" WITH CONSISTENT SNAPSHOT");
|
||||
}
|
||||
|
||||
List<SQLCommentHint> hints = x.getHints();
|
||||
if (hints != null && !hints.isEmpty()) {
|
||||
if (x.getHints() != null && x.getHints().size() > 0) {
|
||||
print(" ");
|
||||
for (SQLCommentHint hint : hints) {
|
||||
hint.accept(this);
|
||||
}
|
||||
printAndAccept(x.getHints(), " ");
|
||||
}
|
||||
|
||||
if (x.isBegin()) {
|
||||
@@ -2143,12 +2140,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
x.getTable().accept(this);
|
||||
}
|
||||
|
||||
List<SQLCommentHint> hints = x.getHints();
|
||||
if (hints != null && !hints.isEmpty()) {
|
||||
if (x.getHints() != null && x.getHints().size() > 0) {
|
||||
print(" ");
|
||||
for (SQLCommentHint hint : hints) {
|
||||
hint.accept(this);
|
||||
}
|
||||
printAndAccept(x.getHints(), " ");
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -2685,12 +2679,9 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
print(x.getLockType().name);
|
||||
}
|
||||
|
||||
List<SQLCommentHint> hints = x.getHints();
|
||||
if (hints != null && !hints.isEmpty()) {
|
||||
if (x.getHints() != null && x.getHints().size() > 0) {
|
||||
print(" ");
|
||||
for (SQLCommentHint hint : hints) {
|
||||
hint.accept(this);
|
||||
}
|
||||
printAndAccept(x.getHints(), " ");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1534,8 +1534,13 @@ public class SQLStatementParser extends SQLParser {
|
||||
if (lexer.token() == Token.FOR) {
|
||||
lexer.nextToken();
|
||||
}
|
||||
|
||||
|
||||
SQLExplainStatement explain = new SQLExplainStatement();
|
||||
|
||||
if(lexer.token == Token.HINT) {
|
||||
explain.setHints(this.exprParser.parseHints());
|
||||
}
|
||||
|
||||
explain.setStatement(parseStatement());
|
||||
|
||||
return explain;
|
||||
|
||||
@@ -1149,13 +1149,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
print("SET ");
|
||||
printAndAccept(x.getItems(), ", ");
|
||||
|
||||
List<SQLCommentHint> hints = x.getHints();
|
||||
if (hints != null && !hints.isEmpty()) {
|
||||
if (x.getHints() != null && x.getHints().size() > 0) {
|
||||
print(" ");
|
||||
for (SQLCommentHint hint : hints) {
|
||||
hint.accept(this);
|
||||
}
|
||||
printAndAccept(x.getHints(), " ");
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1770,6 +1768,10 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
@Override
|
||||
public boolean visit(SQLExplainStatement x) {
|
||||
print("EXPLAIN");
|
||||
if (x.getHints() != null && x.getHints().size() > 0) {
|
||||
print(" ");
|
||||
printAndAccept(x.getHints(), " ");
|
||||
}
|
||||
println();
|
||||
x.getStatement().accept(this);
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user