You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/06/13 14:28:04 UTC

[shardingsphere] branch master updated: Refactor SingleTableRule.assignNewDataSourceName() (#18342)

This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang 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 f5ee13d7b20 Refactor SingleTableRule.assignNewDataSourceName() (#18342)
f5ee13d7b20 is described below

commit f5ee13d7b2070d23e30189057847bddde22389a7
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Jun 13 22:27:55 2022 +0800

    Refactor SingleTableRule.assignNewDataSourceName() (#18342)
    
    * Refactor ReadwriteSplittingRuleQueryResultSet
    
    * Refactor SingleTableRule.assignNewDataSourceName()
    
    * Refactor SingleTableRuleTest
    
    * Refactor SingleTableRuleTest
---
 .../engine/SingleTableStandardRouteEngine.java     | 56 +++++++---------------
 .../singletable/rule/SingleTableRule.java          | 27 ++++++-----
 .../singletable/rule/SingleTableRuleTest.java      | 37 +++++++-------
 .../rule/builder/SingleTableRuleBuilderTest.java   |  6 ---
 4 files changed, 51 insertions(+), 75 deletions(-)

diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
index 343511cdd7d..02c0a143381 100644
--- a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/engine/SingleTableStandardRouteEngine.java
@@ -31,13 +31,11 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTable
 import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.DropTableStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Optional;
-import java.util.concurrent.ThreadLocalRandom;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -80,48 +78,18 @@ public final class SingleTableStandardRouteEngine implements SingleTableRouteEng
     }
     
     private void route0(final RouteContext routeContext, final SingleTableRule rule) {
-        if (isTableDDLStatement() || rule.isAllTablesInSameDataSource(routeContext, singleTableNames)) {
-            Collection<QualifiedTable> existSingleTables = rule.getSingleTableNames(singleTableNames);
-            if (!existSingleTables.isEmpty()) {
-                fillRouteContext(rule, routeContext, existSingleTables);
-            } else {
-                RouteUnit routeUnit = rule.getDefaultDataSource().isPresent() ? getDefaultRouteUnit(rule.getDefaultDataSource().get()) : getRandomRouteUnit(rule);
-                routeContext.getRouteUnits().add(routeUnit);
-            }
+        if (sqlStatement instanceof CreateTableStatement) {
+            String dataSourceName = rule.assignNewDataSourceName();
+            String tableName = singleTableNames.iterator().next().getTableName();
+            routeContext.getRouteUnits().add(new RouteUnit(new RouteMapper(dataSourceName, dataSourceName), Collections.singleton(new RouteMapper(tableName, tableName))));
+        } else if (sqlStatement instanceof AlterTableStatement || sqlStatement instanceof DropTableStatement || rule.isAllTablesInSameDataSource(routeContext, singleTableNames)) {
+            fillRouteContext(rule, routeContext, rule.getSingleTableNames(singleTableNames));
         } else {
             decorateFederationRouteContext(routeContext);
             fillRouteContext(rule, routeContext, singleTableNames);
         }
     }
     
-    private void decorateFederationRouteContext(final RouteContext routeContext) {
-        RouteContext newRouteContext = new RouteContext();
-        for (RouteUnit each : routeContext.getRouteUnits()) {
-            newRouteContext.putRouteUnit(each.getDataSourceMapper(), each.getTableMappers());
-        }
-        routeContext.setFederated(true);
-        routeContext.getRouteUnits().clear();
-        routeContext.getOriginalDataNodes().clear();
-        routeContext.getRouteUnits().addAll(newRouteContext.getRouteUnits());
-        routeContext.getOriginalDataNodes().addAll(newRouteContext.getOriginalDataNodes());
-    }
-    
-    private boolean isTableDDLStatement() {
-        return sqlStatement instanceof CreateTableStatement || sqlStatement instanceof AlterTableStatement || sqlStatement instanceof DropTableStatement;
-    }
-    
-    private RouteUnit getRandomRouteUnit(final SingleTableRule singleTableRule) {
-        Collection<String> dataSourceNames = singleTableRule.getDataSourceNames();
-        String dataSource = new ArrayList<>(dataSourceNames).get(ThreadLocalRandom.current().nextInt(dataSourceNames.size()));
-        String table = singleTableNames.iterator().next().getTableName();
-        return new RouteUnit(new RouteMapper(dataSource, dataSource), Collections.singleton(new RouteMapper(table, table)));
-    }
-    
-    private RouteUnit getDefaultRouteUnit(final String dataSource) {
-        String table = singleTableNames.iterator().next().getTableName();
-        return new RouteUnit(new RouteMapper(dataSource, dataSource), Collections.singleton(new RouteMapper(table, table)));
-    }
-    
     private void fillRouteContext(final SingleTableRule singleTableRule, final RouteContext routeContext, final Collection<QualifiedTable> logicTables) {
         for (QualifiedTable each : logicTables) {
             String tableName = each.getTableName();
@@ -133,4 +101,16 @@ public final class SingleTableStandardRouteEngine implements SingleTableRouteEng
             routeContext.putRouteUnit(new RouteMapper(dataSource, dataSource), Collections.singletonList(new RouteMapper(tableName, tableName)));
         }
     }
+    
+    private void decorateFederationRouteContext(final RouteContext routeContext) {
+        RouteContext newRouteContext = new RouteContext();
+        for (RouteUnit each : routeContext.getRouteUnits()) {
+            newRouteContext.putRouteUnit(each.getDataSourceMapper(), each.getTableMappers());
+        }
+        routeContext.setFederated(true);
+        routeContext.getRouteUnits().clear();
+        routeContext.getOriginalDataNodes().clear();
+        routeContext.getRouteUnits().addAll(newRouteContext.getRouteUnits());
+        routeContext.getOriginalDataNodes().addAll(newRouteContext.getOriginalDataNodes());
+    }
 }
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
index ee8ce87308a..20c2e7e765e 100644
--- a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
@@ -36,6 +36,7 @@ import org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration
 import org.apache.shardingsphere.singletable.datanode.SingleTableDataNodeLoader;
 
 import javax.sql.DataSource;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -46,29 +47,31 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.TreeSet;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.Collectors;
 
 /**
  * Single table rule.
  */
-@Getter
 public final class SingleTableRule implements DatabaseRule, DataNodeContainedRule, TableContainedRule, MutableDataNodeRule, ExportableRule {
     
-    private String defaultDataSource;
+    private final String defaultDataSource;
     
+    @Getter
     private final Collection<String> dataSourceNames;
     
+    @Getter
     private final Map<String, Collection<DataNode>> singleTableDataNodes;
     
     private final Map<String, String> tableNames;
     
     public SingleTableRule(final SingleTableRuleConfiguration config, final String databaseName, final DatabaseType databaseType,
                            final Map<String, DataSource> dataSourceMap, final Collection<ShardingSphereRule> builtRules, final ConfigurationProperties props) {
+        defaultDataSource = config.getDefaultDataSource().orElse(null);
         Map<String, DataSource> aggregateDataSourceMap = getAggregateDataSourceMap(dataSourceMap, builtRules);
         dataSourceNames = aggregateDataSourceMap.keySet();
         singleTableDataNodes = SingleTableDataNodeLoader.load(databaseName, databaseType, aggregateDataSourceMap, getExcludedTables(builtRules), props);
         tableNames = singleTableDataNodes.entrySet().stream().collect(Collectors.toConcurrentMap(Entry::getKey, entry -> entry.getValue().iterator().next().getTableName()));
-        config.getDefaultDataSource().ifPresent(optional -> defaultDataSource = optional);
     }
     
     private Map<String, DataSource> getAggregateDataSourceMap(final Map<String, DataSource> dataSourceMap, final Collection<ShardingSphereRule> builtRules) {
@@ -94,6 +97,15 @@ public final class SingleTableRule implements DatabaseRule, DataNodeContainedRul
         return result;
     }
     
+    /**
+     * Assign new data source name.
+     *
+     * @return assigned data source name
+     */
+    public String assignNewDataSourceName() {
+        return null == defaultDataSource ? new ArrayList<>(dataSourceNames).get(ThreadLocalRandom.current().nextInt(dataSourceNames.size())) : defaultDataSource;
+    }
+    
     /**
      * Judge whether single tables are in same data source or not.
      *
@@ -141,15 +153,6 @@ public final class SingleTableRule implements DatabaseRule, DataNodeContainedRul
         return true;
     }
     
-    /**
-     * Get default data source.
-     *
-     * @return default data source
-     */
-    public Optional<String> getDefaultDataSource() {
-        return Optional.ofNullable(defaultDataSource);
-    }
-    
     /**
      * Get single table names.
      *
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
index ba966648017..a19dca6bf95 100644
--- a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/SingleTableRuleTest.java
@@ -92,7 +92,7 @@ public final class SingleTableRuleTest {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         when(dataNodeContainedRule.getAllTables()).thenReturn(Arrays.asList("t_order", "t_order_0", "t_order_1"));
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         Map<String, Collection<DataNode>> actual = singleTableRule.getSingleTableDataNodes();
         assertThat(actual.size(), is(2));
         assertTrue(actual.containsKey("employee"));
@@ -104,7 +104,7 @@ public final class SingleTableRuleTest {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         when(dataNodeContainedRule.getAllTables()).thenReturn(Arrays.asList("T_ORDER", "T_ORDER_0", "T_ORDER_1"));
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         Map<String, Collection<DataNode>> actual = singleTableRule.getSingleTableDataNodes();
         assertThat(actual.size(), is(2));
         assertTrue(actual.containsKey("employee"));
@@ -115,7 +115,7 @@ public final class SingleTableRuleTest {
     public void assertFindSingleTableDataNode() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         Optional<DataNode> actual = singleTableRule.findSingleTableDataNode(DefaultDatabase.LOGIC_NAME, "employee");
         assertTrue(actual.isPresent());
         assertThat(actual.get().getDataSourceName(), is("ds_0"));
@@ -126,7 +126,7 @@ public final class SingleTableRuleTest {
     public void assertFindSingleTableDataNodeWithUpperCase() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         Optional<DataNode> actual = singleTableRule.findSingleTableDataNode(DefaultDatabase.LOGIC_NAME, "EMPLOYEE");
         assertTrue(actual.isPresent());
         assertThat(actual.get().getDataSourceName(), is("ds_0"));
@@ -137,7 +137,7 @@ public final class SingleTableRuleTest {
     public void assertIsSingleTablesInSameDataSource() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         Collection<QualifiedTable> singleTableNames = new LinkedList<>();
         singleTableNames.add(new QualifiedTable(DefaultDatabase.LOGIC_NAME, "employee"));
         assertTrue(singleTableRule.isSingleTablesInSameDataSource(singleTableNames));
@@ -154,26 +154,25 @@ public final class SingleTableRuleTest {
         routeContext.putRouteUnit(dataSourceMapper, tableMappers);
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         assertTrue(singleTableRule.isAllTablesInSameDataSource(routeContext, singleTableNames));
     }
     
     @Test
-    public void assertGetDefaultDataSource() {
+    public void assertAssignNewDataSourceName() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRuleConfiguration singleTableRuleConfig = new SingleTableRuleConfiguration();
         singleTableRuleConfig.setDefaultDataSource("ds_0");
         SingleTableRule singleTableRule = new SingleTableRule(singleTableRuleConfig, DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
-        assertTrue(singleTableRule.getDefaultDataSource().isPresent());
-        assertThat(singleTableRule.getDefaultDataSource().get(), is("ds_0"));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+        assertThat(singleTableRule.assignNewDataSourceName(), is("ds_0"));
     }
     
     @Test
     public void assertGetSingleTableNames() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         Collection<QualifiedTable> tableNames = new LinkedList<>();
         tableNames.add(new QualifiedTable(DefaultDatabase.LOGIC_NAME, "employee"));
         assertThat(singleTableRule.getSingleTableNames(tableNames).iterator().next().getSchemaName(), is(DefaultDatabase.LOGIC_NAME));
@@ -184,7 +183,7 @@ public final class SingleTableRuleTest {
     public void assertPut() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         String tableName = "teacher";
         String dataSourceName = "ds_0";
         singleTableRule.put(dataSourceName, DefaultDatabase.LOGIC_NAME, tableName);
@@ -203,7 +202,7 @@ public final class SingleTableRuleTest {
     public void assertRemove() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         String tableName = "employee";
         singleTableRule.remove(DefaultDatabase.LOGIC_NAME, tableName);
         Collection<QualifiedTable> tableNames = new LinkedList<>();
@@ -218,7 +217,7 @@ public final class SingleTableRuleTest {
     public void assertGetAllDataNodes() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         assertTrue(singleTableRule.getAllDataNodes().containsKey("employee"));
         assertTrue(singleTableRule.getAllDataNodes().containsKey("student"));
         assertTrue(singleTableRule.getAllDataNodes().containsKey("t_order_0"));
@@ -229,7 +228,7 @@ public final class SingleTableRuleTest {
     public void assertGetDataNodesByTableName() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         Collection<DataNode> actual = singleTableRule.getDataNodesByTableName("EMPLOYEE");
         assertThat(actual.size(), is(1));
         DataNode dataNode = actual.iterator().next();
@@ -241,7 +240,7 @@ public final class SingleTableRuleTest {
     public void assertFindFirstActualTable() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         String logicTable = "employee";
         assertFalse(singleTableRule.findFirstActualTable(logicTable).isPresent());
     }
@@ -250,7 +249,7 @@ public final class SingleTableRuleTest {
     public void assertIsNeedAccumulate() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         assertFalse(singleTableRule.isNeedAccumulate(Collections.emptyList()));
     }
     
@@ -258,7 +257,7 @@ public final class SingleTableRuleTest {
     public void assertFindLogicTableByActualTable() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         String actualTable = "student";
         assertFalse(singleTableRule.findLogicTableByActualTable(actualTable).isPresent());
     }
@@ -267,7 +266,7 @@ public final class SingleTableRuleTest {
     public void assertFindActualTableByCatalog() {
         DataNodeContainedRule dataNodeContainedRule = mock(DataNodeContainedRule.class);
         SingleTableRule singleTableRule = new SingleTableRule(new SingleTableRuleConfiguration(), DefaultDatabase.LOGIC_NAME, mock(DatabaseType.class), dataSourceMap,
-                Collections.singletonList(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
+                Collections.singleton(dataNodeContainedRule), new ConfigurationProperties(new Properties()));
         String catalog = "employee";
         String logicTable = "t_order_0";
         assertFalse(singleTableRule.findActualTableByCatalog(catalog, logicTable).isPresent());
diff --git a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/builder/SingleTableRuleBuilderTest.java b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/builder/SingleTableRuleBuilderTest.java
index 50a725fee2a..945f6445910 100644
--- a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/builder/SingleTableRuleBuilderTest.java
+++ b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/rule/builder/SingleTableRuleBuilderTest.java
@@ -32,10 +32,7 @@ import java.util.Collections;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 
 public final class SingleTableRuleBuilderTest {
@@ -49,7 +46,6 @@ public final class SingleTableRuleBuilderTest {
         ShardingSphereRule shardingSphereRule = mock(ShardingSphereRule.class);
         DatabaseRule databaseRule = builder.build(config, "", Collections.emptyMap(), Collections.singletonList(shardingSphereRule), new ConfigurationProperties(createProperties()));
         assertThat(databaseRule, instanceOf(SingleTableRule.class));
-        assertFalse(((SingleTableRule) databaseRule).getDefaultDataSource().isPresent());
     }
     
     @SuppressWarnings({"rawtypes", "unchecked"})
@@ -62,8 +58,6 @@ public final class SingleTableRuleBuilderTest {
         config.setDefaultDataSource("ds_0");
         DatabaseRule databaseRule = builder.build(config, "", Collections.emptyMap(), Collections.singletonList(shardingSphereRule), new ConfigurationProperties(createProperties()));
         assertThat(databaseRule, instanceOf(SingleTableRule.class));
-        assertTrue(((SingleTableRule) databaseRule).getDefaultDataSource().isPresent());
-        assertThat(((SingleTableRule) databaseRule).getDefaultDataSource().get(), is("ds_0"));
     }
     
     private Properties createProperties() {