mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
refactor sql parser
This commit is contained in:
@@ -25,6 +25,7 @@ import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLListExpr;
|
||||
import com.alibaba.druid.sql.ast.expr.SQLQueryExpr;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddColumn;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddIndex;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAddPrimaryKey;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableAlterColumn;
|
||||
import com.alibaba.druid.sql.ast.statement.SQLAlterTableDisableConstraint;
|
||||
@@ -1011,9 +1012,9 @@ public class SQLStatementParser extends SQLParser {
|
||||
SQLCreateTableParser createTableParser = getSQLCreateTableParser();
|
||||
return createTableParser.parseCrateTable(false);
|
||||
} else if (token == Token.INDEX //
|
||||
|| token == Token.UNIQUE //
|
||||
|| identifierEquals("NONCLUSTERED") // sql server
|
||||
) {
|
||||
|| token == Token.UNIQUE //
|
||||
|| identifierEquals("NONCLUSTERED") // sql server
|
||||
) {
|
||||
return parseCreateIndex(false);
|
||||
} else if (lexer.token() == Token.SEQUENCE) {
|
||||
return parseCreateSequence(false);
|
||||
@@ -1304,4 +1305,37 @@ public class SQLStatementParser extends SQLParser {
|
||||
|
||||
return explain;
|
||||
}
|
||||
|
||||
protected SQLAlterTableAddIndex parseAlterTableAddIndex() {
|
||||
SQLAlterTableAddIndex item = new SQLAlterTableAddIndex();
|
||||
|
||||
if (lexer.token() == Token.UNIQUE) {
|
||||
item.setUnique(true);
|
||||
lexer.nextToken();
|
||||
if (lexer.token() == Token.INDEX) {
|
||||
lexer.nextToken();
|
||||
}
|
||||
} else {
|
||||
accept(Token.INDEX);
|
||||
}
|
||||
|
||||
if (lexer.token() == Token.LPAREN) {
|
||||
lexer.nextToken();
|
||||
} else {
|
||||
item.setName(this.exprParser.name());
|
||||
accept(Token.LPAREN);
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
SQLSelectOrderByItem column = this.exprParser.parseSelectOrderByItem();
|
||||
item.getItems().add(column);
|
||||
if (lexer.token() == Token.COMMA) {
|
||||
lexer.nextToken();
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
accept(Token.RPAREN);
|
||||
return item;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user