From 04130b96c5bc0fc91baa80336789d37c2a06eabf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B8=A9=E5=B0=91?= Date: Sun, 20 May 2012 13:43:02 +0800 Subject: [PATCH] sql parser refactor --- .../java/com/alibaba/druid/sql/parser/SQLExprParser.java | 2 +- .../java/com/alibaba/druid/sql/parser/SQLSelectParser.java | 6 ++++++ .../com/alibaba/druid/sql/parser/SQLStatementParser.java | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) 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 201be488f0..29da379b6e 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLExprParser.java @@ -449,7 +449,7 @@ public class SQLExprParser extends SQLParser { } public SQLSelectParser createSelectParser() { - return new SQLSelectParser(lexer); + return new SQLSelectParser(this); } public SQLExpr primaryRest(SQLExpr expr) throws ParserException { diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLSelectParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLSelectParser.java index c247171e2a..527abd4187 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLSelectParser.java @@ -31,6 +31,7 @@ import com.alibaba.druid.sql.ast.statement.SQLUnionOperator; import com.alibaba.druid.sql.ast.statement.SQLUnionQuery; public class SQLSelectParser extends SQLParser { + protected SQLExprParser exprParser; public SQLSelectParser(String sql){ super(sql); @@ -39,6 +40,11 @@ public class SQLSelectParser extends SQLParser { public SQLSelectParser(Lexer lexer){ super(lexer); } + + public SQLSelectParser(SQLExprParser exprParser){ + super(exprParser.getLexer()); + this.exprParser = exprParser; + } public SQLSelect select() throws ParserException { SQLSelect select = new SQLSelect(); diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java index b5c42a2476..b9a00b269c 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java @@ -484,7 +484,7 @@ public class SQLStatementParser extends SQLParser { } public SQLSelectParser createSQLSelectParser() { - return new SQLSelectParser(this.lexer); + return new SQLSelectParser(this.exprParser); } public SQLUpdateStatement parseUpdateStatement() throws ParserException { @@ -573,7 +573,7 @@ public class SQLStatementParser extends SQLParser { this.accept(Token.AS); - createView.setSubQuery(new SQLSelectParser(this.lexer).select()); + createView.setSubQuery(new SQLSelectParser(this.exprParser).select()); return createView; }