bug fixed for mysql parser.

This commit is contained in:
wenshao
2018-01-17 21:26:39 +08:00
parent c39f787c10
commit f50c14d9ea
15 changed files with 277 additions and 26 deletions
@@ -821,7 +821,13 @@ public class MySqlCreateTableParser extends SQLCreateTableParser {
accept(Token.LPAREN);
for (;;) {
SQLExpr expr = this.exprParser.expr();
SQLExpr expr;
if (lexer.token() == Token.LITERAL_ALIAS) {
expr = this.exprParser.name();
expr = this.exprParser.primaryRest(expr);
} else {
expr = this.exprParser.expr();
}
if (lexer.token() == Token.ASC) {
lexer.nextToken();
expr = new MySqlOrderingExpr(expr, SQLOrderingSpecification.ASC);
@@ -705,7 +705,13 @@ public class MySqlExprParser extends SQLExprParser {
accept(Token.LPAREN);
for (;;) {
primaryKey.addColumn(this.expr());
SQLExpr expr;
if (lexer.token() == Token.LITERAL_ALIAS) {
expr = this.name();
} else {
expr = this.expr();
}
primaryKey.addColumn(expr);
if (!(lexer.token() == (Token.COMMA))) {
break;
} else {
@@ -965,4 +971,9 @@ public class MySqlExprParser extends SQLExprParser {
}
return partitionDef;
}
protected SQLExpr parseAliasExpr(String alias) {
String chars = alias.substring(1, alias.length() - 1);
return new SQLCharExpr(chars);
}
}
@@ -3651,7 +3651,7 @@ public class MySqlStatementParser extends SQLStatementParser {
}
} else if (lexer.identifierEquals("RENAME")) {
lexer.nextToken();
if (lexer.token() == Token.INDEX) {
lexer.nextToken();
SQLName name = this.exprParser.name();