mysql parser ddl support

This commit is contained in:
温少
2012-05-16 20:05:22 +08:00
parent f8ce34bd93
commit 1ba072bb29
7 changed files with 36 additions and 11 deletions
@@ -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;
}