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:
@@ -700,6 +700,12 @@ public class SQLStatementParser extends SQLParser {
|
||||
} else if (lexer.token == Token.VIEW) {
|
||||
privilege = "CREATE VIEW";
|
||||
lexer.nextToken();
|
||||
} else if (lexer.token == Token.PROCEDURE) {
|
||||
privilege = "CREATE PROCEDURE";
|
||||
lexer.nextToken();
|
||||
} else if (lexer.token == Token.SEQUENCE) {
|
||||
privilege = "CREATE SEQUENCE";
|
||||
lexer.nextToken();
|
||||
} else if (lexer.token == Token.ANY) {
|
||||
lexer.nextToken();
|
||||
|
||||
@@ -816,6 +822,12 @@ public class SQLStatementParser extends SQLParser {
|
||||
} else if (lexer.identifierEquals("RELOAD")) {
|
||||
lexer.nextToken();
|
||||
privilege = "RELOAD";
|
||||
} else if (lexer.identifierEquals("RESOURCE")) {
|
||||
lexer.nextToken();
|
||||
privilege = "RESOURCE";
|
||||
} else if (lexer.token == Token.CONNECT) {
|
||||
lexer.nextToken();
|
||||
privilege = "CONNECT";
|
||||
} else if (lexer.identifierEquals("REPLICATION")) {
|
||||
lexer.nextToken();
|
||||
if (lexer.identifierEquals("SLAVE")) {
|
||||
@@ -1862,7 +1874,7 @@ public class SQLStatementParser extends SQLParser {
|
||||
return parseCreateTrigger();
|
||||
}
|
||||
|
||||
if (lexer.identifierEquals("PACKAGE")) {
|
||||
if (lexer.identifierEquals(FnvHash.Constants.PACKAGE)) {
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
return parseCreatePackage();
|
||||
}
|
||||
@@ -1878,7 +1890,10 @@ public class SQLStatementParser extends SQLParser {
|
||||
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
return parseCreateDatabase();
|
||||
} else if (lexer.identifierEquals("PUBLIC")) {
|
||||
} else if (lexer.token == Token.USER) {
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
return parseCreateUser();
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.PUBLIC)) {
|
||||
lexer.nextToken();
|
||||
if (lexer.identifierEquals("SYNONYM")) {
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
@@ -1906,10 +1921,10 @@ public class SQLStatementParser extends SQLParser {
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
SQLStatement stmt = this.parseCreateFunction();
|
||||
return stmt;
|
||||
} else if (lexer.identifierEquals("BITMAP")) {
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.BITMAP)) {
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
return parseCreateIndex(true);
|
||||
} else if (lexer.identifierEquals("MATERIALIZED")) {
|
||||
} else if (lexer.identifierEquals(FnvHash.Constants.MATERIALIZED)) {
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
return parseCreateMaterializedView();
|
||||
}
|
||||
@@ -1917,6 +1932,20 @@ public class SQLStatementParser extends SQLParser {
|
||||
throw new ParserException("TODO " + lexer.token);
|
||||
}
|
||||
|
||||
public SQLStatement parseCreateUser() {
|
||||
accept(Token.CREATE);
|
||||
accept(Token.USER);
|
||||
|
||||
SQLCreateUserStatement stmt = new SQLCreateUserStatement();
|
||||
stmt.setUser(this.exprParser.name());
|
||||
|
||||
accept(Token.IDENTIFIED);
|
||||
accept(Token.BY);
|
||||
stmt.setPassword(this.exprParser.primary());
|
||||
|
||||
return stmt;
|
||||
}
|
||||
|
||||
public SQLCreateFunctionStatement parseCreateFunction() {
|
||||
throw new ParserException("TODO " + lexer.token);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user