mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve mysql parser ddl support
This commit is contained in:
+10
-3
@@ -31,7 +31,7 @@ import com.alibaba.druid.sql.parser.Token;
|
||||
|
||||
public class MySqlCreateTableParser extends SQLCreateTableParser {
|
||||
|
||||
public MySqlCreateTableParser(String sql) {
|
||||
public MySqlCreateTableParser(String sql){
|
||||
super(new MySqlExprParser(sql));
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ public class MySqlCreateTableParser extends SQLCreateTableParser {
|
||||
}
|
||||
accept(Token.RPAREN);
|
||||
stmt.setPartitioning(clause);
|
||||
|
||||
|
||||
if (identifierEquals("PARTITIONS")) {
|
||||
lexer.nextToken();
|
||||
clause.setPartitionCount(this.exprParser.expr());
|
||||
@@ -202,6 +202,10 @@ public class MySqlCreateTableParser extends SQLCreateTableParser {
|
||||
lexer.nextToken();
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.IDENTIFIER) {
|
||||
name = this.exprParser.name();
|
||||
}
|
||||
|
||||
accept(Token.LPAREN);
|
||||
for (;;) {
|
||||
key.getColumns().add(this.exprParser.expr());
|
||||
@@ -212,6 +216,10 @@ public class MySqlCreateTableParser extends SQLCreateTableParser {
|
||||
}
|
||||
}
|
||||
accept(Token.RPAREN);
|
||||
|
||||
if (name != null) {
|
||||
key.setName(name);
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
@@ -223,5 +231,4 @@ public class MySqlCreateTableParser extends SQLCreateTableParser {
|
||||
throw new ParserException("TODO");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -455,7 +455,7 @@ public class MySqlOutputVisitor extends SQLASTOutputVisitor implements MySqlASTV
|
||||
public boolean visit(MySqlKey x) {
|
||||
if (x.getName() != null) {
|
||||
print("CONSTRAINT ");
|
||||
x.accept(this);
|
||||
x.getName().accept(this);
|
||||
print(' ');
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user