sql parser refactor

This commit is contained in:
温少
2012-05-20 14:10:35 +08:00
15 changed files with 46 additions and 66 deletions
@@ -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;