sql parser refactor

This commit is contained in:
温少
2012-05-20 13:53:26 +08:00
6 changed files with 13 additions and 16 deletions
@@ -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 {
@@ -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 {
@@ -28,7 +28,7 @@ public class SQLServerStatementParser extends SQLStatementParser {
}
public SQLSelectParser createSQLSelectParser() {
return new SQLServerSelectParser(this.lexer);
return new SQLServerSelectParser(this.exprParser);
}
public SQLServerStatementParser(Lexer lexer){