Merge pull request #507 from yakolee/master

fix bug: parse error 'alter table t1 rename to/as t2'
This commit is contained in:
高铁
2014-03-03 18:50:41 -08:00
2 changed files with 21 additions and 0 deletions
@@ -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);
}
}