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:
+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;
|
||||
|
||||
Reference in New Issue
Block a user