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 { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerSelectParser.java b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerSelectParser.java index 4c4c35e6c0..c7f4fad86d 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerSelectParser.java @@ -6,7 +6,6 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectQuery; import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelect; import com.alibaba.druid.sql.dialect.sqlserver.ast.SQLServerSelectQueryBlock; import com.alibaba.druid.sql.dialect.sqlserver.ast.Top; -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; @@ -15,12 +14,11 @@ import com.alibaba.druid.sql.parser.Token; public class SQLServerSelectParser extends SQLSelectParser { public SQLServerSelectParser(String sql){ - super(new SQLServerLexer(sql)); - this.lexer.nextToken(); + super(new SQLServerExprParser(sql)); } - public SQLServerSelectParser(Lexer lexer){ - super(lexer); + public SQLServerSelectParser(SQLExprParser exprParser){ + super(exprParser); } public SQLSelect select() throws ParserException { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerStatementParser.java index 141b5df152..ac1bacef40 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/sqlserver/parser/SQLServerStatementParser.java @@ -28,7 +28,7 @@ public class SQLServerStatementParser extends SQLStatementParser { } public SQLSelectParser createSQLSelectParser() { - return new SQLServerSelectParser(this.lexer); + return new SQLServerSelectParser(this.exprParser); } public SQLServerStatementParser(Lexer lexer){