This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 1161dde Rename ShardingUnconfiguredTablesRoutingEngine to
SingleTableRoutingEngine (#8010)
1161dde is described below
commit 1161ddee801ba60ab10ce4018d528a9e0cd09969
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Nov 2 20:59:18 2020 +0800
Rename ShardingUnconfiguredTablesRoutingEngine to SingleTableRoutingEngine
(#8010)
---
.../engine/type/ShardingRouteEngineFactory.java | 33 ++++++++++------------
.../SingleTableRoutingEngine.java} | 18 ++++++------
.../type/ShardingRouteEngineFactoryTest.java | 22 +++++++--------
.../SingleTableRoutingEngineTest.java} | 30 ++++++++++----------
.../engine/type/standard/AbstractSQLRouteTest.java | 4 ++-
5 files changed, 53 insertions(+), 54 deletions(-)
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 ac6d65a..0fa1ee3 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
@@ -23,7 +23,6 @@ import
org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.type.TableAvailable;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import org.apache.shardingsphere.infra.metadata.model.ShardingSphereMetaData;
-import
org.apache.shardingsphere.infra.metadata.model.logic.LogicSchemaMetaData;
import
org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions;
import
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingDataSourceGroupBroadcastRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingDatabaseBroadcastRoutingEngine;
@@ -32,7 +31,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.standard.ShardingStandardRoutingEngine;
-import
org.apache.shardingsphere.sharding.route.engine.type.unconfigured.ShardingUnconfiguredTablesRoutingEngine;
+import
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTableRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.unicast.ShardingUnicastRoutingEngine;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
@@ -54,7 +53,6 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQ
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dal.PostgreSQLResetParameterStatement;
import java.util.Collection;
-import java.util.Map;
/**
* Sharding routing engine factory.
@@ -80,13 +78,13 @@ public final class ShardingRouteEngineFactory {
return new ShardingDatabaseBroadcastRoutingEngine();
}
if (sqlStatement instanceof DDLStatement) {
- return getDDLRoutingEngine(shardingRule,
metaData.getSchemaMetaData(), sqlStatementContext);
+ return getDDLRoutingEngine(shardingRule, metaData,
sqlStatementContext);
}
if (sqlStatement instanceof DALStatement) {
- return getDALRoutingEngine(shardingRule,
metaData.getSchemaMetaData().getUnconfiguredSchemaMetaDataMap(), sqlStatement,
tableNames);
+ return getDALRoutingEngine(shardingRule, metaData, sqlStatement,
tableNames);
}
if (sqlStatement instanceof DCLStatement) {
- return getDCLRoutingEngine(shardingRule,
metaData.getSchemaMetaData().getUnconfiguredSchemaMetaDataMap(),
sqlStatementContext, metaData);
+ return getDCLRoutingEngine(shardingRule, metaData,
sqlStatementContext);
}
if (shardingRule.isAllBroadcastTables(tableNames)) {
return sqlStatement instanceof SelectStatement ? new
ShardingUnicastRoutingEngine(tableNames) : new
ShardingDatabaseBroadcastRoutingEngine();
@@ -95,12 +93,12 @@ public final class ShardingRouteEngineFactory {
return new ShardingUnicastRoutingEngine(tableNames);
}
if (!shardingRule.tableRuleExists(tableNames)) {
- return new ShardingUnconfiguredTablesRoutingEngine(tableNames,
metaData.getSchemaMetaData().getUnconfiguredSchemaMetaDataMap(), sqlStatement);
+ return new SingleTableRoutingEngine(tableNames,
metaData.getTableAddressingMetaData(), sqlStatement);
}
return getShardingRoutingEngine(shardingRule, shardingConditions,
tableNames, props);
}
- private static ShardingRouteEngine getDDLRoutingEngine(final ShardingRule
shardingRule, final LogicSchemaMetaData schemaMetaData, final
SQLStatementContext<?> sqlStatementContext) {
+ private static ShardingRouteEngine getDDLRoutingEngine(final ShardingRule
shardingRule, final ShardingSphereMetaData metaData, final
SQLStatementContext<?> sqlStatementContext) {
SQLStatement sqlStatement = sqlStatementContext.getSqlStatement();
boolean functionStatement = sqlStatement instanceof
CreateFunctionStatement || sqlStatement instanceof AlterFunctionStatement ||
sqlStatement instanceof DropFunctionStatement;
boolean procedureStatement = sqlStatement instanceof
CreateProcedureStatement || sqlStatement instanceof AlterProcedureStatement ||
sqlStatement instanceof DropProcedureStatement;
@@ -109,12 +107,12 @@ public final class ShardingRouteEngineFactory {
}
Collection<String> tableNames =
sqlStatementContext.getTablesContext().getTableNames();
if (!tableNames.isEmpty() &&
!shardingRule.tableRuleExists(tableNames)) {
- return new ShardingUnconfiguredTablesRoutingEngine(tableNames,
schemaMetaData.getUnconfiguredSchemaMetaDataMap(), sqlStatement);
+ return new SingleTableRoutingEngine(tableNames,
metaData.getTableAddressingMetaData(), sqlStatement);
}
- return new
ShardingTableBroadcastRoutingEngine(schemaMetaData.getConfiguredSchemaMetaData(),
sqlStatementContext);
+ return new
ShardingTableBroadcastRoutingEngine(metaData.getSchemaMetaData().getSchemaMetaData(),
sqlStatementContext);
}
- private static ShardingRouteEngine getDALRoutingEngine(final ShardingRule
shardingRule, final Map<String, Collection<String>>
unconfiguredSchemaMetaDataMap,
+ private static ShardingRouteEngine getDALRoutingEngine(final ShardingRule
shardingRule, final ShardingSphereMetaData metaData,
final SQLStatement
sqlStatement, final Collection<String> tableNames) {
if (sqlStatement instanceof MySQLUseStatement) {
return new ShardingIgnoreRoutingEngine();
@@ -123,7 +121,7 @@ public final class ShardingRouteEngineFactory {
return new ShardingDatabaseBroadcastRoutingEngine();
}
if (!tableNames.isEmpty() &&
!shardingRule.tableRuleExists(tableNames)) {
- return new ShardingUnconfiguredTablesRoutingEngine(tableNames,
unconfiguredSchemaMetaDataMap, sqlStatement);
+ return new SingleTableRoutingEngine(tableNames,
metaData.getTableAddressingMetaData(), sqlStatement);
}
if (!tableNames.isEmpty()) {
return new ShardingUnicastRoutingEngine(tableNames);
@@ -131,19 +129,18 @@ public final class ShardingRouteEngineFactory {
return new ShardingDataSourceGroupBroadcastRoutingEngine();
}
- private static ShardingRouteEngine getDCLRoutingEngine(final ShardingRule
shardingRule, final Map<String, Collection<String>>
unconfiguredSchemaMetaDataMap,
- final
SQLStatementContext sqlStatementContext, final ShardingSphereMetaData metaData)
{
+ private static ShardingRouteEngine getDCLRoutingEngine(final ShardingRule
shardingRule, final ShardingSphereMetaData metaData, final
SQLStatementContext<?> sqlStatementContext) {
if (isDCLForSingleTable(sqlStatementContext)) {
Collection<String> tableNames =
sqlStatementContext.getTablesContext().getTableNames();
- return !shardingRule.tableRuleExists(tableNames)
- ? new ShardingUnconfiguredTablesRoutingEngine(tableNames,
unconfiguredSchemaMetaDataMap, sqlStatementContext.getSqlStatement())
- : new
ShardingTableBroadcastRoutingEngine(metaData.getSchemaMetaData().getConfiguredSchemaMetaData(),
sqlStatementContext);
+ return shardingRule.tableRuleExists(tableNames)
+ ? new
ShardingTableBroadcastRoutingEngine(metaData.getSchemaMetaData().getConfiguredSchemaMetaData(),
sqlStatementContext)
+ : new SingleTableRoutingEngine(tableNames,
metaData.getTableAddressingMetaData(), sqlStatementContext.getSqlStatement());
} else {
return new
ShardingInstanceBroadcastRoutingEngine(metaData.getDataSourcesMetaData());
}
}
- private static boolean isDCLForSingleTable(final SQLStatementContext
sqlStatementContext) {
+ private static boolean isDCLForSingleTable(final SQLStatementContext<?>
sqlStatementContext) {
if (sqlStatementContext instanceof TableAvailable) {
TableAvailable tableSegmentsAvailable = (TableAvailable)
sqlStatementContext;
return 1 == tableSegmentsAvailable.getAllTables().size() &&
!"*".equals(tableSegmentsAvailable.getAllTables().iterator().next().getTableName().getIdentifier().getValue());
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/unconfigured/ShardingUnconfiguredTablesRoutingEngine.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngine.java
similarity index 81%
rename from
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/unconfigured/ShardingUnconfiguredTablesRoutingEngine.java
rename to
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngine.java
index fefef35..6e98a13 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/unconfigured/ShardingUnconfiguredTablesRoutingEngine.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngine.java
@@ -15,11 +15,12 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.route.engine.type.unconfigured;
+package org.apache.shardingsphere.sharding.route.engine.type.single;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
+import
org.apache.shardingsphere.infra.metadata.model.addressing.TableAddressingMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -30,21 +31,19 @@ import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTable
import java.util.Collection;
import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
import java.util.Optional;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors;
/**
- * Sharding unconfigured tables engine.
+ * Single table engine.
*/
@RequiredArgsConstructor
-public final class ShardingUnconfiguredTablesRoutingEngine implements
ShardingRouteEngine {
+public final class SingleTableRoutingEngine implements ShardingRouteEngine {
private final Collection<String> logicTables;
- private final Map<String, Collection<String>>
unconfiguredSchemaMetaDataMap;
+ private final TableAddressingMetaData tableAddressingMetaData;
private final SQLStatement sqlStatement;
@@ -58,10 +57,11 @@ public final class ShardingUnconfiguredTablesRoutingEngine
implements ShardingRo
routeContext.getRouteUnits().add(new RouteUnit(new
RouteMapper(dataSourceName.get(), dataSourceName.get()), routingTables));
}
+ // TODO maybe enhance here, only return one data source for multiple
tables for now
private Optional<String> findDataSourceName() {
- for (Entry<String, Collection<String>> entry :
unconfiguredSchemaMetaDataMap.entrySet()) {
- if (entry.getValue().containsAll(logicTables)) {
- return Optional.of(entry.getKey());
+ for (String each : logicTables) {
+ if
(tableAddressingMetaData.getTableDataSourceNamesMapper().containsKey(each)) {
+ return
Optional.of(tableAddressingMetaData.getTableDataSourceNamesMapper().get(each).iterator().next());
}
}
return Optional.empty();
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 8536508..2855a2f 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
@@ -30,7 +30,7 @@ import
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingIn
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.standard.ShardingStandardRoutingEngine;
-import
org.apache.shardingsphere.sharding.route.engine.type.unconfigured.ShardingUnconfiguredTablesRoutingEngine;
+import
org.apache.shardingsphere.sharding.route.engine.type.single.SingleTableRoutingEngine;
import
org.apache.shardingsphere.sharding.route.engine.type.unicast.ShardingUnicastRoutingEngine;
import org.apache.shardingsphere.sharding.rule.ShardingRule;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
@@ -122,7 +122,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, shardingSphereMetaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual,
instanceOf(ShardingUnconfiguredTablesRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
}
@Test
@@ -221,27 +221,27 @@ public final class ShardingRouteEngineFactoryTest {
}
@Test
- public void assertNewInstanceForUnconfiguredTables() {
+ public void assertNewInstanceForSingleTable() {
tableNames.add("tbl");
when(shardingRule.tableRuleExists(tableNames)).thenReturn(false);
SQLStatement sqlStatement = mock(SQLStatement.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, shardingSphereMetaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual,
instanceOf(ShardingUnconfiguredTablesRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
}
@Test
- public void assertNewInstanceForSelectWithUnconfiguredTables() {
+ public void assertNewInstanceForSelectWithSingleTable() {
tableNames.add("tbl");
when(shardingRule.tableRuleExists(tableNames)).thenReturn(false);
SQLStatement sqlStatement = mock(MySQLSelectStatement.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, shardingSphereMetaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual,
instanceOf(ShardingUnconfiguredTablesRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
}
@Test
- public void assertNewInstanceForSelectWithoutUnconfiguredTables() {
+ public void assertNewInstanceForSelectWithoutSingleTable() {
SQLStatement sqlStatement = mock(MySQLSelectStatement.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, shardingSphereMetaData,
sqlStatementContext, shardingConditions, props);
@@ -308,13 +308,13 @@ public final class ShardingRouteEngineFactoryTest {
}
@Test
- public void assertNewInstanceForShowCreateTableWithUnconfiguredTables() {
+ public void assertNewInstanceForShowCreateTableWithSingleTable() {
DALStatement dalStatement = mock(MySQLShowCreateTableStatement.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(dalStatement);
when(shardingRule.tableRuleExists(tableNames)).thenReturn(false);
tableNames.add("table_1");
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, shardingSphereMetaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual,
instanceOf(ShardingUnconfiguredTablesRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
}
@Test
@@ -328,13 +328,13 @@ public final class ShardingRouteEngineFactoryTest {
}
@Test
- public void assertNewInstanceForShowColumnsWithUnconfiguredTables() {
+ public void assertNewInstanceForShowColumnsWithSingleTable() {
DALStatement dalStatement = mock(MySQLShowColumnsStatement.class);
when(sqlStatementContext.getSqlStatement()).thenReturn(dalStatement);
when(shardingRule.tableRuleExists(tableNames)).thenReturn(false);
tableNames.add("table_1");
ShardingRouteEngine actual =
ShardingRouteEngineFactory.newInstance(shardingRule, shardingSphereMetaData,
sqlStatementContext, shardingConditions, props);
- assertThat(actual,
instanceOf(ShardingUnconfiguredTablesRoutingEngine.class));
+ assertThat(actual, instanceOf(SingleTableRoutingEngine.class));
}
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/unconfigured/ShardingUnconfiguredTablesRoutingEngineTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngineTest.java
similarity index 74%
rename from
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/unconfigured/ShardingUnconfiguredTablesRoutingEngineTest.java
rename to
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngineTest.java
index 67f3706..8f6ebbe 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/unconfigured/ShardingUnconfiguredTablesRoutingEngineTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/single/SingleTableRoutingEngineTest.java
@@ -15,8 +15,9 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.route.engine.type.unconfigured;
+package org.apache.shardingsphere.sharding.route.engine.type.single;
+import
org.apache.shardingsphere.infra.metadata.model.addressing.TableAddressingMetaData;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
@@ -27,27 +28,22 @@ import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
-public final class ShardingUnconfiguredTablesRoutingEngineTest {
+public final class SingleTableRoutingEngineTest {
@Test
public void assertRoute() {
- Map<String, Collection<String>> unconfiguredSchemaMetaDataMap = new
HashMap<>(1, 1);
- unconfiguredSchemaMetaDataMap.put("ds_0", Arrays.asList("t_order",
"t_order_item"));
- ShardingUnconfiguredTablesRoutingEngine
shardingDefaultDatabaseRoutingEngine
- = new
ShardingUnconfiguredTablesRoutingEngine(Arrays.asList("t_order",
"t_order_item"), unconfiguredSchemaMetaDataMap, null);
+ SingleTableRoutingEngine singleTableRoutingEngine = new
SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"),
createTableAddressingMetaData(), null);
ShardingRuleConfiguration shardingRuleConfig = new
ShardingRuleConfiguration();
ShardingRule shardingRule = new ShardingRule(shardingRuleConfig,
Arrays.asList("ds_0", "ds_1"));
RouteContext routeContext = new RouteContext();
- shardingDefaultDatabaseRoutingEngine.route(routeContext, shardingRule);
+ singleTableRoutingEngine.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"));
@@ -63,14 +59,11 @@ public final class
ShardingUnconfiguredTablesRoutingEngineTest {
@Test
public void assertRouteWithoutShardingRule() {
- Map<String, Collection<String>> unconfiguredSchemaMetaDataMap = new
HashMap<>(1, 1);
- unconfiguredSchemaMetaDataMap.put("ds_0", Arrays.asList("t_order",
"t_order_item"));
- ShardingUnconfiguredTablesRoutingEngine
shardingDefaultDatabaseRoutingEngine
- = new
ShardingUnconfiguredTablesRoutingEngine(Arrays.asList("t_order",
"t_order_item"), unconfiguredSchemaMetaDataMap, new
MySQLCreateTableStatement());
+ SingleTableRoutingEngine singleTableRoutingEngine = new
SingleTableRoutingEngine(Arrays.asList("t_order", "t_order_item"),
createTableAddressingMetaData(), new MySQLCreateTableStatement());
ShardingRuleConfiguration shardingRuleConfig = new
ShardingRuleConfiguration();
ShardingRule shardingRule = new ShardingRule(shardingRuleConfig,
Arrays.asList("ds_0", "ds_1"));
RouteContext routeContext = new RouteContext();
- shardingDefaultDatabaseRoutingEngine.route(routeContext, shardingRule);
+ singleTableRoutingEngine.route(routeContext, shardingRule);
List<RouteUnit> routeUnits = new
ArrayList<>(routeContext.getRouteUnits());
assertThat(routeContext.getRouteUnits().size(), is(1));
assertThat(routeUnits.get(0).getTableMappers().size(), is(2));
@@ -82,4 +75,11 @@ public final class
ShardingUnconfiguredTablesRoutingEngineTest {
assertThat(tableMapper1.getActualName(), is("t_order_item"));
assertThat(tableMapper1.getLogicName(), is("t_order_item"));
}
+
+ private TableAddressingMetaData createTableAddressingMetaData() {
+ TableAddressingMetaData result = new TableAddressingMetaData();
+ result.getTableDataSourceNamesMapper().put("t_order",
Collections.singletonList("ds_0"));
+ result.getTableDataSourceNamesMapper().put("t_order_item",
Collections.singletonList("ds_0"));
+ return result;
+ }
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
index 84990e4..a9966f3 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-route/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/standard/AbstractSQLRouteTest.java
@@ -55,7 +55,9 @@ public abstract class AbstractSQLRouteTest extends
AbstractRoutingEngineTest {
protected final RouteContext assertRoute(final String sql, final
List<Object> parameters) {
ShardingRule shardingRule = createAllShardingRule();
- ShardingSphereMetaData metaData = new
ShardingSphereMetaData(buildDataSourceMetas(), buildLogicSchemaMetaData(),
mock(TableAddressingMetaData.class), mock(CachedDatabaseMetaData.class));
+ TableAddressingMetaData tableAddressingMetaData = new
TableAddressingMetaData();
+
tableAddressingMetaData.getTableDataSourceNamesMapper().put("t_category",
Collections.singletonList("single_db"));
+ ShardingSphereMetaData metaData = new
ShardingSphereMetaData(buildDataSourceMetas(), buildLogicSchemaMetaData(),
tableAddressingMetaData, mock(CachedDatabaseMetaData.class));
ConfigurationProperties props = new ConfigurationProperties(new
Properties());
SQLStatementParserEngine sqlStatementParserEngine = new
SQLStatementParserEngine("MySQL");
SQLStatementContext<?> sqlStatementContext =
SQLStatementContextFactory.newInstance(