mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
fix bug: parse error 'alter table t1 rename to/as t2'
This commit is contained in:
@@ -2296,6 +2296,9 @@ public class MySqlStatementParser extends SQLStatementParser {
|
||||
}
|
||||
} else if (identifierEquals("RENAME")) {
|
||||
lexer.nextToken();
|
||||
if (lexer.token() == Token.TO || lexer.token() == Token.AS) {
|
||||
lexer.nextToken();
|
||||
}
|
||||
MySqlRenameTableStatement renameStmt = new MySqlRenameTableStatement();
|
||||
MySqlRenameTableStatement.Item item = new MySqlRenameTableStatement.Item();
|
||||
item.setName(stmt.getTableSource().getExpr());
|
||||
|
||||
@@ -52,5 +52,23 @@ public class MySqlAlterTableTest1 extends TestCase {
|
||||
String output = SQLUtils.toMySqlString(stmt);
|
||||
Assert.assertEquals("ALTER TABLE t2\n\tADD INDEX (d),\n\tADD UNIQUE INDEX (a)", output);
|
||||
}
|
||||
|
||||
public void test_alter_3() throws Exception {
|
||||
String sql = "ALTER TABLE t1 RENAME TO t2;";
|
||||
MySqlStatementParser parser = new MySqlStatementParser(sql);
|
||||
SQLStatement stmt = parser.parseStatementList().get(0);
|
||||
parser.match(Token.EOF);
|
||||
String output = SQLUtils.toMySqlString(stmt);
|
||||
Assert.assertEquals("RENAME TABLE t1 TO t2", output);
|
||||
}
|
||||
|
||||
public void test_alter_4() throws Exception {
|
||||
String sql = "ALTER TABLE t1 RENAME AS t2;";
|
||||
MySqlStatementParser parser = new MySqlStatementParser(sql);
|
||||
SQLStatement stmt = parser.parseStatementList().get(0);
|
||||
parser.match(Token.EOF);
|
||||
String output = SQLUtils.toMySqlString(stmt);
|
||||
Assert.assertEquals("RENAME TABLE t1 TO t2", output);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user