mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
sql parser refactor
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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<SQLStatement> statementList) {
|
||||
|
||||
+4
-6
@@ -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 {
|
||||
|
||||
@@ -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<SQLCommentHint> 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;
|
||||
|
||||
+2
-5
@@ -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() {
|
||||
|
||||
+2
-5
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
+3
-4
@@ -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 {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
+3
-5
@@ -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 {
|
||||
|
||||
+3
-5
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user