diff --git a/src/main/java/com/alibaba/druid/hbase/hbql/parser/HBQLStatementParser.java b/src/main/java/com/alibaba/druid/hbase/hbql/parser/HBQLStatementParser.java index 761dbfd80e..e5ffa44347 100644 --- a/src/main/java/com/alibaba/druid/hbase/hbql/parser/HBQLStatementParser.java +++ b/src/main/java/com/alibaba/druid/hbase/hbql/parser/HBQLStatementParser.java @@ -9,13 +9,10 @@ public class HBQLStatementParser extends SQLStatementParser { protected SQLExprParser exprParser; public HBQLStatementParser(String sql){ - super(sql); - - this.exprParser = new SQLExprParser(lexer); + super(new SQLExprParser(sql)); } public HBQLStatementParser(Lexer lexer){ - super(lexer); - this.exprParser = new SQLExprParser(lexer); + super(new SQLExprParser(lexer)); } } diff --git a/src/main/java/com/alibaba/druid/sql/dialect/hive/parser/HiveCreateTableParser.java b/src/main/java/com/alibaba/druid/sql/dialect/hive/parser/HiveCreateTableParser.java index 93212d363c..52116b6843 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/hive/parser/HiveCreateTableParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/hive/parser/HiveCreateTableParser.java @@ -3,19 +3,18 @@ package com.alibaba.druid.sql.dialect.hive.parser; import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; import com.alibaba.druid.sql.dialect.hive.ast.stmt.HiveCreateTableStatement; import com.alibaba.druid.sql.dialect.hive.ast.stmt.HiveCreateTableStatement.PartitionedBy; -import com.alibaba.druid.sql.parser.Lexer; import com.alibaba.druid.sql.parser.SQLCreateTableParser; +import com.alibaba.druid.sql.parser.SQLExprParser; import com.alibaba.druid.sql.parser.Token; public class HiveCreateTableParser extends SQLCreateTableParser { public HiveCreateTableParser(String sql){ - super(new HiveLexer(sql)); - this.lexer.nextToken(); + super(new SQLExprParser(sql)); } - public HiveCreateTableParser(Lexer lexer){ - super(lexer); + public HiveCreateTableParser(SQLExprParser exprParser){ + super(exprParser); } protected HiveCreateTableStatement newCreateStatement() { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/hive/parser/HiveStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/hive/parser/HiveStatementParser.java index 8ae332ab95..56c0dfb1d0 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/hive/parser/HiveStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/hive/parser/HiveStatementParser.java @@ -7,22 +7,22 @@ import com.alibaba.druid.sql.ast.expr.SQLCharExpr; import com.alibaba.druid.sql.dialect.hive.ast.stmt.HiveShowTablesStatement; 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.SQLStatementParser; import com.alibaba.druid.sql.parser.Token; public class HiveStatementParser extends SQLStatementParser { public HiveStatementParser(Lexer lexer){ - super(lexer); + super(new SQLExprParser(lexer)); } public HiveStatementParser(String sql){ - super(new HiveLexer(sql)); - this.lexer.nextToken(); + super(new SQLExprParser(sql)); } public HiveCreateTableParser getSQLCreateTableParser() { - return new HiveCreateTableParser(lexer); + return new HiveCreateTableParser(this.exprParser); } public boolean parseStatementListDialect(List statementList) { 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 c993e29286..1a6c8c8ef5 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 @@ -25,21 +25,19 @@ import com.alibaba.druid.sql.dialect.mysql.ast.MySqlPrimaryKey; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlPartitionByKey; import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlTableIndex; -import com.alibaba.druid.sql.parser.Lexer; import com.alibaba.druid.sql.parser.ParserException; import com.alibaba.druid.sql.parser.SQLCreateTableParser; +import com.alibaba.druid.sql.parser.SQLExprParser; import com.alibaba.druid.sql.parser.Token; public class MySqlCreateTableParser extends SQLCreateTableParser { public MySqlCreateTableParser(String sql) throws ParserException{ - super(sql); - this.exprParser = new MySqlExprParser(lexer); + super(new MySqlExprParser(sql)); } - public MySqlCreateTableParser(Lexer lexer){ - super(lexer); - this.exprParser = new MySqlExprParser(lexer); + public MySqlCreateTableParser(SQLExprParser exprParser){ + super(exprParser); } public SQLCreateTableStatement parseCrateTable() throws ParserException { 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 490499a803..e15158205d 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 @@ -128,18 +128,15 @@ import com.alibaba.druid.sql.parser.Token; public class MySqlStatementParser extends SQLStatementParser { public MySqlStatementParser(String sql) throws ParserException{ - this(new MySqlLexer(sql)); - this.lexer.nextToken(); - this.exprParser = new MySqlExprParser(lexer); + super (new MySqlExprParser(sql)); } public MySqlStatementParser(Lexer lexer){ - super(lexer); - this.exprParser = new MySqlExprParser(lexer); + super(new MySqlExprParser(lexer)); } public SQLCreateTableStatement parseCreateTable() throws ParserException { - MySqlCreateTableParser parser = new MySqlCreateTableParser(lexer); + MySqlCreateTableParser parser = new MySqlCreateTableParser(this.exprParser); return parser.parseCrateTable(); } @@ -271,7 +268,7 @@ public class MySqlStatementParser extends SQLStatementParser { List hints = this.exprParser.parseHints(); if (lexer.token() == Token.TABLE || identifierEquals("TEMPORARY")) { - MySqlCreateTableParser parser = new MySqlCreateTableParser(lexer); + MySqlCreateTableParser parser = new MySqlCreateTableParser(this.exprParser); MySqlCreateTableStatement stmt = parser.parseCrateTable(false); stmt.setHints(hints); return stmt; 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 5c431e4517..adbd860ee2 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 @@ -15,14 +15,11 @@ import com.alibaba.druid.sql.parser.Token; public class OracleCreateTableParser extends SQLCreateTableParser { public OracleCreateTableParser(Lexer lexer){ - super(lexer); - this.exprParser = new OracleExprParser(lexer); + super(new OracleExprParser(lexer)); } public OracleCreateTableParser(String sql){ - super(new OracleLexer(sql)); - this.lexer.nextToken(); - this.exprParser = new OracleExprParser(lexer); + super(new OracleExprParser(sql)); } protected OracleCreateTableStatement newCreateStatement() { 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 9314513d72..da3c1fbec2 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 @@ -99,14 +99,11 @@ import com.alibaba.druid.sql.parser.Token; public class OracleStatementParser extends SQLStatementParser { public OracleStatementParser(String sql){ - super(new OracleLexer(sql)); - this.lexer.nextToken(); - this.exprParser = new OracleExprParser(lexer); + super(new OracleExprParser(sql)); } public OracleStatementParser(Lexer lexer){ - super(lexer); - this.exprParser = new OracleExprParser(lexer); + super(new OracleExprParser(lexer)); } @Override diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleUpdateParser.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleUpdateParser.java index cfeee9b412..8823527839 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleUpdateParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/parser/OracleUpdateParser.java @@ -28,14 +28,11 @@ import com.alibaba.druid.sql.parser.Token; public class OracleUpdateParser extends SQLStatementParser { public OracleUpdateParser(String sql) throws ParserException{ - super(new OracleLexer(sql)); - this.lexer.nextToken(); - this.exprParser = new OracleExprParser(lexer); + super(new OracleExprParser(sql)); } public OracleUpdateParser(Lexer lexer){ - super(lexer); - this.exprParser = new OracleExprParser(lexer); + super(new OracleExprParser(lexer)); } public OracleUpdateStatement parseUpdateStatement() throws ParserException { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSQLStatementParser.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSQLStatementParser.java index 0c6b8582a6..da9df45c07 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSQLStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSQLStatementParser.java @@ -26,16 +26,15 @@ import com.alibaba.druid.sql.parser.Token; public class PGSQLStatementParser extends SQLStatementParser { public PGSQLStatementParser(String sql) throws ParserException{ - this(new PGLexer(sql)); - this.lexer.nextToken(); + super (new PGExprParser(sql)); } public PGSQLStatementParser(Lexer lexer){ - super(lexer); + super(new PGExprParser(lexer)); } public PGSelectParser createSQLSelectParser() { - return new PGSelectParser(this.lexer); + return new PGSelectParser(this.exprParser); } public SQLUpdateStatement parseUpdateStatement() throws ParserException { diff --git a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSelectParser.java b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSelectParser.java index 6cfe4464e6..2bc5012191 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSelectParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/postgresql/parser/PGSelectParser.java @@ -7,7 +7,6 @@ import com.alibaba.druid.sql.ast.statement.SQLExprTableSource; import com.alibaba.druid.sql.ast.statement.SQLSelectQuery; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock; import com.alibaba.druid.sql.dialect.postgresql.ast.stmt.PGSelectQueryBlock.IntoOption; -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,13 +14,12 @@ import com.alibaba.druid.sql.parser.Token; public class PGSelectParser extends SQLSelectParser { - public PGSelectParser(Lexer lexer){ - super(lexer); + public PGSelectParser(SQLExprParser exprParser){ + super(exprParser); } public PGSelectParser(String sql) throws ParserException{ - this(new PGLexer(sql)); - this.lexer.nextToken(); + this(new PGExprParser(sql)); } protected SQLExprParser createExprParser() { 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..afc498c4e1 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 @@ -22,17 +22,15 @@ import com.alibaba.druid.sql.parser.SQLStatementParser; public class SQLServerStatementParser extends SQLStatementParser { public SQLServerStatementParser(String sql){ - super(new SQLServerLexer(sql)); - this.lexer.nextToken(); - this.exprParser = new SQLServerExprParser(lexer); + super(new SQLServerExprParser(sql)); } public SQLSelectParser createSQLSelectParser() { - return new SQLServerSelectParser(this.lexer); + return new SQLServerSelectParser(this.exprParser); } public SQLServerStatementParser(Lexer lexer){ - super(lexer); + super(new SQLServerExprParser(lexer)); } } diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLCreateTableParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLCreateTableParser.java index f309aa0841..f1dc8691ad 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLCreateTableParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLCreateTableParser.java @@ -25,8 +25,8 @@ public class SQLCreateTableParser extends SQLDDLParser { super(sql); } - public SQLCreateTableParser(Lexer lexer){ - super(lexer); + public SQLCreateTableParser(SQLExprParser exprParser){ + super(exprParser); } public SQLCreateTableStatement parseCrateTable() { diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLDDLParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLDDLParser.java index 8367642af5..e86e8b86b8 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLDDLParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLDDLParser.java @@ -24,8 +24,8 @@ public class SQLDDLParser extends SQLStatementParser { super(sql); } - public SQLDDLParser(Lexer lexer){ - super(lexer); + public SQLDDLParser(SQLExprParser exprParser){ + super(exprParser); } protected SQLTableConstaint parseConstraint() { 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 b9a00b269c..e9906e708e 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLStatementParser.java @@ -59,6 +59,11 @@ public class SQLStatementParser extends SQLParser { super(lexer); this.exprParser = new SQLExprParser(lexer); } + + public SQLStatementParser(SQLExprParser exprParser){ + super(exprParser.getLexer()); + this.exprParser = exprParser; + } public SQLExprParser getExprParser() { return exprParser; @@ -476,7 +481,7 @@ public class SQLStatementParser extends SQLParser { } public SQLCreateTableParser getSQLCreateTableParser() { - return new SQLCreateTableParser(lexer); + return new SQLCreateTableParser(this.exprParser); } public SQLSelectStatement parseSelect() throws ParserException {