This commit is contained in:
温少
2012-03-18 03:28:48 +08:00
parent 12795f6d30
commit d0e1d4c038
10 changed files with 39 additions and 48 deletions
@@ -1,9 +1,11 @@
package com.alibaba.druid.sql.dialect.sqlserver.ast;
package com.alibaba.druid.sql.ast.statement;
import com.alibaba.druid.sql.ast.SQLName;
import com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerASTVisitor;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.SQLStatementImpl;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
public class SQLServerUseStatement extends SQLServerObjectImpl implements SQLServerStatement {
public class SQLUseStatement extends SQLStatementImpl implements SQLStatement {
private static final long serialVersionUID = 1L;
private SQLName database;
@@ -17,7 +19,7 @@ public class SQLServerUseStatement extends SQLServerObjectImpl implements SQLSer
}
@Override
public void accept0(SQLServerASTVisitor visitor) {
public void accept0(SQLASTVisitor visitor) {
if (visitor.visit(this)) {
acceptChild(visitor, database);
}
@@ -1,7 +1,6 @@
package com.alibaba.druid.sql.dialect.sqlserver.visitor;
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerUseStatement;
import com.alibaba.druid.sql.dialect.sqlserver.ast.Top;
import com.alibaba.druid.sql.visitor.SQLASTVisitor;
@@ -14,8 +13,4 @@ public interface SQLServerASTVisitor extends SQLASTVisitor {
boolean visit(Top x);
void endVisit(Top x);
boolean visit(SQLServerUseStatement x);
void endVisit(SQLServerUseStatement x);
}
@@ -1,7 +1,6 @@
package com.alibaba.druid.sql.dialect.sqlserver.visitor;
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerUseStatement;
import com.alibaba.druid.sql.dialect.sqlserver.ast.Top;
import com.alibaba.druid.sql.visitor.SQLASTVisitorAdapter;
@@ -27,14 +26,4 @@ public class SQLServerASTVisitorAdapter extends SQLASTVisitorAdapter implements
}
@Override
public boolean visit(SQLServerUseStatement x) {
return true;
}
@Override
public void endVisit(SQLServerUseStatement x) {
}
}
@@ -2,7 +2,6 @@ package com.alibaba.druid.sql.dialect.sqlserver.visitor;
import com.alibaba.druid.sql.ast.SQLSetQuantifier;
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerUseStatement;
import com.alibaba.druid.sql.dialect.sqlserver.ast.Top;
import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor;
@@ -68,16 +67,4 @@ public class SQLServerOutputVisitor extends SQLASTOutputVisitor implements SQLSe
}
@Override
public boolean visit(SQLServerUseStatement x) {
print("USE ");
x.getDatabase().accept(this);
return false;
}
@Override
public void endVisit(SQLServerUseStatement x) {
}
}
@@ -2,7 +2,6 @@ package com.alibaba.druid.sql.dialect.sqlserver.visitor;
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock;
import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerUseStatement;
import com.alibaba.druid.sql.dialect.sqlserver.ast.Top;
import com.alibaba.druid.sql.visitor.SchemaStatVisitor;
@@ -29,14 +28,5 @@ public class SQLServerSchemaStatVisitor extends SchemaStatVisitor implements SQL
}
@Override
public boolean visit(SQLServerUseStatement x) {
return false;
}
@Override
public void endVisit(SQLServerUseStatement x) {
}
}
@@ -38,6 +38,7 @@ import com.alibaba.druid.sql.ast.statement.SQLTableSource;
import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.ast.statement.SQLUseStatement;
public class SQLStatementParser extends SQLParser {
@@ -155,8 +156,11 @@ public class SQLStatementParser extends SQLParser {
}
}
public SQLStatement parseUse() {
throw new ParserException("TODO " + lexer.token());
public SQLUseStatement parseUse() {
accept(Token.USE);
SQLUseStatement stmt = new SQLUseStatement();
stmt.setDatabase(this.exprParser.name());
return stmt;
}
protected SQLDropTableStatement parseDropTable(boolean acceptDrop) {
@@ -82,6 +82,7 @@ import com.alibaba.druid.sql.ast.statement.SQLUnionQuery;
import com.alibaba.druid.sql.ast.statement.SQLUniqueConstraint;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.ast.statement.SQLUseStatement;
public class SQLASTOutputVisitor extends SQLASTVisitorAdapter {
@@ -997,4 +998,11 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter {
return false;
}
@Override
public boolean visit(SQLUseStatement x) {
print("USE ");
x.getDatabase().accept(this);
return false;
}
}
@@ -76,6 +76,7 @@ import com.alibaba.druid.sql.ast.statement.SQLUnionQuery;
import com.alibaba.druid.sql.ast.statement.SQLUniqueConstraint;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.ast.statement.SQLUseStatement;
public interface SQLASTVisitor {
@@ -330,5 +331,9 @@ public interface SQLASTVisitor {
void endVisit(SQLCommentStatement x);
boolean visit(SQLCommentStatement x);
void endVisit(SQLUseStatement x);
boolean visit(SQLUseStatement x);
}
@@ -77,6 +77,7 @@ import com.alibaba.druid.sql.ast.statement.SQLUnionQuery;
import com.alibaba.druid.sql.ast.statement.SQLUniqueConstraint;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.ast.statement.SQLUseStatement;
public class SQLASTVisitorAdapter implements SQLASTVisitor {
@@ -574,4 +575,14 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor {
return true;
}
@Override
public void endVisit(SQLUseStatement x) {
}
@Override
public boolean visit(SQLUseStatement x) {
return true;
}
}