mysql sql parser 'create database' support charset/collate

This commit is contained in:
高铁
2016-01-26 17:49:15 +08:00
parent fbc537ef1d
commit 4c8fd31f9a
3 changed files with 68 additions and 0 deletions
@@ -2705,6 +2705,21 @@ public class MySqlStatementParser extends SQLStatementParser {
if (lexer.token() == Token.HINT) {
stmt.setHints(this.exprParser.parseHints());
}
if (identifierEquals("CHARACTER")) {
lexer.nextToken();
accept(Token.SET);
String charset = lexer.stringVal();
accept(Token.IDENTIFIER);
stmt.setCharacterSet(charset);
}
if (identifierEquals("COLLATE")) {
lexer.nextToken();
String collate = lexer.stringVal();
accept(Token.IDENTIFIER);
stmt.setCollate(collate);
}
return stmt;
}
@@ -1609,6 +1609,17 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
print0(ucase ? "IF NOT EXISTS " : "if not exists ");
}
x.getName().accept(this);
if (x.getCharacterSet() != null) {
print0(ucase ? " CHARACTER SET " : " character set ");
print0(x.getCharacterSet());
}
if (x.getCollate() != null) {
print0(ucase ? " COLLATE " : " collate ");
print0(x.getCollate());
}
return false;
}