diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleExprParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleExprParser.java index 5fe71d5765..0421df1da1 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleExprParser.java @@ -402,7 +402,7 @@ public class OracleExprParser extends SQLExprParser { expr = interval; } - if (lexer.token() == Token.AT) { + if (identifierEquals("AT")) { char mark_ch = lexer.current(); int mark_bp = lexer.bp(); lexer.nextToken(); @@ -410,10 +410,10 @@ public class OracleExprParser extends SQLExprParser { lexer.nextToken(); expr = new OracleDatetimeExpr(expr, new SQLIdentifierExpr("LOCAL")); } else { - if (lexer.token() == Token.TIME) { + if (identifierEquals("TIME")) { lexer.nextToken(); } else { - lexer.reset(mark_bp, mark_ch, Token.AT); + lexer.reset(mark_bp, mark_ch, Token.IDENTIFIER); return expr; } accept(Token.ZONE); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleLexer.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleLexer.java index 754c61007d..5e24efa430 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleLexer.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleLexer.java @@ -104,7 +104,6 @@ public class OracleLexer extends Lexer { map.put("MERGE", Token.MERGE); map.put("USING", Token.USING); map.put("MATCHED", Token.MATCHED); - map.put("LOG", Token.LOG); map.put("ERRORS", Token.ERRORS); map.put("REJECT", Token.REJECT); map.put("UNLIMITED", Token.UNLIMITED); @@ -119,9 +118,7 @@ public class OracleLexer extends Lexer { map.put("NOWAIT", Token.NOWAIT); map.put("SESSION", Token.SESSION); map.put("PROCEDURE", Token.PROCEDURE); - map.put("AT", Token.AT); map.put("LOCAL", Token.LOCAL); - map.put("TIME", Token.TIME); map.put("ZONE", Token.ZONE); map.put("SYSDATE", Token.SYSDATE); map.put("DECLARE", Token.DECLARE); diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java index 5bc17a4779..4b69ceae1e 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleStatementParser.java @@ -592,7 +592,7 @@ public class OracleStatementParser extends SQLStatementParser { if (identifierEquals("SNAPSHOT")) { lexer.nextToken(); - accept(Token.LOG); + acceptIdentifier("LOG"); stmt.setPurgeSnapshotLog(true); } else { throw new ParserException("TODO : " + lexer.token() + " " + lexer.stringVal()); @@ -964,7 +964,7 @@ public class OracleStatementParser extends SQLStatementParser { OracleAlterTableSplitPartition item = new OracleAlterTableSplitPartition(); item.setName(this.exprParser.name()); - if (lexer.token() == Token.AT) { + if (identifierEquals("AT")) { lexer.nextToken(); accept(Token.LPAREN); this.exprParser.exprList(item.getAt()); @@ -1340,7 +1340,7 @@ public class OracleStatementParser extends SQLStatementParser { } private OracleErrorLoggingClause parseErrorLoggingClause() { - if (lexer.token() == Token.LOG) { + if (identifierEquals("LOG")) { OracleErrorLoggingClause errorClause = new OracleErrorLoggingClause(); lexer.nextToken(); diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java index 064e263f87..55cc811f7b 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -217,12 +217,9 @@ public class SQLExprParser extends SQLParser { case REFERENCE: case KEY: case DISTINCT: - case TIME: case ZONE: - case LOG: case LIMIT: case SCHEMA: - case AT: case COLUMN: case IF: sqlExpr = new SQLIdentifierExpr(lexer.stringVal()); diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java index 448174b653..2434890423 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java @@ -96,8 +96,7 @@ public class SQLParser { } else if (lexer.token() == Token.LITERAL_CHARS) { alias = "'" + lexer.stringVal() + "'"; lexer.nextToken(); - } else if (lexer.token() == Token.TIME || lexer.token() == Token.CASE || lexer.token() == Token.AT - || lexer.token() == Token.LOG) { + } else if (lexer.token() == Token.CASE) { alias = lexer.token.name(); lexer.nextToken(); } diff --git a/src/main/java/com/alibaba/druid/sql/parser/Token.java b/src/main/java/com/alibaba/druid/sql/parser/Token.java index 06e9442827..cd52e63382 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/Token.java +++ b/src/main/java/com/alibaba/druid/sql/parser/Token.java @@ -145,7 +145,6 @@ public enum Token { MODEL("MODEL"), MERGE("MERGE"), MATCHED("MATCHED"), - LOG("LOG"), ERRORS("ERRORS"), REJECT("REJECT"), UNLIMITED("UNLIMITED"), @@ -156,9 +155,7 @@ public enum Token { ADVISE("ADVISE"), SESSION("SESSION"), PROCEDURE("PROCEDURE"), - AT("AT"), LOCAL("LOCAL"), - TIME("TIME"), ZONE("ZONE"), SYSDATE("SYSDATE"), DECLARE("DECLARE"),