This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new aaa5023 Review ShardingRouteEngineFactory (#9548)
aaa5023 is described below
commit aaa5023f188b5e6f3f1fb947d2abeef388bc51a4
Author: Juan Pan(Trista) <[email protected]>
AuthorDate: Tue Mar 2 11:21:03 2021 +0800
Review ShardingRouteEngineFactory (#9548)
* Review ShardingRouteEngineFactory
* fix ut
---
.../shardingsphere/sharding/rule/ShardingRule.java | 23 ++++++++++++
.../sharding/rule/single/SingleTableRule.java | 2 ++
.../engine/type/ShardingRouteEngineFactory.java | 33 +++++++----------
...gEngine.java => SingleTablesRoutingEngine.java} | 42 +++++++---------------
.../type/ShardingRouteEngineFactoryTest.java | 15 ++++----
...est.java => SingleTablesRoutingEngineTest.java} | 14 ++++----
6 files changed, 65 insertions(+), 64 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index 0f22f6d..772baf6 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -284,6 +284,16 @@ public final class ShardingRule implements
DataNodeContainedRule, TableContained
}
/**
+ * Judge logic tables is all belong to sharding tables.
+ *
+ * @param logicTableNames logic table names
+ * @return logic tables is all belong to sharding tables or not
+ */
+ public boolean isAllShardingTables(final Collection<String>
logicTableNames) {
+ return logicTableNames.stream().allMatch(each ->
findTableRule(each).isPresent());
+ }
+
+ /**
* Judge logic table is belong to broadcast tables.
*
* @param logicTableName logic table name
@@ -294,6 +304,19 @@ public final class ShardingRule implements
DataNodeContainedRule, TableContained
}
/**
+ * Judge if all single tables exist in same data source.
+ *
+ * @param logicTableNames logic table names
+ * @return all single tables exist in same data source or not
+ */
+ public boolean isSingleTablesInSameDataSource(final Collection<String>
logicTableNames) {
+ if (!singleTableRules.keySet().containsAll(logicTableNames)) {
+ return false;
+ }
+ return 1 == singleTableRules.values().stream().filter(each ->
logicTableNames.contains(each.getTableName())).collect(Collectors.toSet()).size();
+ }
+
+ /**
* Judge if there is at least one table rule for logic tables.
*
* @param logicTableNames logic table names
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/single/SingleTableRule.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/single/SingleTableRule.java
index 436cb41..39ed929 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/single/SingleTableRule.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-common/src/main/java/org/apache/shardingsphere/sharding/rule/single/SingleTableRule.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sharding.rule.single;
+import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -25,6 +26,7 @@ import lombok.RequiredArgsConstructor;
*/
@RequiredArgsConstructor
@Getter
+@EqualsAndHashCode
public final class SingleTableRule {
private final String tableName;
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
index e9119cd..5ee91db 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
@@ -32,7 +32,7 @@ import
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingTa
import
org.apache.shardingsphere.sharding.route.engine.type.complex.ShardingComplexRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.ignore.ShardingIgnoreRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.federated.ShardingFederatedRoutingEngine;
-import
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTableRoutingEngine;
+import
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTablesRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.unicast.ShardingUnicastRoutingEngine;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -100,7 +100,7 @@ public final class ShardingRouteEngineFactory {
}
Collection<String> tableNames =
sqlStatementContext.getTablesContext().getTableNames();
if (!tableNames.isEmpty() &&
!shardingRule.tableRuleExists(tableNames)) {
- return new SingleTableRoutingEngine(tableNames, sqlStatement);
+ return new SingleTablesRoutingEngine(tableNames, sqlStatement);
}
return new ShardingTableBroadcastRoutingEngine(metaData.getSchema(),
sqlStatementContext);
}
@@ -113,7 +113,7 @@ public final class ShardingRouteEngineFactory {
return new ShardingDatabaseBroadcastRoutingEngine();
}
if (!tableNames.isEmpty() &&
!shardingRule.tableRuleExists(tableNames)) {
- return new SingleTableRoutingEngine(tableNames, sqlStatement);
+ return new SingleTablesRoutingEngine(tableNames, sqlStatement);
}
if (!tableNames.isEmpty()) {
return new ShardingUnicastRoutingEngine(tableNames);
@@ -126,7 +126,7 @@ public final class ShardingRouteEngineFactory {
Collection<String> tableNames =
sqlStatementContext.getTablesContext().getTableNames();
return shardingRule.tableRuleExists(tableNames)
? new
ShardingTableBroadcastRoutingEngine(metaData.getSchema(), sqlStatementContext)
- : new SingleTableRoutingEngine(tableNames,
sqlStatementContext.getSqlStatement());
+ : new SingleTablesRoutingEngine(tableNames,
sqlStatementContext.getSqlStatement());
} else {
return new
ShardingInstanceBroadcastRoutingEngine(metaData.getResource().getDataSourcesMetaData());
}
@@ -150,33 +150,26 @@ public final class ShardingRouteEngineFactory {
return new ShardingUnicastRoutingEngine(tableNames);
}
if (!shardingRule.tableRuleExists(tableNames)) {
- return new SingleTableRoutingEngine(tableNames, sqlStatement);
+ return new SingleTablesRoutingEngine(tableNames, sqlStatement);
}
- if (shardingRule.tableRuleExists(tableNames) &&
shardingRule.singleTableRuleExists(tableNames)) {
- return new ShardingFederatedRoutingEngine(tableNames);
+ if (shardingRule.isAllShardingTables(tableNames) && 1 ==
tableNames.size() || shardingRule.isAllBindingTables(tableNames)) {
+ return new
ShardingStandardRoutingEngine(tableNames.iterator().next(), shardingConditions,
props);
}
- return getShardingRoutingEngine(shardingRule, shardingConditions,
sqlStatementContext, tableNames, props);
- }
-
- private static ShardingRouteEngine getShardingRoutingEngine(final
ShardingRule shardingRule, final ShardingConditions shardingConditions,
- final
SQLStatementContext<?> sqlStatementContext,
- final
Collection<String> tableNames, final ConfigurationProperties props) {
- Collection<String> shardingTableNames =
shardingRule.getShardingLogicTableNames(tableNames);
- if (1 == shardingTableNames.size() ||
shardingRule.isAllBindingTables(shardingTableNames)) {
- return new
ShardingStandardRoutingEngine(shardingTableNames.iterator().next(),
shardingConditions, props);
- }
- if (isFederatedQuery(sqlStatementContext, tableNames,
shardingTableNames)) {
+ if (isShardingFederatedQuery(sqlStatementContext, tableNames,
shardingRule)) {
return new ShardingFederatedRoutingEngine(tableNames);
}
// TODO config for cartesian set
return new ShardingComplexRoutingEngine(tableNames,
shardingConditions, props);
}
- private static boolean isFederatedQuery(final SQLStatementContext<?>
sqlStatementContext, final Collection<String> tableNames, final
Collection<String> shardingTableNames) {
+ private static boolean isShardingFederatedQuery(final
SQLStatementContext<?> sqlStatementContext, final Collection<String>
tableNames, final ShardingRule shardingRule) {
if (!(sqlStatementContext instanceof SelectStatementContext)) {
return false;
}
SelectStatementContext select = (SelectStatementContext)
sqlStatementContext;
- return tableNames.size() == shardingTableNames.size() &&
(select.isContainsJoinQuery() || select.isContainsSubquery());
+ if (!select.isContainsJoinQuery() && !select.isContainsSubquery()) {
+ return false;
+ }
+ return shardingRule.isAllShardingTables(tableNames) ||
(shardingRule.tableRuleExists(tableNames) &&
shardingRule.singleTableRuleExists(tableNames));
}
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngine.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngine.java
similarity index 66%
rename from
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngine.java
rename to
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngine.java
index 1c6d8b5..e82db2e 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngine.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngine.java
@@ -32,17 +32,13 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.handler.ddl.DropTableSta
import java.util.Collection;
import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
-import java.util.stream.Collectors;
/**
* Single table engine.
*/
@RequiredArgsConstructor
-public final class SingleTableRoutingEngine implements ShardingRouteEngine {
+public final class SingleTablesRoutingEngine implements ShardingRouteEngine {
private final Collection<String> logicTables;
@@ -50,17 +46,20 @@ public final class SingleTableRoutingEngine implements
ShardingRouteEngine {
@Override
public void route(final RouteContext routeContext, final ShardingRule
shardingRule) {
- if (sqlStatement instanceof CreateTableStatement) {
+ if (sqlStatement instanceof CreateTableStatement ||
containsDropTableIfExistClause()) {
routeContext.getRouteUnits().add(getRandomRouteUnit(shardingRule));
} else {
- Collection<RouteUnit> routeUnits =
getTargetRouteUnits(shardingRule);
- routeContext.getRouteUnits().addAll(routeUnits);
- if (1 < routeUnits.size()) {
+ fillRouteContext(shardingRule, routeContext);
+ if (1 < routeContext.getRouteUnits().size()) {
routeContext.setToCalcite(true);
}
}
}
+ private boolean containsDropTableIfExistClause() {
+ return sqlStatement instanceof DropTableStatement &&
DropTableStatementHandler.containsIfExistClause((DropTableStatement)
sqlStatement);
+ }
+
private RouteUnit getRandomRouteUnit(final ShardingRule shardingRule) {
Collection<String> dataSourceNames = shardingRule.getDataSourceNames();
String dataSource =
Lists.newArrayList(dataSourceNames).get(ThreadLocalRandom.current().nextInt(dataSourceNames.size()));
@@ -68,29 +67,14 @@ public final class SingleTableRoutingEngine implements
ShardingRouteEngine {
return new RouteUnit(new RouteMapper(dataSource, dataSource),
Collections.singletonList(new RouteMapper(table, table)));
}
- private Collection<RouteUnit> getTargetRouteUnits(final ShardingRule
shardingRule) {
- Map<RouteMapper, Collection<RouteMapper>> result = new
LinkedHashMap<>();
+ private void fillRouteContext(final ShardingRule shardingRule, final
RouteContext routeContext) {
for (String each : logicTables) {
- if (shardingRule.getSingleTableRules().containsKey(each)) {
- fillRouteUnits(each,
shardingRule.getSingleTableRules().get(each).getDataSourceName(), result);
- } else if (containsDropTableIfExistClause()) {
- return
Collections.singletonList(getRandomRouteUnit(shardingRule));
- } else {
+ if (!shardingRule.getSingleTableRules().containsKey(each)) {
throw new ShardingSphereException("`%s` single table does not
exist.", each);
}
+ String dataSource =
shardingRule.getSingleTableRules().get(each).getDataSourceName();
+ RouteMapper dataSourceMapper = new RouteMapper(dataSource,
dataSource);
+ routeContext.putRouteUnit(dataSourceMapper, new RouteMapper(each,
each));
}
- return result.entrySet().stream().map(entry -> new
RouteUnit(entry.getKey(), entry.getValue())).collect(Collectors.toList());
- }
-
- private void fillRouteUnits(final String table, final String dataSource,
final Map<RouteMapper, Collection<RouteMapper>> routeMappers) {
- RouteMapper dataSourceMapper = new RouteMapper(dataSource, dataSource);
- if (!routeMappers.containsKey(dataSourceMapper)) {
- routeMappers.put(dataSourceMapper, new LinkedHashSet<>());
- }
- routeMappers.get(dataSourceMapper).add(new RouteMapper(table, table));
- }
-
- private boolean containsDropTableIfExistClause() {
- return sqlStatement instanceof DropTableStatement &&
DropTableStatementHandler.containsIfExistClause((DropTableStatement)
sqlStatement);
}
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
index 750958a..d2babfa 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactoryTest.java
@@ -29,7 +29,7 @@ import
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingDa
import
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingInstanceBroadcastRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingTableBroadcastRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.complex.ShardingComplexRoutingEngine;
-import
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTableRoutingEngine;
+import
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTablesRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.unicast.ShardingUnicastRoutingEngine;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
@@ -123,7 +123,7 @@ public final class ShardingRouteEngineFactoryTest {
when(sqlStatementContext.getTablesContext().getTableNames()).thenReturn(Collections.singletonList("tbl"));
when(shardingRule.tableRuleExists(sqlStatementContext.getTablesContext().getTableNames())).thenReturn(false);
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, metaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
}
@Test
@@ -228,7 +228,7 @@ public final class ShardingRouteEngineFactoryTest {
SQLStatement sqlStatement = mock(SQLStatement.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, metaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
}
@Test
@@ -238,7 +238,7 @@ public final class ShardingRouteEngineFactoryTest {
SQLStatement sqlStatement = mock(MySQLSelectStatement.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, metaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
}
@Test
@@ -280,8 +280,8 @@ public final class ShardingRouteEngineFactoryTest {
SQLStatement sqlStatement = mock(SQLStatement.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
tableNames.add("");
-
when(shardingRule.getShardingLogicTableNames(tableNames)).thenReturn(tableNames);
when(shardingRule.tableRuleExists(tableNames)).thenReturn(true);
+ when(shardingRule.isAllShardingTables(tableNames)).thenReturn(true);
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, metaData,
sqlStatementContext, shardingConditions, props);
assertThat(actual, instanceOf(ShardingStandardRoutingEngine.class));
}
@@ -292,7 +292,6 @@ public final class ShardingRouteEngineFactoryTest {
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
tableNames.add("1");
tableNames.add("2");
-
when(shardingRule.getShardingLogicTableNames(tableNames)).thenReturn(tableNames);
when(shardingRule.tableRuleExists(tableNames)).thenReturn(true);
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, metaData,
sqlStatementContext, shardingConditions, props);
assertThat(actual, instanceOf(ShardingComplexRoutingEngine.class));
@@ -315,7 +314,7 @@ public final class ShardingRouteEngineFactoryTest {
when(shardingRule.tableRuleExists(tableNames)).thenReturn(false);
tableNames.add("table_1");
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, metaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
}
@Test
@@ -335,7 +334,7 @@ public final class ShardingRouteEngineFactoryTest {
when(shardingRule.tableRuleExists(tableNames)).thenReturn(false);
tableNames.add("table_1");
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, metaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTablesRoutingEngine.class));
}
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngineTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngineTest.java
similarity index 89%
rename from
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngineTest.java
rename to
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngineTest.java
index d1169a9..5ebb272 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngineTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTablesRoutingEngineTest.java
@@ -40,17 +40,17 @@ import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
-public final class SingleTableRoutingEngineTest {
+public final class SingleTablesRoutingEngineTest {
@Test
public void assertRouteInSameDataSource() {
- SingleTableRoutingEngine singleTableRoutingEngine = new
SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), null);
+ SingleTablesRoutingEngine singleTablesRoutingEngine = new
SingleTablesRoutingEngine(Arrays.asList("t_order", "t_order_item"), null);
ShardingRuleConfiguration shardingRuleConfig = new
ShardingRuleConfiguration();
ShardingRule shardingRule = new ShardingRule(shardingRuleConfig,
mock(DatabaseType.class), createDataSourceMap());
shardingRule.getSingleTableRules().put("t_order", new
SingleTableRule("t_order", "ds_0"));
shardingRule.getSingleTableRules().put("t_order_item", new
SingleTableRule("t_order_item", "ds_0"));
RouteContext routeContext = new RouteContext();
- singleTableRoutingEngine.route(routeContext, shardingRule);
+ singleTablesRoutingEngine.route(routeContext, shardingRule);
List<RouteUnit> routeUnits = new
ArrayList<>(routeContext.getRouteUnits());
assertThat(routeContext.getRouteUnits().size(), is(1));
assertThat(routeUnits.get(0).getDataSourceMapper().getActualName(),
is("ds_0"));
@@ -67,13 +67,13 @@ public final class SingleTableRoutingEngineTest {
@Test
public void assertRouteInDifferentDataSource() {
- SingleTableRoutingEngine singleTableRoutingEngine = new
SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), null);
+ SingleTablesRoutingEngine singleTablesRoutingEngine = new
SingleTablesRoutingEngine(Arrays.asList("t_order", "t_order_item"), null);
ShardingRuleConfiguration shardingRuleConfig = new
ShardingRuleConfiguration();
ShardingRule shardingRule = new ShardingRule(shardingRuleConfig,
mock(DatabaseType.class), createDataSourceMap());
shardingRule.getSingleTableRules().put("t_order", new
SingleTableRule("t_order", "ds_0"));
shardingRule.getSingleTableRules().put("t_order_item", new
SingleTableRule("t_order_item", "ds_1"));
RouteContext routeContext = new RouteContext();
- singleTableRoutingEngine.route(routeContext, shardingRule);
+ singleTablesRoutingEngine.route(routeContext, shardingRule);
List<RouteUnit> routeUnits = new
ArrayList<>(routeContext.getRouteUnits());
assertThat(routeContext.getRouteUnits().size(), is(2));
assertThat(routeUnits.get(0).getDataSourceMapper().getActualName(),
is("ds_0"));
@@ -91,11 +91,11 @@ public final class SingleTableRoutingEngineTest {
@Test
public void assertRouteWithoutShardingRule() {
- SingleTableRoutingEngine singleTableRoutingEngine = new
SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"), new
MySQLCreateTableStatement());
+ SingleTablesRoutingEngine singleTablesRoutingEngine = new
SingleTablesRoutingEngine(Arrays.asList("t_order", "t_order_item"), new
MySQLCreateTableStatement());
ShardingRuleConfiguration shardingRuleConfig = new
ShardingRuleConfiguration();
ShardingRule shardingRule = new ShardingRule(shardingRuleConfig,
mock(DatabaseType.class), createDataSourceMap());
RouteContext routeContext = new RouteContext();
- singleTableRoutingEngine.route(routeContext, shardingRule);
+ singleTablesRoutingEngine.route(routeContext, shardingRule);
List<RouteUnit> routeUnits = new
ArrayList<>(routeContext.getRouteUnits());
assertThat(routeContext.getRouteUnits().size(), is(1));
assertThat(routeUnits.get(0).getTableMappers().size(), is(1));