Skip to content

Commit

Permalink
For #525 5th.
Browse files Browse the repository at this point in the history
  • Loading branch information
haocao committed Jan 3, 2018
1 parent af45853 commit 91a8a56
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,6 @@ public abstract class AbstractSQLStatement implements SQLStatement {
@Setter
private int parametersIndex;

private boolean containsTableName = true;

@Override
public final SQLType getType() {
return type;
Expand All @@ -61,9 +59,4 @@ public final SQLType getType() {
public int increaseParametersIndex() {
return ++parametersIndex;
}

@Override
public void withoutTableName() {
containsTableName = false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -79,16 +79,4 @@ public interface SQLStatement {
* @return increased parameters index
*/
int increaseParametersIndex();

/**
* Without table name.
*/
void withoutTableName();

/**
* Adjust contains table name is empty or not.
*
* @return table name is empty or not
*/
boolean isContainsTableName();
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import io.shardingjdbc.core.parsing.parser.sql.SQLParser;
import io.shardingjdbc.core.parsing.parser.sql.ddl.DDLStatement;
import io.shardingjdbc.core.parsing.parser.token.IndexToken;
import io.shardingjdbc.core.parsing.parser.token.SQLToken;
import io.shardingjdbc.core.rule.ShardingRule;
import lombok.AccessLevel;
import lombok.Getter;
Expand Down Expand Up @@ -65,7 +64,6 @@ public DDLStatement parse() {
throw new SQLParsingException("Can't support other DROP grammar unless DROP TABLE, DROP INDEX.");
}
tableReferencesClauseParser.parse(result, true);
indexWithoutTable(result);
return result;
}

Expand All @@ -88,12 +86,4 @@ private void parseIndex(final DDLStatement ddlStatement) {
}

protected abstract Keyword[] getSkippedKeywordsBetweenDropTableAndTableName();

private void indexWithoutTable(final DDLStatement ddlStatement) {
for (SQLToken each : ddlStatement.getSqlTokens()) {
if (each instanceof IndexToken && 1 == ddlStatement.getSqlTokens().size()) {
ddlStatement.withoutTableName();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import io.shardingjdbc.core.parsing.parser.sql.ddl.DDLStatement;
import io.shardingjdbc.core.routing.type.all.DatabaseAllRoutingEngine;
import io.shardingjdbc.core.routing.type.none.NoneTableRoutingEngine;
import io.shardingjdbc.core.routing.type.ddl.DDLRoutingEngine;
import io.shardingjdbc.core.rule.ShardingRule;
import io.shardingjdbc.core.constant.DatabaseType;
import io.shardingjdbc.core.jdbc.core.ShardingContext;
Expand Down Expand Up @@ -111,8 +111,8 @@ public SQLRouteResult route(final String logicSQL, final List<Object> parameters
private RoutingResult route(final List<Object> parameters, final SQLStatement sqlStatement) {
Collection<String> tableNames = sqlStatement.getTables().getTableNames();
RoutingEngine routingEngine;
if (sqlStatement instanceof DDLStatement && !sqlStatement.isContainsTableName()) {
routingEngine = new NoneTableRoutingEngine(shardingRule, parameters, sqlStatement);
if (sqlStatement instanceof DDLStatement) {
routingEngine = new DDLRoutingEngine(shardingRule, parameters, sqlStatement);
} else if (tableNames.isEmpty()) {
routingEngine = new DatabaseAllRoutingEngine(shardingRule.getDataSourceMap());
} else if (1 == tableNames.size() || shardingRule.isAllBindingTables(tableNames) || shardingRule.isAllInDefaultDataSource(tableNames)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
* </p>
*/

package io.shardingjdbc.core.routing.type.none;
package io.shardingjdbc.core.routing.type.ddl;

import com.google.common.base.Preconditions;
import io.shardingjdbc.core.parsing.parser.sql.SQLStatement;
Expand All @@ -24,18 +24,17 @@
import io.shardingjdbc.core.routing.type.RoutingResult;
import io.shardingjdbc.core.routing.type.simple.SimpleRoutingEngine;
import io.shardingjdbc.core.rule.ShardingRule;
import io.shardingjdbc.core.rule.TableRule;
import lombok.RequiredArgsConstructor;

import java.util.List;

/**
* None table routing engine.
* DDL routing engine.
*
* @author caohao
*/
@RequiredArgsConstructor
public final class NoneTableRoutingEngine implements RoutingEngine {
public final class DDLRoutingEngine implements RoutingEngine {

private final ShardingRule shardingRule;

Expand All @@ -49,15 +48,11 @@ public RoutingResult route() {
}

private String getLogicTableName() {
Preconditions.checkState(1 == sqlStatement.getSqlTokens().size());
IndexToken indexToken = (IndexToken) sqlStatement.getSqlTokens().get(0);
String indexName = indexToken.getIndexName();
String result = "";
for (TableRule each : shardingRule.getTableRules()) {
if (indexName.equals(each.getLogicIndex())) {
result = each.getLogicTable();
}
if (sqlStatement.getTables().isEmpty()) {
Preconditions.checkState(1 == sqlStatement.getSqlTokens().size());
IndexToken indexToken = (IndexToken) sqlStatement.getSqlTokens().get(0);
return shardingRule.getLogicTableName(indexToken.getIndexName());
}
return result;
return sqlStatement.getTables().getSingleTableName();
}
}

0 comments on commit 91a8a56

Please sign in to comment.