Unverified Commit fadb1343 authored by 张亮's avatar 张亮 Committed by GitHub
Browse files

Merge pull request #1691 from KomachiSion/dev

Simplified rewrite and merge logic for single node SQL
parents 66268e51 8731bcc1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -94,14 +94,14 @@ public final class DQLMergeEngine implements MergeEngine {
    
    @Override
    public MergedResult merge() throws SQLException {
        if (queryResults.size() == 1) {
            return new IteratorStreamMergedResult(queryResults);
        }
        selectStatement.setIndexForItems(columnLabelIndexMap);
        return decorate(build());
    }
    
    private MergedResult build() throws SQLException {
        if (queryResults.size() == 1) {
            return new IteratorStreamMergedResult(queryResults);
        }
        if (!selectStatement.getGroupByItems().isEmpty() || !selectStatement.getAggregationSelectItems().isEmpty()) {
            return getGroupByMergedResult();
        }
+0 −16
Original line number Diff line number Diff line
@@ -21,14 +21,12 @@ import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.base.Strings;
import com.google.common.collect.Iterators;
import io.shardingsphere.core.constant.AggregationType;
import io.shardingsphere.core.constant.DatabaseType;
import io.shardingsphere.core.metadata.datasource.ShardingDataSourceMetaData;
import io.shardingsphere.core.optimizer.condition.ShardingConditions;
import io.shardingsphere.core.parsing.lexer.token.DefaultKeyword;
import io.shardingsphere.core.parsing.parser.context.OrderItem;
import io.shardingsphere.core.parsing.parser.context.limit.Limit;
import io.shardingsphere.core.parsing.parser.context.selectitem.AggregationSelectItem;
import io.shardingsphere.core.parsing.parser.sql.SQLStatement;
import io.shardingsphere.core.parsing.parser.sql.dml.insert.InsertStatement;
import io.shardingsphere.core.parsing.parser.sql.dql.select.SelectStatement;
@@ -118,9 +116,6 @@ public final class SQLRewriteEngine {
            return appendOriginalLiterals(result);
        }
        appendInitialLiterals(isRewrite, result);
        if (sqlStatement instanceof SelectStatement && !isRewrite) {
            removeAppendItems();
        }
        appendTokensAndPlaceholders(isRewrite, result);
        return result;
    }
@@ -154,17 +149,6 @@ public final class SQLRewriteEngine {
        result.appendLiterals(originalSQL.substring(firstSelectItemStartPosition, sqlTokens.get(0).getBeginPosition()));
    }
    
    private void removeAppendItems() {
        SelectStatement selectStatement = (SelectStatement) sqlStatement;
        selectStatement.getOrderByItems().clear();
        selectStatement.getGroupByItems().clear();
        for (AggregationSelectItem each : selectStatement.getAggregationSelectItems()) {
            if (AggregationType.AVG == each.getType()) {
                each.getDerivedAggregationSelectItems().clear();
            }
        }
    }
    
    private void appendTokensAndPlaceholders(final boolean isRewrite, final SQLBuilder result) {
        int count = 0;
        for (SQLToken each : sqlTokens) {