sql parser refactor

This commit is contained in:
温少
2012-05-20 13:51:19 +08:00
parent 04130b96c5
commit 952aa6d908
8 changed files with 17 additions and 19 deletions
@@ -176,7 +176,7 @@ public class MySqlCreateTableParser extends SQLCreateTableParser {
}
if (lexer.token() == (Token.SELECT)) {
SQLSelect query = new MySqlSelectParser(this.lexer).select();
SQLSelect query = new MySqlSelectParser(this.exprParser).select();
stmt.setQuery(query);
}
@@ -454,7 +454,7 @@ public class MySqlExprParser extends SQLExprParser {
}
public SQLSelectParser createSelectParser() {
return new MySqlSelectParser(this.lexer);
return new MySqlSelectParser(this);
}
protected SQLExpr parseInterval() {
@@ -33,20 +33,19 @@ import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectGroupBy;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlSelectQueryBlock.Limit;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlUnionQuery;
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;
import com.alibaba.druid.sql.parser.Token;
public class MySqlSelectParser extends SQLSelectParser {
public MySqlSelectParser(Lexer lexer){
super(lexer);
public MySqlSelectParser(SQLExprParser exprParser){
super(exprParser);
}
public MySqlSelectParser(String sql) throws ParserException{
this(new MySqlLexer(sql));
this.lexer.nextToken();
this(new MySqlExprParser(sql));
}
@Override
@@ -144,7 +144,7 @@ public class MySqlStatementParser extends SQLStatementParser {
}
public SQLSelectStatement parseSelect() throws ParserException {
return new SQLSelectStatement(new MySqlSelectParser(lexer).select());
return new SQLSelectStatement(new MySqlSelectParser(this.exprParser).select());
}
public SQLUpdateStatement parseUpdateStatement() throws ParserException {
@@ -1917,7 +1917,7 @@ public class MySqlStatementParser extends SQLStatementParser {
}
public SQLSelectParser createSQLSelectParser() {
return new MySqlSelectParser(this.lexer);
return new MySqlSelectParser(this.exprParser);
}
public SQLStatement parseSet() throws ParserException {
@@ -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);
}
@@ -633,7 +633,7 @@ public class OracleExprParser extends SQLExprParser {
@Override
public OracleSelectParser createSelectParser() {
return new OracleSelectParser(this.lexer);
return new OracleSelectParser(this);
}
@Override
@@ -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() {
@@ -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 {