Commit 518987ae authored by KomachiSion's avatar KomachiSion
Browse files

fix #2193

parent 2069f086
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -42,9 +42,11 @@ import org.apache.shardingsphere.core.strategy.route.value.RouteValue;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;

/**
 * Standard routing engine.
@@ -180,7 +182,7 @@ public final class StandardRoutingEngine implements RoutingEngine {
        for (String each : routedDataSources) {
            result.addAll(routeTables(tableRule, each, tableShardingValues));
        }
        return result;
        return removeNonExistNodes(result, tableRule);
    }
    
    private Collection<String> routeDataSources(final TableRule tableRule, final List<RouteValue> databaseShardingValues) {
@@ -205,6 +207,17 @@ public final class StandardRoutingEngine implements RoutingEngine {
        return result;
    }
    
    private Collection<DataNode> removeNonExistNodes(final Collection<DataNode> routedDataNodes, final TableRule tableRule) {
        Collection<DataNode> result = new LinkedList<>();
        Set<DataNode> actualDataNodeSet = new HashSet<>(tableRule.getActualDataNodes());
        for (DataNode each : routedDataNodes) {
            if (actualDataNodeSet.contains(each)) {
                result.add(each);
            }
        }
        return result;
    }
    
    private void reviseInsertOptimizeResult(final ShardingCondition shardingCondition, final Collection<DataNode> dataNodes) {
        if (sqlStatement instanceof InsertStatement) {
            for (InsertOptimizeResultUnit each : optimizeResult.getInsertOptimizeResult().get().getUnits()) {