From de28984dd28d33e9bb78e60ab050254f561a768a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Mon, 23 Apr 2012 16:32:45 +0800 Subject: [PATCH] =?UTF-8?q?remove=20keyword=20:=20DAY=E3=80=81MONTH?= =?UTF-8?q?=E3=80=81HOUR=E3=80=81MINUTE=E3=80=81SECOND?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sql/dialect/oracle/parser/OracleExprParser.java | 10 +++++----- .../druid/sql/dialect/oracle/parser/OracleLexer.java | 7 +------ .../com/alibaba/druid/sql/parser/SQLExprParser.java | 2 -- .../java/com/alibaba/druid/sql/parser/SQLParser.java | 6 ++---- src/main/java/com/alibaba/druid/sql/parser/Token.java | 7 +------ .../druid/bvt/sql/oracle/OraclePivotClauseTest.java | 8 ++++---- 6 files changed, 13 insertions(+), 27 deletions(-) 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 da05f4ab33..7c2deab9b8 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 @@ -353,10 +353,10 @@ public class OracleExprParser extends SQLExprParser { expr = dblink; } - if (lexer.token() == Token.DAY || lexer.token() == Token.YEAR) { + if (identifierEquals("DAY") || identifierEquals("YEAR")) { lexer.mark(); - String name = lexer.token().name; + String name = lexer.stringVal(); lexer.nextToken(); if (lexer.token() == Token.COMMA) { @@ -380,7 +380,7 @@ public class OracleExprParser extends SQLExprParser { } accept(Token.TO); - if (lexer.token() == Token.SECOND) { + if (identifierEquals("SECOND")) { lexer.nextToken(); interval.setToType(OracleIntervalType.SECOND); if (lexer.token() == Token.LPAREN) { @@ -677,7 +677,7 @@ public class OracleExprParser extends SQLExprParser { lexer.nextToken(); - OracleIntervalType type = OracleIntervalType.valueOf(lexer.token().name); + OracleIntervalType type = OracleIntervalType.valueOf(lexer.stringVal()); interval.setType(type); lexer.nextToken(); @@ -702,7 +702,7 @@ public class OracleExprParser extends SQLExprParser { if (lexer.token() == Token.TO) { accept(Token.TO); - if (lexer.token() == Token.SECOND) { + if (identifierEquals("SECOND")) { lexer.nextToken(); interval.setToType(OracleIntervalType.SECOND); if (lexer.token() == Token.LPAREN) { 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 ad6967f524..f6d295f15c 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 @@ -100,12 +100,7 @@ public class OracleLexer extends Lexer { map.put("COLUMN", Token.COLUMN); map.put("CURSOR", Token.CURSOR); - - map.put("DAY", Token.DAY); - map.put("YEAR", Token.YEAR); - map.put("MONTH", Token.MONTH); - map.put("MINUTE", Token.MINUTE); - map.put("SECOND", Token.SECOND); + map.put("TO", Token.TO); map.put("MODEL", Token.MODEL); map.put("MERGE", Token.MERGE); 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 a6988ec5ff..93c0c944dc 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -208,8 +208,6 @@ public class SQLExprParser extends SQLParser { case REFERENCE: case KEY: case DISTINCT: - case YEAR: - case MONTH: case TIME: case ZONE: case LOG: 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 4d5dd53bd2..8cb160cfdc 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java @@ -69,8 +69,7 @@ public class SQLParser { return alias; } - if (lexer.token() == Token.YEAR || lexer.token() == Token.DAY || lexer.token() == Token.KEY - || lexer.token() == Token.CASE || lexer.token() == Token.TIMESTAMP) { + if (lexer.token() == Token.KEY || lexer.token() == Token.CASE || lexer.token() == Token.TIMESTAMP) { alias = lexer.token.name(); lexer.nextToken(); return alias; @@ -97,8 +96,7 @@ public class SQLParser { } else if (lexer.token() == Token.LITERAL_CHARS) { alias = "'" + lexer.stringVal() + "'"; lexer.nextToken(); - } else if (lexer.token() == Token.YEAR || lexer.token() == Token.DAY || lexer.token() == Token.TIME - || lexer.token() == Token.MONTH || lexer.token() == Token.CASE || lexer.token() == Token.AT + } else if (lexer.token() == Token.TIME || lexer.token() == Token.CASE || lexer.token() == Token.AT || lexer.token() == Token.TIMESTAMP || lexer.token() == Token.LOG) { 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 2842c6f58f..a15e3a5599 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/Token.java +++ b/src/main/java/com/alibaba/druid/sql/parser/Token.java @@ -142,12 +142,7 @@ public enum Token { EXTRACT("EXTRACT"), TIMESTAMP("TIMESTAMP"), DATE("DATE"), - CURSOR("SECOND"), - DAY("DAY"), - YEAR("YEAR"), - MONTH("MONTH"), - MINUTE("MINUTE"), - SECOND("SECOND"), + CURSOR("CURSOR"), TO("TO"), MODEL("MODEL"), MERGE("MERGE"), diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OraclePivotClauseTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OraclePivotClauseTest.java index d8c6dbfc12..be2ca9a032 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OraclePivotClauseTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OraclePivotClauseTest.java @@ -34,7 +34,7 @@ public class OraclePivotClauseTest extends TestCase { + "PIVOT (SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));\n"; String expected = "SELECT *\n" - + "FROM (\n\tSELECT EXTRACT(YEAR FROM order_date) AS YEAR, order_mode, order_total\n" + + "FROM (\n\tSELECT EXTRACT(YEAR FROM order_date) AS year, order_mode, order_total\n" + "\tFROM orders\n" + ")\n" + "PIVOT (SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));\n"; @@ -54,7 +54,7 @@ public class OraclePivotClauseTest extends TestCase { + "PIVOT (SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));\n"; String expected = "SELECT *\n" - + "FROM (\n\tSELECT EXTRACT(YEAR FROM order_date) AS YEAR, order_mode, order_total\n" + + "FROM (\n\tSELECT EXTRACT(YEAR FROM order_date) AS year, order_mode, order_total\n" + "\tFROM orders\n" + ")\n" + "PIVOT (SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));\n"; @@ -73,7 +73,7 @@ public class OraclePivotClauseTest extends TestCase { + "FROM (SELECT EXTRACT(YEAR FROM order_date) as day, order_mode, order_total FROM orders)\n" + "PIVOT (SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));\n"; - String expected = "SELECT *\n" + "FROM (\n\tSELECT EXTRACT(YEAR FROM order_date) AS DAY, order_mode, order_total\n" + String expected = "SELECT *\n" + "FROM (\n\tSELECT EXTRACT(YEAR FROM order_date) AS day, order_mode, order_total\n" + "\tFROM orders\n" + ")\n" + "PIVOT (SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));\n"; @@ -93,7 +93,7 @@ public class OraclePivotClauseTest extends TestCase { + "PIVOT (SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));\n"; String expected = "SELECT *\n" - + "FROM (\n\tSELECT EXTRACT(YEAR FROM order_date) AS DAY, order_mode AS YEAR, order_total\n" + + "FROM (\n\tSELECT EXTRACT(YEAR FROM order_date) AS day, order_mode AS YEAR, order_total\n" + "\tFROM orders\n" + ")\n" + "PIVOT (SUM(order_total) FOR order_mode IN ('direct' AS Store, 'online' AS Internet));\n";