Commit a82dee40 authored by haocao's avatar haocao
Browse files

For #525 6th.

parent 91a8a567
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import java.util.List;
 */
@RequiredArgsConstructor
@Getter
@Setter
@ToString
public abstract class AbstractSQLStatement implements SQLStatement {
    
@@ -47,7 +48,6 @@ public abstract class AbstractSQLStatement implements SQLStatement {
    
    private final List<SQLToken> sqlTokens = new LinkedList<>();
    
    @Setter
    private int parametersIndex;
    
    @Override
+1 −1
Original line number Diff line number Diff line
@@ -112,7 +112,7 @@ public final class ParsingSQLRouter implements SQLRouter {
        Collection<String> tableNames = sqlStatement.getTables().getTableNames();
        RoutingEngine routingEngine;
        if (sqlStatement instanceof DDLStatement) {
            routingEngine = new DDLRoutingEngine(shardingRule, parameters, sqlStatement); 
            routingEngine = new DDLRoutingEngine(shardingRule, parameters, (DDLStatement) sqlStatement); 
        } else if (tableNames.isEmpty()) {
            routingEngine = new DatabaseAllRoutingEngine(shardingRule.getDataSourceMap());
        } else if (1 == tableNames.size() || shardingRule.isAllBindingTables(tableNames) || shardingRule.isAllInDefaultDataSource(tableNames)) {
+11 −8
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@
package io.shardingjdbc.core.routing.type.ddl;

import com.google.common.base.Preconditions;
import io.shardingjdbc.core.parsing.parser.sql.SQLStatement;
import io.shardingjdbc.core.parsing.parser.sql.ddl.DDLStatement;
import io.shardingjdbc.core.parsing.parser.token.IndexToken;
import io.shardingjdbc.core.routing.type.RoutingEngine;
import io.shardingjdbc.core.routing.type.RoutingResult;
@@ -40,19 +40,22 @@ public final class DDLRoutingEngine implements RoutingEngine {
    
    private final List<Object> parameters;
    
    private final SQLStatement sqlStatement;
    private final DDLStatement ddlStatement;
    
    @Override
    public RoutingResult route() {
        return new SimpleRoutingEngine(shardingRule, parameters, getLogicTableName(), sqlStatement).route();
        return new SimpleRoutingEngine(shardingRule, parameters, getLogicTableName(), ddlStatement).route();
    }
    
    private String getLogicTableName() {
        if (sqlStatement.getTables().isEmpty()) {
            Preconditions.checkState(1 == sqlStatement.getSqlTokens().size());
            IndexToken indexToken = (IndexToken) sqlStatement.getSqlTokens().get(0);
            return shardingRule.getLogicTableName(indexToken.getIndexName());
        if (ddlStatement.getTables().isEmpty()) {
            return shardingRule.getLogicTableName(getIndexToken().getIndexName());
        }
        return sqlStatement.getTables().getSingleTableName();
        return ddlStatement.getTables().getSingleTableName();
    }
    
    private IndexToken getIndexToken() {
        Preconditions.checkState(1 == ddlStatement.getSqlTokens().size());
        return (IndexToken) ddlStatement.getSqlTokens().get(0);
    }
}
+2 −6
Original line number Diff line number Diff line
@@ -292,15 +292,11 @@ public final class ShardingRule {
     * @return logic table name
     */
    public String getLogicTableName(final String logicIndexName) {
        String result = "";
        for (TableRule each : tableRules) {
            if (logicIndexName.equals(each.getLogicIndex())) {
                result = each.getLogicTable();
                return each.getLogicTable();
            }
        }
        if (Strings.isNullOrEmpty(result)) {
        throw new ShardingJdbcException("Cannot find logic table name with logic index name: '%s'", logicIndexName);
    }
        return result;
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ public class YamlTableRuleConfiguration {
    
    private String keyGeneratorClass;
    
    private String logicIndex;
    
    /**
     * Build table rule configuration.
     *
@@ -45,6 +47,7 @@ public class YamlTableRuleConfiguration {
        }
        tableRuleConfig.setKeyGeneratorClass(keyGeneratorClass);
        tableRuleConfig.setKeyGeneratorColumnName(keyGeneratorColumnName);
        tableRuleConfig.setLogicIndex(logicIndex);
        return tableRuleConfig;
    }
}
Loading