From 952aa6d90867f2876290601d867fd5a1e0369e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Sun, 20 May 2012 13:51:19 +0800 Subject: [PATCH] sql parser refactor --- .../sql/dialect/mysql/parser/MySqlCreateTableParser.java | 2 +- .../druid/sql/dialect/mysql/parser/MySqlExprParser.java | 2 +- .../sql/dialect/mysql/parser/MySqlSelectParser.java | 9 ++++----- .../sql/dialect/mysql/parser/MySqlStatementParser.java | 4 ++-- .../dialect/oracle/parser/OracleCreateTableParser.java | 2 +- .../sql/dialect/oracle/parser/OracleExprParser.java | 2 +- .../sql/dialect/oracle/parser/OracleSelectParser.java | 9 ++++----- .../sql/dialect/oracle/parser/OracleStatementParser.java | 6 +++--- 8 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java index 4772c9f797..c993e29286 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java @@ -176,7 +176,7 @@ public class MySqlCreateTableParser extends SQLCreateTableParser { } if (lexer.token() == (Token.SELECT)) { - SQLSelect query = new MySqlSelectParser(this.lexer).select(); + SQLSelect query = new MySqlSelectParser(this.exprParser).select(); stmt.setQuery(query); } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java index 5b883c9b54..7d9a2e90a8 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlExprParser.java @@ -454,7 +454,7 @@ public class MySqlExprParser extends SQLExprParser { } public SQLSelectParser createSelectParser() { - return new MySqlSelectParser(this.lexer); + return new MySqlSelectParser(this); } protected SQLExpr parseInterval() { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java index 6a0c6fa9a8..af7b63acb6 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlSelectParser.java @@ -33,20 +33,19 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectGroupBy; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.Limit; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUnionQuery; -import com.alibaba.druid.sql.parser.Lexer; import com.alibaba.druid.sql.parser.ParserException; +import com.alibaba.druid.sql.parser.SQLExprParser; import com.alibaba.druid.sql.parser.SQLSelectParser; import com.alibaba.druid.sql.parser.Token; public class MySqlSelectParser extends SQLSelectParser { - public MySqlSelectParser(Lexer lexer){ - super(lexer); + public MySqlSelectParser(SQLExprParser exprParser){ + super(exprParser); } public MySqlSelectParser(String sql) throws ParserException{ - this(new MySqlLexer(sql)); - this.lexer.nextToken(); + this(new MySqlExprParser(sql)); } @Override diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java index 202bcaca6e..490499a803 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlStatementParser.java @@ -144,7 +144,7 @@ public class MySqlStatementParser extends SQLStatementParser { } public SQLSelectStatement parseSelect() throws ParserException { - return new SQLSelectStatement(new MySqlSelectParser(lexer).select()); + return new SQLSelectStatement(new MySqlSelectParser(this.exprParser).select()); } public SQLUpdateStatement parseUpdateStatement() throws ParserException { @@ -1917,7 +1917,7 @@ public class MySqlStatementParser extends SQLStatementParser { } public SQLSelectParser createSQLSelectParser() { - return new MySqlSelectParser(this.lexer); + return new MySqlSelectParser(this.exprParser); } public SQLStatement parseSet() throws ParserException { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleCreateTableParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleCreateTableParser.java index 1a095501e3..5c431e4517 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleCreateTableParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleCreateTableParser.java @@ -223,7 +223,7 @@ public class OracleCreateTableParser extends SQLCreateTableParser { if (lexer.token() == Token.AS) { lexer.nextToken(); - OracleSelect select = new OracleSelectParser(lexer).select(); + OracleSelect select = new OracleSelectParser(exprParser).select(); stmt.setSelect(select); } 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 8211622551..bce3bfc56d 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 @@ -633,7 +633,7 @@ public class OracleExprParser extends SQLExprParser { @Override public OracleSelectParser createSelectParser() { - return new OracleSelectParser(this.lexer); + return new OracleSelectParser(this); } @Override diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleSelectParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleSelectParser.java index 16aa8810fd..7eddaa5a79 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleSelectParser.java @@ -63,8 +63,8 @@ import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectSubqueryTableSo import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectTableReference; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectTableSource; import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectUnPivot; -import com.alibaba.druid.sql.parser.Lexer; import com.alibaba.druid.sql.parser.ParserException; +import com.alibaba.druid.sql.parser.SQLExprParser; import com.alibaba.druid.sql.parser.SQLParseException; import com.alibaba.druid.sql.parser.SQLSelectParser; import com.alibaba.druid.sql.parser.Token; @@ -72,12 +72,11 @@ import com.alibaba.druid.sql.parser.Token; public class OracleSelectParser extends SQLSelectParser { public OracleSelectParser(String sql){ - this(new OracleLexer(sql)); - this.lexer.nextToken(); + super (new OracleExprParser(sql)); } - public OracleSelectParser(Lexer lexer){ - super(lexer); + public OracleSelectParser(SQLExprParser exprParser){ + super(exprParser); } protected OracleExprParser createExprParser() { 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 6bc911dae6..9314513d72 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 @@ -161,7 +161,7 @@ public class OracleStatementParser extends SQLStatementParser { } if (lexer.token() == (Token.SELECT)) { - statementList.add(new SQLSelectStatement(new OracleSelectParser(this.lexer).select())); + statementList.add(new SQLSelectStatement(new OracleSelectParser(this.exprParser).select())); continue; } @@ -197,7 +197,7 @@ public class OracleStatementParser extends SQLStatementParser { } if (lexer.token() == Token.WITH) { - statementList.add(new SQLSelectStatement(new OracleSelectParser(this.lexer).select())); + statementList.add(new SQLSelectStatement(new OracleSelectParser(this.exprParser).select())); continue; } @@ -1106,7 +1106,7 @@ public class OracleStatementParser extends SQLStatementParser { } public OracleSelectParser createSQLSelectParser() { - return new OracleSelectParser(this.lexer); + return new OracleSelectParser(this.exprParser); } public OracleMergeStatement parseMerge() throws ParserException {