mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve Oracle SQL Parser
This commit is contained in:
@@ -113,6 +113,7 @@ public class Keywords {
|
||||
map.put("XOR", Token.XOR);
|
||||
|
||||
map.put("OVER", Token.OVER);
|
||||
map.put("TO", Token.TO);
|
||||
|
||||
DEFAULT_KEYWORDS = new Keywords(map);
|
||||
}
|
||||
|
||||
@@ -234,7 +234,7 @@ public class SQLStatementParser extends SQLParser {
|
||||
|
||||
SQLRollbackStatement stmt = new SQLRollbackStatement();
|
||||
|
||||
if (identifierEquals("TO")) {
|
||||
if (lexer.token() == Token.TO) {
|
||||
lexer.nextToken();
|
||||
|
||||
if (identifierEquals("SAVEPOINT")) {
|
||||
@@ -439,7 +439,7 @@ public class SQLStatementParser extends SQLParser {
|
||||
exprParser.exprList(stmt.getParameters());
|
||||
accept(Token.RPAREN);
|
||||
}
|
||||
|
||||
|
||||
if (brace) {
|
||||
accept(Token.RBRACE);
|
||||
}
|
||||
@@ -496,12 +496,26 @@ public class SQLStatementParser extends SQLParser {
|
||||
// lexer.reset(mark_bp, mark_ch, Token.CREATE);
|
||||
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
|
||||
} else if (token == Token.DATABASE) {
|
||||
lexer.nextToken();
|
||||
if (identifierEquals("LINK")) {
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
return parseCreateDbLink();
|
||||
}
|
||||
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
return parseCreateDatabase();
|
||||
} else if (identifierEquals("PUBLIC") || identifierEquals("SHARE")) {
|
||||
lexer.reset(markBp, markChar, Token.CREATE);
|
||||
return parseCreateDbLink();
|
||||
}
|
||||
|
||||
throw new ParserException("TODO " + lexer.token());
|
||||
}
|
||||
|
||||
public SQLStatement parseCreateDbLink() {
|
||||
throw new ParserException("TODO " + lexer.token());
|
||||
}
|
||||
|
||||
public SQLStatement parseCreateDatabase() {
|
||||
if (lexer.token() == Token.CREATE) {
|
||||
lexer.nextToken();
|
||||
|
||||
@@ -70,6 +70,7 @@ public enum Token {
|
||||
COLUMN("COLUMN"),
|
||||
USE("USE"),
|
||||
DATABASE("DATABASE"),
|
||||
TO("TO"),
|
||||
|
||||
AND("AND"),
|
||||
OR("OR"),
|
||||
@@ -154,7 +155,6 @@ public enum Token {
|
||||
ADVISE("ADVISE"),
|
||||
SESSION("SESSION"),
|
||||
PROCEDURE("PROCEDURE"),
|
||||
LOCAL("LOCAL"),
|
||||
SYSDATE("SYSDATE"),
|
||||
DECLARE("DECLARE"),
|
||||
EXCEPTION("EXCEPTION"),
|
||||
|
||||
Reference in New Issue
Block a user