提交 a5f64317 编写于 作者: T terrymanu

refactor parseSelectRest

上级 c8a9fafb
......@@ -21,7 +21,6 @@ import com.dangdang.ddframe.rdb.sharding.api.rule.ShardingRule;
import com.dangdang.ddframe.rdb.sharding.parsing.lexer.LexerEngine;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.HavingSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.SelectListSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.SelectRestSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.WhereSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.dql.select.AbstractSelectParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.dql.select.SelectStatement;
......@@ -37,15 +36,12 @@ public final class MySQLSelectParser extends AbstractSelectParser {
private final MySQLLimitSQLParser limitSQLParser;
private final SelectRestSQLParser selectRestSQLParser;
public MySQLSelectParser(final ShardingRule shardingRule, final LexerEngine lexerEngine) {
super(shardingRule, lexerEngine,
new MySQLDistinctSQLParser(lexerEngine), new SelectListSQLParser(shardingRule, lexerEngine), new MySQLTableSQLParser(shardingRule, lexerEngine),
new WhereSQLParser(lexerEngine), new MySQLGroupBySQLParser(lexerEngine), new HavingSQLParser(lexerEngine), new MySQLOrderBySQLParser(lexerEngine));
super(shardingRule, lexerEngine, new MySQLDistinctSQLParser(lexerEngine), new SelectListSQLParser(shardingRule, lexerEngine), new MySQLTableSQLParser(shardingRule, lexerEngine),
new WhereSQLParser(lexerEngine), new MySQLGroupBySQLParser(lexerEngine), new HavingSQLParser(lexerEngine), new MySQLOrderBySQLParser(lexerEngine),
new MySQLSelectRestSQLParser(lexerEngine));
selectOptionSQLParser = new MySQLSelectOptionSQLParser(lexerEngine);
limitSQLParser = new MySQLLimitSQLParser(lexerEngine);
selectRestSQLParser = new MySQLSelectRestSQLParser(lexerEngine);
}
@Override
......@@ -59,7 +55,7 @@ public final class MySQLSelectParser extends AbstractSelectParser {
parseHaving();
parseOrderBy(selectStatement);
parseLimit(selectStatement);
selectRestSQLParser.parse();
parseSelectRest();
}
private void parseSelectOption() {
......
......@@ -37,16 +37,13 @@ public final class OracleSelectParser extends AbstractSelectParser {
private final OracleForParser forParser;
private final SelectRestSQLParser selectRestSQLParser;
public OracleSelectParser(final ShardingRule shardingRule, final LexerEngine lexerEngine) {
super(shardingRule, lexerEngine,
new OracleDistinctSQLParser(lexerEngine), new OracleSelectListSQLParser(shardingRule, lexerEngine), new OracleTableSQLParser(shardingRule, lexerEngine),
new OracleWhereSQLParser(lexerEngine), new OracleGroupBySQLParser(lexerEngine), new HavingSQLParser(lexerEngine), new OracleOrderBySQLParser(lexerEngine));
super(shardingRule, lexerEngine, new OracleDistinctSQLParser(lexerEngine), new OracleSelectListSQLParser(shardingRule, lexerEngine), new OracleTableSQLParser(shardingRule, lexerEngine),
new OracleWhereSQLParser(lexerEngine), new OracleGroupBySQLParser(lexerEngine), new HavingSQLParser(lexerEngine), new OracleOrderBySQLParser(lexerEngine),
new SelectRestSQLParser(lexerEngine));
hierarchicalQueryClauseParser = new OracleHierarchicalQueryClauseParser(shardingRule, lexerEngine);
modelClauseParser = new OracleModelClauseParser(lexerEngine);
forParser = new OracleForParser(lexerEngine);
selectRestSQLParser = new SelectRestSQLParser(lexerEngine);
}
@Override
......@@ -61,7 +58,7 @@ public final class OracleSelectParser extends AbstractSelectParser {
parseModelClause(selectStatement);
parseOrderBy(selectStatement);
parseFor(selectStatement);
selectRestSQLParser.parse();
parseSelectRest();
}
private void parseHierarchicalQueryClause(final SelectStatement selectStatement) {
......
......@@ -23,7 +23,6 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.DistinctSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.GroupBySQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.HavingSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.SelectListSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.SelectRestSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.TableSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.WhereSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.dql.select.AbstractSelectParser;
......@@ -40,15 +39,12 @@ public final class PostgreSQLSelectParser extends AbstractSelectParser {
private final PostgreSQLForSQLParser forSQLParser;
private final SelectRestSQLParser selectRestSQLParser;
public PostgreSQLSelectParser(final ShardingRule shardingRule, final LexerEngine lexerEngine) {
super(shardingRule, lexerEngine, new DistinctSQLParser(lexerEngine),
new SelectListSQLParser(shardingRule, lexerEngine), new TableSQLParser(shardingRule, lexerEngine), new WhereSQLParser(lexerEngine), new GroupBySQLParser(lexerEngine),
new HavingSQLParser(lexerEngine), new PostgreSQLOrderBySQLParser(lexerEngine));
new HavingSQLParser(lexerEngine), new PostgreSQLOrderBySQLParser(lexerEngine), new PostgreSQLSelectRestSQLParser(lexerEngine));
limitSQLParser = new PostgreSQLLimitSQLParser(lexerEngine);
forSQLParser = new PostgreSQLForSQLParser(lexerEngine);
selectRestSQLParser = new PostgreSQLSelectRestSQLParser(lexerEngine);
}
@Override
......@@ -62,7 +58,7 @@ public final class PostgreSQLSelectParser extends AbstractSelectParser {
parseOrderBy(selectStatement);
parseLimit(selectStatement);
parseFor();
selectRestSQLParser.parse();
parseSelectRest();
}
private void parseLimit(final SelectStatement selectStatement) {
......
......@@ -39,16 +39,13 @@ public final class SQLServerSelectParser extends AbstractSelectParser {
private final SQLServerForSQLParser forSQLParser;
private final SelectRestSQLParser selectRestSQLParser;
public SQLServerSelectParser(final ShardingRule shardingRule, final LexerEngine lexerEngine) {
super(shardingRule, lexerEngine,
new DistinctSQLParser(lexerEngine), new SQLServerSelectListSQLParser(shardingRule, lexerEngine), new SQLServerTableSQLParser(shardingRule, lexerEngine),
new SQLServerWhereSQLParser(lexerEngine), new GroupBySQLParser(lexerEngine), new HavingSQLParser(lexerEngine), new SQLServerOrderBySQLParser(lexerEngine));
super(shardingRule, lexerEngine, new DistinctSQLParser(lexerEngine), new SQLServerSelectListSQLParser(shardingRule, lexerEngine), new SQLServerTableSQLParser(shardingRule, lexerEngine),
new SQLServerWhereSQLParser(lexerEngine), new GroupBySQLParser(lexerEngine), new HavingSQLParser(lexerEngine), new SQLServerOrderBySQLParser(lexerEngine),
new SelectRestSQLParser(lexerEngine));
sqlServerTopParser = new SQLServerTopParser(lexerEngine);
offsetSQLParser = new SQLServerOffsetSQLParser(lexerEngine);
forSQLParser = new SQLServerForSQLParser(lexerEngine);
selectRestSQLParser = new SelectRestSQLParser(lexerEngine);
}
@Override
......@@ -63,7 +60,7 @@ public final class SQLServerSelectParser extends AbstractSelectParser {
parseOrderBy(selectStatement);
parseOffset(selectStatement);
parseFor();
selectRestSQLParser.parse();
parseSelectRest();
}
private void parseTop(final SelectStatement selectStatement) {
......
......@@ -32,6 +32,7 @@ import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.GroupBySQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.HavingSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.OrderBySQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.SelectListSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.SelectRestSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.TableSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.sql.WhereSQLParser;
import com.dangdang.ddframe.rdb.sharding.parsing.parser.statement.SQLStatementParser;
......@@ -80,6 +81,8 @@ public abstract class AbstractSelectParser implements SQLStatementParser {
private final OrderBySQLParser orderBySQLParser;
private final SelectRestSQLParser selectRestSQLParser;
private final List<SelectItem> items = new LinkedList<>();
@Override
......@@ -147,6 +150,10 @@ public abstract class AbstractSelectParser implements SQLStatementParser {
orderBySQLParser.parse(selectStatement);
}
protected final void parseSelectRest() {
selectRestSQLParser.parse();
}
private void appendDerivedColumns(final SelectStatement selectStatement) {
ItemsToken itemsToken = new ItemsToken(selectStatement.getSelectListLastPosition());
appendAvgDerivedColumns(itemsToken, selectStatement);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册