improved sqlserver sql parser. fixed issue #1306

This commit is contained in:
高铁
2016-06-30 00:29:09 +08:00
parent fc96c0c424
commit 52003d473f
3 changed files with 91 additions and 13 deletions
@@ -198,16 +198,19 @@ public class SQLServerExprParser extends SQLExprParser {
public SQLColumnDefinition parseColumnRest(SQLColumnDefinition column) {
if (lexer.token() == Token.IDENTITY) {
lexer.nextToken();
accept(Token.LPAREN);
SQLIntegerExpr seed = (SQLIntegerExpr) this.primary();
accept(Token.COMMA);
SQLIntegerExpr increment = (SQLIntegerExpr) this.primary();
accept(Token.RPAREN);
SQLColumnDefinition.Identity identity = new SQLColumnDefinition.Identity();
identity.setSeed((Integer) seed.getNumber());
identity.setIncrement((Integer) increment.getNumber());
if (lexer.token() == Token.LPAREN) {
lexer.nextToken();
SQLIntegerExpr seed = (SQLIntegerExpr) this.primary();
accept(Token.COMMA);
SQLIntegerExpr increment = (SQLIntegerExpr) this.primary();
accept(Token.RPAREN);
identity.setSeed((Integer) seed.getNumber());
identity.setIncrement((Integer) increment.getNumber());
}
if (lexer.token() == Token.NOT) {
lexer.nextToken();
@@ -1014,11 +1014,14 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter implements Printab
@Override
public boolean visit(SQLColumnDefinition.Identity x) {
print0(ucase ? "IDENTITY (" : "identity (");
print(x.getSeed());
print0(", ");
print(x.getIncrement());
print(')');
print0(ucase ? "IDENTITY" : "identity");
if (x.getSeed() != null) {
print0(" (");
print(x.getSeed());
print0(", ");
print(x.getIncrement());
print(')');
}
return false;
}