mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
mysql parser ddl support
This commit is contained in:
@@ -54,6 +54,7 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlKillStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlLoadDataInFileStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlLoadXmlStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlPrepareStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRenameTableStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlReplicateStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlResetStatement;
|
||||
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlRollbackStatement;
|
||||
@@ -1970,4 +1971,30 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
}
|
||||
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
|
||||
}
|
||||
|
||||
public SQLStatement parseRename() {
|
||||
MySqlRenameTableStatement stmt = new MySqlRenameTableStatement();
|
||||
|
||||
acceptIdentifier("RENAME");
|
||||
|
||||
accept(Token.TABLE);
|
||||
|
||||
for (;;) {
|
||||
MySqlRenameTableStatement.Item item = new MySqlRenameTableStatement.Item();
|
||||
item.setName(this.exprParser.name());
|
||||
acceptIdentifier("TO");
|
||||
item.setTo(this.exprParser.name());
|
||||
|
||||
stmt.getItems().add(item);
|
||||
|
||||
if (lexer.token() == Token.COMMA) {
|
||||
lexer.nextToken();
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return stmt;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2265,7 +2265,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
|
||||
@Override
|
||||
public boolean visit(MySqlRenameTableStatement x) {
|
||||
print("RENAME ");
|
||||
print("RENAME TABLE ");
|
||||
printAndAccept(x.getItems(), ", ");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -381,7 +381,7 @@ public class OracleExprParser extends SQLExprParser {
|
||||
accept(Token.RPAREN);
|
||||
}
|
||||
|
||||
accept(Token.TO);
|
||||
identifierEquals("TO");
|
||||
if (identifierEquals("SECOND")) {
|
||||
lexer.nextToken();
|
||||
interval.setToType(OracleIntervalType.SECOND);
|
||||
@@ -702,8 +702,8 @@ public class OracleExprParser extends SQLExprParser {
|
||||
accept(Token.RPAREN);
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.TO) {
|
||||
accept(Token.TO);
|
||||
if (identifierEquals("TO")) {
|
||||
lexer.nextToken();
|
||||
if (identifierEquals("SECOND")) {
|
||||
lexer.nextToken();
|
||||
interval.setToType(OracleIntervalType.SECOND);
|
||||
|
||||
@@ -98,7 +98,6 @@ public class OracleLexer extends Lexer {
|
||||
|
||||
map.put("CURSOR", Token.CURSOR);
|
||||
|
||||
map.put("TO", Token.TO);
|
||||
map.put("MODEL", Token.MODEL);
|
||||
map.put("MERGE", Token.MERGE);
|
||||
map.put("USING", Token.USING);
|
||||
|
||||
@@ -140,7 +140,7 @@ public class OracleSelectParser extends SQLSelectParser {
|
||||
createExprParser().exprList(cycleClause.getAliases());
|
||||
accept(Token.SET);
|
||||
cycleClause.setMark(createExprParser().expr());
|
||||
accept(Token.TO);
|
||||
acceptIdentifier("TO");
|
||||
cycleClause.setValue(createExprParser().expr());
|
||||
accept(Token.DEFAULT);
|
||||
cycleClause.setDefaultValue(createExprParser().expr());
|
||||
|
||||
+4
-4
@@ -388,7 +388,7 @@ public class OracleStatementParser extends SQLStatementParser {
|
||||
|
||||
OracleRollbackStatement stmt = new OracleRollbackStatement();
|
||||
|
||||
if (lexer.token() == Token.TO) {
|
||||
if (identifierEquals("TO")) {
|
||||
lexer.nextToken();
|
||||
stmt.setTo(this.exprParser.name());
|
||||
}
|
||||
@@ -402,7 +402,7 @@ public class OracleStatementParser extends SQLStatementParser {
|
||||
|
||||
OracleSavePointStatement stmt = new OracleSavePointStatement();
|
||||
|
||||
if (lexer.token() == Token.TO) {
|
||||
if (identifierEquals("TO")) {
|
||||
lexer.nextToken();
|
||||
stmt.setTo(this.exprParser.name());
|
||||
}
|
||||
@@ -640,7 +640,7 @@ public class OracleStatementParser extends SQLStatementParser {
|
||||
|
||||
if (identifierEquals("RENAME")) {
|
||||
lexer.nextToken();
|
||||
accept(Token.TO);
|
||||
acceptIdentifier("TO");
|
||||
stmt.setRenameTo(this.exprParser.name());
|
||||
}
|
||||
|
||||
@@ -915,7 +915,7 @@ public class OracleStatementParser extends SQLStatementParser {
|
||||
private OracleAlterTableItem parseAlterTableRename() {
|
||||
acceptIdentifier("RENAME");
|
||||
|
||||
if (lexer.token() == Token.TO) {
|
||||
if (identifierEquals("TO")) {
|
||||
lexer.nextToken();
|
||||
OracleAlterTableRenameTo item = new OracleAlterTableRenameTo();
|
||||
item.setTo(this.exprParser.name());
|
||||
|
||||
@@ -139,7 +139,6 @@ public enum Token {
|
||||
WITH("WITH"),
|
||||
EXTRACT("EXTRACT"),
|
||||
CURSOR("CURSOR"),
|
||||
TO("TO"),
|
||||
MODEL("MODEL"),
|
||||
MERGE("MERGE"),
|
||||
MATCHED("MATCHED"),
|
||||
|
||||
Reference in New Issue
Block a user