mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
imporoved sql parser.
This commit is contained in:
+13
@@ -19,6 +19,7 @@ import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
import com.alibaba.druid.util.JdbcConstants;
|
||||
|
||||
public class MySqlAlterEventStatement extends MySqlStatementImpl implements SQLAlterStatement {
|
||||
@@ -37,6 +38,18 @@ public class MySqlAlterEventStatement extends MySqlStatementImpl implements SQLA
|
||||
setDbType(JdbcConstants.MYSQL);
|
||||
}
|
||||
|
||||
public void accept0(MySqlASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, definer);
|
||||
acceptChild(visitor, name);
|
||||
acceptChild(visitor, schedule);
|
||||
acceptChild(visitor, renameTo);
|
||||
acceptChild(visitor, comment);
|
||||
acceptChild(visitor, eventBody);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public SQLName getDefiner() {
|
||||
return definer;
|
||||
}
|
||||
|
||||
+11
@@ -18,6 +18,7 @@ package com.alibaba.druid.sql.dialect.mysql.ast.statement;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
public class MySqlAlterLogFileGroupStatement extends MySqlStatementImpl implements SQLAlterStatement {
|
||||
private SQLName name;
|
||||
@@ -26,6 +27,16 @@ public class MySqlAlterLogFileGroupStatement extends MySqlStatementImpl implemen
|
||||
private boolean wait;
|
||||
private SQLExpr engine;
|
||||
|
||||
public void accept0(MySqlASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, name);
|
||||
acceptChild(visitor, addUndoFile);
|
||||
acceptChild(visitor, initialSize);
|
||||
acceptChild(visitor, engine);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public SQLName getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
+9
@@ -18,6 +18,7 @@ package com.alibaba.druid.sql.dialect.mysql.ast.statement;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
public class MySqlAlterServerStatement extends MySqlStatementImpl implements SQLAlterStatement {
|
||||
private SQLName name;
|
||||
@@ -46,4 +47,12 @@ public class MySqlAlterServerStatement extends MySqlStatementImpl implements SQL
|
||||
}
|
||||
this.user = user;
|
||||
}
|
||||
|
||||
public void accept0(MySqlASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, name);
|
||||
acceptChild(visitor, user);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
}
|
||||
|
||||
+11
@@ -18,6 +18,7 @@ package com.alibaba.druid.sql.dialect.mysql.ast.statement;
|
||||
import com.alibaba.druid.sql.ast.SQLExpr;
|
||||
import com.alibaba.druid.sql.ast.SQLName;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;
|
||||
|
||||
public class MySqlAlterTablespaceStatement extends MySqlStatementImpl implements SQLAlterStatement {
|
||||
private SQLName name;
|
||||
@@ -28,6 +29,16 @@ public class MySqlAlterTablespaceStatement extends MySqlStatementImpl implements
|
||||
private boolean wait;
|
||||
private SQLExpr engine;
|
||||
|
||||
public void accept0(MySqlASTVisitor visitor) {
|
||||
if (visitor.visit(this)) {
|
||||
acceptChild(visitor, name);
|
||||
acceptChild(visitor, addDataFile);
|
||||
acceptChild(visitor, initialSize);
|
||||
acceptChild(visitor, engine);
|
||||
}
|
||||
visitor.endVisit(this);
|
||||
}
|
||||
|
||||
public SQLName getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@@ -479,4 +479,16 @@ public interface MySqlASTVisitor extends SQLASTVisitor {
|
||||
boolean visit(MySqlCreateTableSpaceStatement x);
|
||||
void endVisit(MySqlCreateTableSpaceStatement x);
|
||||
|
||||
boolean visit(MySqlAlterEventStatement x);
|
||||
void endVisit(MySqlAlterEventStatement x);
|
||||
|
||||
boolean visit(MySqlAlterLogFileGroupStatement x);
|
||||
void endVisit(MySqlAlterLogFileGroupStatement x);
|
||||
|
||||
boolean visit(MySqlAlterServerStatement x);
|
||||
void endVisit(MySqlAlterServerStatement x);
|
||||
|
||||
boolean visit(MySqlAlterTablespaceStatement x);
|
||||
void endVisit(MySqlAlterTablespaceStatement x);
|
||||
|
||||
} //
|
||||
|
||||
+41
-1
@@ -1170,7 +1170,7 @@ public class MySqlASTVisitorAdapter extends SQLASTVisitorAdapter implements MySq
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlCreateTableSpaceStatement x) {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1178,4 +1178,44 @@ public class MySqlASTVisitorAdapter extends SQLASTVisitorAdapter implements MySq
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterEventStatement x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterEventStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterLogFileGroupStatement x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterLogFileGroupStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterServerStatement x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterServerStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterTablespaceStatement x) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterTablespaceStatement x) {
|
||||
|
||||
}
|
||||
|
||||
} //
|
||||
|
||||
@@ -3918,6 +3918,149 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterEventStatement x) {
|
||||
print0(ucase ? "ALTER " : "alter ");
|
||||
|
||||
SQLName definer = x.getDefiner();
|
||||
if (definer != null) {
|
||||
print0(ucase ? "DEFINER = " : "definer = ");
|
||||
}
|
||||
|
||||
print0(ucase ? "EVENT " : "evnet ");
|
||||
printExpr(x.getName());
|
||||
|
||||
MySqlEventSchedule schedule = x.getSchedule();
|
||||
if (schedule != null) {
|
||||
print0(ucase ? " ON SCHEDULE " : " on schedule ");
|
||||
schedule.accept(this);
|
||||
}
|
||||
|
||||
Boolean enable = x.getEnable();
|
||||
if (enable != null) {
|
||||
if (enable) {
|
||||
print0(ucase ? " ENABLE" : " enable");
|
||||
} else {
|
||||
print0(ucase ? " DISABLE" : " disable");
|
||||
if (x.isDisableOnSlave()) {
|
||||
print0(ucase ? " ON SLAVE" : " on slave");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SQLExpr comment = x.getComment();
|
||||
if (comment != null) {
|
||||
print0(ucase ? "COMMENT " : "comment ");
|
||||
comment.accept(this);
|
||||
}
|
||||
|
||||
SQLStatement body = x.getEventBody();
|
||||
if (body != null) {
|
||||
println();
|
||||
if (!(body instanceof SQLExprStatement)) {
|
||||
print0(ucase ? "DO" : "do");
|
||||
println();
|
||||
}
|
||||
body.accept(this);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterEventStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterLogFileGroupStatement x) {
|
||||
print0(ucase ? "ALTER LOGFILE GROUP " : "alter logfile group ");
|
||||
x.getName().accept(this);
|
||||
print(' ');
|
||||
print0(ucase ? "ADD UNDOFILE " : "add undofile ");
|
||||
printExpr(x.getAddUndoFile());
|
||||
|
||||
SQLExpr initialSize = x.getInitialSize();
|
||||
if (initialSize != null) {
|
||||
print0(ucase ? " INITIAL_SIZE " : " initial_size ");
|
||||
printExpr(initialSize);
|
||||
}
|
||||
|
||||
if (x.isWait()) {
|
||||
print0(ucase ? " WAIT" : " wait");
|
||||
}
|
||||
|
||||
SQLExpr engine = x.getEngine();
|
||||
if (engine != null) {
|
||||
print0(ucase ? " ENGINE " : " engine ");
|
||||
printExpr(engine);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterLogFileGroupStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterServerStatement x) {
|
||||
print0(ucase ? "ATLER SERVER " : "alter server ");
|
||||
x.getName().accept(this);
|
||||
|
||||
print(" OPTIONS(");
|
||||
SQLExpr user = x.getUser();
|
||||
if (user != null) {
|
||||
print0(ucase ? "USER " : "user ");
|
||||
printExpr(user);
|
||||
}
|
||||
|
||||
print(')');
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterServerStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterTablespaceStatement x) {
|
||||
print0(ucase ? "CREATE TABLESPACE " : "create tablespace ");
|
||||
x.getName().accept(this);
|
||||
|
||||
SQLExpr addDataFile = x.getAddDataFile();
|
||||
if (addDataFile != null) {
|
||||
print0(ucase ? " ADD DATAFILE " : " add datafile ");
|
||||
addDataFile.accept(this);
|
||||
}
|
||||
|
||||
SQLExpr initialSize = x.getInitialSize();
|
||||
if (initialSize != null) {
|
||||
print0(ucase ? " INITIAL_SIZE = " : " initial_size = ");
|
||||
initialSize.accept(this);
|
||||
}
|
||||
|
||||
if (x.isWait()) {
|
||||
print0(ucase ? " WAIT" : " wait");
|
||||
}
|
||||
|
||||
SQLExpr engine = x.getEngine();
|
||||
if (engine != null) {
|
||||
print0(ucase ? " ENGINE " : " engine ");
|
||||
printExpr(engine);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterTablespaceStatement x) {
|
||||
|
||||
}
|
||||
|
||||
protected void printQuery(SQLSelectQuery x) {
|
||||
Class<?> clazz = x.getClass();
|
||||
if (clazz == MySqlSelectQueryBlock.class) {
|
||||
|
||||
@@ -1304,4 +1304,44 @@ public class MySqlSchemaStatVisitor extends SchemaStatVisitor implements MySqlAS
|
||||
public void endVisit(MySqlCreateTableSpaceStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterEventStatement x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterEventStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterLogFileGroupStatement x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterLogFileGroupStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterServerStatement x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterServerStatement x) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlAlterTablespaceStatement x) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endVisit(MySqlAlterTablespaceStatement x) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user