improve oracle sql parser

This commit is contained in:
wenshao
2013-08-03 12:01:25 +08:00
parent 91fc668553
commit 1974aa2cce
21 changed files with 466 additions and 71 deletions
@@ -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"),