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:
@@ -35,6 +35,9 @@ public class Keywords {
|
||||
map.put("AND", Token.AND);
|
||||
map.put("ANY", Token.ANY);
|
||||
map.put("AS", Token.AS);
|
||||
|
||||
map.put("ENABLE", Token.ENABLE);
|
||||
map.put("DISABLE", Token. DISABLE);
|
||||
|
||||
map.put("ASC", Token.ASC);
|
||||
map.put("BETWEEN", Token.BETWEEN);
|
||||
@@ -48,6 +51,7 @@ public class Keywords {
|
||||
map.put("DATABASE", Token.DATABASE);
|
||||
map.put("DEFAULT", Token.DEFAULT);
|
||||
map.put("COLUMN", Token.COLUMN);
|
||||
map.put("TABLESPACE", Token.TABLESPACE);
|
||||
|
||||
map.put("DELETE", Token.DELETE);
|
||||
map.put("DESC", Token.DESC);
|
||||
@@ -119,7 +123,8 @@ public class Keywords {
|
||||
map.put("REPLACE", Token.REPLACE);
|
||||
|
||||
map.put("COMMENT", Token.COMMENT);
|
||||
|
||||
map.put("COMPUTE", Token.COMPUTE);
|
||||
|
||||
DEFAULT_KEYWORDS = new Keywords(map);
|
||||
}
|
||||
|
||||
|
||||
@@ -77,6 +77,8 @@ public class SQLCreateTableParser extends SQLDDLParser {
|
||||
} else if (lexer.token == Token.UNIQUE) {
|
||||
SQLUnique unique = exprParser.parseUnique();
|
||||
createTable.getTableElementList().add(unique);
|
||||
} else if (lexer.token() == Token.TABLESPACE) {
|
||||
throw new ParserException("TODO " + lexer.token());
|
||||
} else {
|
||||
throw new ParserException("TODO " + lexer.token());
|
||||
}
|
||||
|
||||
@@ -233,6 +233,9 @@ public class SQLExprParser extends SQLParser {
|
||||
case IF:
|
||||
case END:
|
||||
case COMMENT:
|
||||
case COMPUTE:
|
||||
case ENABLE:
|
||||
case DISABLE:
|
||||
sqlExpr = new SQLIdentifierExpr(lexer.stringVal());
|
||||
lexer.nextToken();
|
||||
break;
|
||||
|
||||
@@ -324,7 +324,7 @@ public class SQLStatementParser extends SQLParser {
|
||||
} else {
|
||||
throw new ParserException("TODO " + lexer.token() + " " + lexer.stringVal());
|
||||
}
|
||||
} else if (identifierEquals("DISABLE")) {
|
||||
} else if (lexer.token() == Token.DISABLE) {
|
||||
lexer.nextToken();
|
||||
|
||||
if (lexer.token() == Token.CONSTRAINT) {
|
||||
@@ -337,7 +337,7 @@ public class SQLStatementParser extends SQLParser {
|
||||
SQLAlterTableDisableKeys item = new SQLAlterTableDisableKeys();
|
||||
stmt.getItems().add(item);
|
||||
}
|
||||
} else if (identifierEquals("ENABLE")) {
|
||||
} else if (lexer.token() == Token.ENABLE) {
|
||||
lexer.nextToken();
|
||||
if (lexer.token() == Token.CONSTRAINT) {
|
||||
lexer.nextToken();
|
||||
|
||||
@@ -35,6 +35,7 @@ public enum Token {
|
||||
ALTER("ALTER"),
|
||||
DROP("DROP"),
|
||||
TABLE("TABLE"),
|
||||
TABLESPACE("TABLESPACE"),
|
||||
UPDATE("UPDATE"),
|
||||
SET("SET"),
|
||||
SELECT("SELECT"),
|
||||
@@ -167,6 +168,18 @@ public enum Token {
|
||||
SAVEPOINT("SAVEPOINT"),
|
||||
CROSS("CROSS"),
|
||||
|
||||
PCTFREE("PCTFREE"),
|
||||
INITRANS("INITRANS"),
|
||||
MAXTRANS("MAXTRANS"),
|
||||
ENABLE("ENABLE"),
|
||||
DISABLE("DISABLE"),
|
||||
SEGMENT("SEGMENT"),
|
||||
CREATION("CREATION"),
|
||||
IMMEDIATE("IMMEDIATE"),
|
||||
DEFERRED("DEFERRED"),
|
||||
|
||||
COMPUTE("COMPUTE"),
|
||||
|
||||
// transact-sql
|
||||
TOP("TOP"),
|
||||
|
||||
|
||||
Reference in New Issue
Block a user