improve sql parser

This commit is contained in:
wenshao
2013-08-04 13:01:45 +08:00
parent 6de2b73fe1
commit 4d8548ba8b
38 changed files with 1019 additions and 190 deletions
@@ -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;
}
}