mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve sql parser
This commit is contained in:
@@ -106,6 +106,7 @@ import com.alibaba.druid.sql.ast.statement.SQLExprHint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLForeignKeyConstraint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLForeignKeyImpl;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLGrantStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement.ValuesClause;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource;
|
||||
@@ -795,7 +796,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
} else {
|
||||
print("DROP TABLE ");
|
||||
}
|
||||
|
||||
|
||||
if (x.isIfExists()) {
|
||||
print("IF EXISTS ");
|
||||
}
|
||||
@@ -823,11 +824,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
|
||||
public boolean visit(SQLDropViewStatement x) {
|
||||
print("DROP VIEW ");
|
||||
|
||||
|
||||
if (x.isIfExists()) {
|
||||
print("IF EXISTS ");
|
||||
}
|
||||
|
||||
|
||||
printAndAccept(x.getTableSources(), ", ");
|
||||
|
||||
if (x.isCascade()) {
|
||||
@@ -1706,7 +1707,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
printAndAccept(x.getUsers(), ", ");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLExplainStatement x) {
|
||||
print("EXPLAIN");
|
||||
@@ -1714,4 +1715,59 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
|
||||
x.getStatement().accept(this);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLGrantStatement x) {
|
||||
print("GRANT ");
|
||||
printAndAccept(x.getPrivileges(), ", ");
|
||||
|
||||
if (x.getOn() != null) {
|
||||
print(" ON ");
|
||||
x.getOn().accept(this);
|
||||
}
|
||||
|
||||
if (x.getTo() != null) {
|
||||
print(" TO ");
|
||||
x.getTo().accept(this);
|
||||
}
|
||||
|
||||
boolean with = false;
|
||||
if (x.getMaxQueriesPerHour() != null) {
|
||||
if (!with) {
|
||||
print(" WITH");
|
||||
with = true;
|
||||
}
|
||||
print(" MAX_QUERIES_PER_HOUR ");
|
||||
x.getMaxQueriesPerHour().accept(this);
|
||||
}
|
||||
|
||||
if (x.getMaxUpdatesPerHour() != null) {
|
||||
if (!with) {
|
||||
print(" WITH");
|
||||
with = true;
|
||||
}
|
||||
print(" MAX_UPDATES_PER_HOUR ");
|
||||
x.getMaxUpdatesPerHour().accept(this);
|
||||
}
|
||||
|
||||
if (x.getMaxConnectionsPerHour() != null) {
|
||||
if (!with) {
|
||||
print(" WITH");
|
||||
with = true;
|
||||
}
|
||||
print(" MAX_CONNECTIONS_PER_HOUR ");
|
||||
x.getMaxConnectionsPerHour().accept(this);
|
||||
}
|
||||
|
||||
if (x.getMaxUserConnections() != null) {
|
||||
if (!with) {
|
||||
print(" WITH");
|
||||
with = true;
|
||||
}
|
||||
print(" MAX_USER_CONNECTIONS ");
|
||||
x.getMaxUserConnections().accept(this);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,6 +89,7 @@ import com.alibaba.druid.sql.ast.statement.SQLExplainStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprHint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLForeignKeyImpl;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLGrantStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLPrimaryKeyImpl;
|
||||
@@ -504,4 +505,8 @@ public interface SQLASTVisitor {
|
||||
void endVisit(SQLExplainStatement x);
|
||||
|
||||
boolean visit(SQLExplainStatement x);
|
||||
|
||||
void endVisit(SQLGrantStatement x);
|
||||
|
||||
boolean visit(SQLGrantStatement x);
|
||||
}
|
||||
|
||||
@@ -90,6 +90,7 @@ import com.alibaba.druid.sql.ast.statement.SQLExplainStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprHint;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLForeignKeyImpl;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLGrantStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement.ValuesClause;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource;
|
||||
@@ -975,4 +976,14 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor {
|
||||
public boolean visit(SQLExplainStatement x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(SQLGrantStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLGrantStatement x) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ import com.alibaba.druid.sql.ast.statement.SQLDropUserStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLDropViewStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLForeignKeyImpl;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLGrantStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLRollbackStatement;
|
||||
@@ -1257,12 +1258,12 @@ public class SchemaStatVisitor extends SQLASTVisitorAdapter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(SQLDropUserStatement x) {
|
||||
|
||||
public boolean visit(SQLDropUserStatement x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(SQLDropUserStatement x) {
|
||||
return true;
|
||||
public boolean visit(SQLGrantStatement x) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user