You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by ji...@apache.org on 2022/11/01 06:32:51 UTC

[shardingsphere] branch master updated: Optimize distsql about storage unit (#21870)

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

jianglongtao 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 79aed431a64 Optimize distsql about storage unit (#21870)
79aed431a64 is described below

commit 79aed431a64c2cebd043668dc8139c1cdd6a7adb
Author: jiangML <10...@qq.com>
AuthorDate: Tue Nov 1 14:32:41 2022 +0800

    Optimize distsql about storage unit (#21870)
    
    * Rename storage unit related classes & optimize test
    
    * Update distsql tests on storage unit
    
    * update test case
    
    * Modify class description
    
    * Modify class description
---
 .../rql/show/ShowStorageUnitsStatement.java        |  11 +-
 .../rql/show/ShowUnusedResourcesStatement.java     |  39 -----
 .../resource/DuplicateResourceException.java       |   2 +-
 .../resource/InvalidResourcesException.java        |   2 +-
 .../MissingRequiredResourcesException.java         |   2 +-
 .../distsql/rdl/RDLBackendHandlerFactory.java      |  12 +-
 ...er.java => AlterStorageUnitBackendHandler.java} |   6 +-
 ...java => RegisterStorageUnitBackendHandler.java} |   6 +-
 ...va => UnregisterStorageUnitBackendHandler.java} |   6 +-
 ...sultSet.java => StorageUnitQueryResultSet.java} |  20 +--
 .../resource/UnusedDataSourceQueryResultSet.java   | 162 ---------------------
 ...dingsphere.infra.distsql.query.DistSQLResultSet |   3 +-
 .../distsql/DistSQLBackendHandlerFactoryTest.java  |   8 -
 .../distsql/rdl/RDLBackendHandlerFactoryTest.java  |  18 +--
 ...ava => AlterStorageUnitBackendHandlerTest.java} |  26 ++--
 ... => RegisterStorageUnitBackendHandlerTest.java} |  20 +--
 ...> UnregisterStorageUnitBackendHandlerTest.java} |  30 ++--
 .../distsql/rql/DataSourceQueryResultSetTest.java  |  85 -----------
 ...est.java => StorageUnitQueryResultSetTest.java} |  38 ++++-
 .../statement/available/FromDatabaseAvailable.java |   4 +-
 .../statement/distsql/rdl/RDLStatementAssert.java  |  18 +--
 ...t.java => AlterStorageUnitStatementAssert.java} |   8 +-
 ...ava => RegisterStorageUnitStatementAssert.java} |   8 +-
 ...a => UnregisterStorageUnitStatementAssert.java} |   8 +-
 .../jaxb/cases/domain/SQLParserTestCases.java      |  18 +--
 ...java => AlterStorageUnitStatementTestCase.java} |   4 +-
 ...a => RegisterStorageUnitStatementTestCase.java} |   4 +-
 ...=> UnregisterStorageUnitStatementTestCase.java} |   4 +-
 test/parser/src/main/resources/case/dal/alter.xml  |   4 +-
 test/parser/src/main/resources/case/rdl/alter.xml  |  36 ++---
 test/parser/src/main/resources/case/rdl/create.xml |  40 ++---
 test/parser/src/main/resources/case/rdl/drop.xml   |  12 +-
 .../src/main/resources/sql/supported/rdl/alter.xml |  18 +--
 .../main/resources/sql/supported/rdl/create.xml    |  20 +--
 .../src/main/resources/sql/supported/rdl/drop.xml  |   6 +-
 35 files changed, 226 insertions(+), 482 deletions(-)

diff --git a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowStorageUnitsStatement.java b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowStorageUnitsStatement.java
index 132e7221c37..6dc6486812f 100644
--- a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowStorageUnitsStatement.java
+++ b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowStorageUnitsStatement.java
@@ -26,7 +26,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.statement.available.FromD
 import java.util.Optional;
 
 /**
- * Show resources statement.
+ * Show storage unit statement.
  */
 @Getter
 @RequiredArgsConstructor
@@ -40,4 +40,13 @@ public final class ShowStorageUnitsStatement extends RQLStatement implements Fro
     public Optional<DatabaseSegment> getDatabase() {
         return Optional.ofNullable(database);
     }
+    
+    /**
+     * get usage count.
+     * 
+     * @return usage count
+     */
+    public Optional<Integer> getUsageCount() {
+        return Optional.ofNullable(usageCount);
+    }
 }
diff --git a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowUnusedResourcesStatement.java b/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowUnusedResourcesStatement.java
deleted file mode 100644
index 1a87ed16115..00000000000
--- a/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowUnusedResourcesStatement.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.distsql.parser.statement.rql.show;
-
-import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.statement.rql.RQLStatement;
-import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.available.FromDatabaseAvailable;
-
-import java.util.Optional;
-
-/**
- * Show unused resources statement.
- */
-@RequiredArgsConstructor
-public final class ShowUnusedResourcesStatement extends RQLStatement implements FromDatabaseAvailable {
-    
-    private final DatabaseSegment database;
-    
-    @Override
-    public Optional<DatabaseSegment> getDatabase() {
-        return Optional.ofNullable(database);
-    }
-}
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/DuplicateResourceException.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/DuplicateResourceException.java
index 6ef326e6563..b7cffb5e85b 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/DuplicateResourceException.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/DuplicateResourceException.java
@@ -29,6 +29,6 @@ public final class DuplicateResourceException extends ResourceDefinitionViolatio
     private static final long serialVersionUID = 2103793827572264148L;
     
     public DuplicateResourceException(final Collection<String> resourceNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 4, "Duplicate resource names `%s`.", resourceNames);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 4, "Duplicate storage unit names `%s`.", resourceNames);
     }
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/InvalidResourcesException.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/InvalidResourcesException.java
index 9d0f126d673..7d43961d17d 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/InvalidResourcesException.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/InvalidResourcesException.java
@@ -29,6 +29,6 @@ public final class InvalidResourcesException extends ResourceDefinitionViolation
     private static final long serialVersionUID = 7029641448948791509L;
     
     public InvalidResourcesException(final Collection<String> errorMessages) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 0, "Can not process invalid resources, error message is: %s", errorMessages);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 0, "Can not process invalid storage units, error message is: %s", errorMessages);
     }
 }
diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/MissingRequiredResourcesException.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/MissingRequiredResourcesException.java
index f3a75868936..fe6ded445cf 100644
--- a/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/MissingRequiredResourcesException.java
+++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/distsql/exception/resource/MissingRequiredResourcesException.java
@@ -29,6 +29,6 @@ public final class MissingRequiredResourcesException extends ResourceDefinitionV
     private static final long serialVersionUID = 1704331180489268L;
     
     public MissingRequiredResourcesException(final String databaseName, final Collection<String> resourceNames) {
-        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "Resources `%s` do not exist in database `%s`.", resourceNames, databaseName);
+        super(XOpenSQLState.CHECK_OPTION_VIOLATION, 1, "Storage units `%s` do not exist in database `%s`.", resourceNames, databaseName);
     }
 }
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactory.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactory.java
index 06413c31903..b8de8f2b29c 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactory.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactory.java
@@ -25,9 +25,9 @@ import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorage
 import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AddResourceBackendHandler;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AlterResourceBackendHandler;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.DropResourceBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.RegisterStorageUnitBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AlterStorageUnitBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.UnregisterStorageUnitBackendHandler;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule.RuleDefinitionBackendHandler;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 
@@ -46,13 +46,13 @@ public final class RDLBackendHandlerFactory {
      */
     public static ProxyBackendHandler newInstance(final RDLStatement sqlStatement, final ConnectionSession connectionSession) {
         if (sqlStatement instanceof RegisterStorageUnitStatement) {
-            return new AddResourceBackendHandler((RegisterStorageUnitStatement) sqlStatement, connectionSession);
+            return new RegisterStorageUnitBackendHandler((RegisterStorageUnitStatement) sqlStatement, connectionSession);
         }
         if (sqlStatement instanceof AlterStorageUnitStatement) {
-            return new AlterResourceBackendHandler((AlterStorageUnitStatement) sqlStatement, connectionSession);
+            return new AlterStorageUnitBackendHandler((AlterStorageUnitStatement) sqlStatement, connectionSession);
         }
         if (sqlStatement instanceof UnregisterStorageUnitStatement) {
-            return new DropResourceBackendHandler((UnregisterStorageUnitStatement) sqlStatement, connectionSession);
+            return new UnregisterStorageUnitBackendHandler((UnregisterStorageUnitStatement) sqlStatement, connectionSession);
         }
         return new RuleDefinitionBackendHandler<>((RuleDefinitionStatement) sqlStatement, connectionSession);
     }
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandler.java
similarity index 96%
rename from proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java
rename to proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandler.java
index ccd0d02ff88..b6816e21759 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandler.java
@@ -49,16 +49,16 @@ import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
 /**
- * Alter resource backend handler.
+ * Alter storage unit backend handler.
  */
 @Slf4j
-public final class AlterResourceBackendHandler extends DatabaseRequiredBackendHandler<AlterStorageUnitStatement> {
+public final class AlterStorageUnitBackendHandler extends DatabaseRequiredBackendHandler<AlterStorageUnitStatement> {
     
     private final DatabaseType databaseType;
     
     private final DataSourcePropertiesValidator validator;
     
-    public AlterResourceBackendHandler(final AlterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
+    public AlterStorageUnitBackendHandler(final AlterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
         super(sqlStatement, connectionSession);
         databaseType = connectionSession.getProtocolType();
         validator = new DataSourcePropertiesValidator();
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandler.java
similarity index 93%
rename from proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
rename to proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandler.java
index 44519281f9e..f2279b4dc3b 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandler.java
@@ -42,16 +42,16 @@ import java.util.HashSet;
 import java.util.Map;
 
 /**
- * Add resource backend handler.
+ * Register storage unit backend handler.
  */
 @Slf4j
-public final class AddResourceBackendHandler extends DatabaseRequiredBackendHandler<RegisterStorageUnitStatement> {
+public final class RegisterStorageUnitBackendHandler extends DatabaseRequiredBackendHandler<RegisterStorageUnitStatement> {
     
     private final DatabaseType databaseType;
     
     private final DataSourcePropertiesValidator validator;
     
-    public AddResourceBackendHandler(final RegisterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
+    public RegisterStorageUnitBackendHandler(final RegisterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
         super(sqlStatement, connectionSession);
         databaseType = connectionSession.getProtocolType();
         validator = new DataSourcePropertiesValidator();
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandler.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitBackendHandler.java
similarity index 95%
rename from proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandler.java
rename to proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitBackendHandler.java
index 5e40d077da0..7b6658b7a6d 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandler.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitBackendHandler.java
@@ -46,12 +46,12 @@ import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
- * Drop resource backend handler.
+ * Unregister storage unit backend handler.
  */
 @Slf4j
-public final class DropResourceBackendHandler extends DatabaseRequiredBackendHandler<UnregisterStorageUnitStatement> {
+public final class UnregisterStorageUnitBackendHandler extends DatabaseRequiredBackendHandler<UnregisterStorageUnitStatement> {
     
-    public DropResourceBackendHandler(final UnregisterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
+    public UnregisterStorageUnitBackendHandler(final UnregisterStorageUnitStatement sqlStatement, final ConnectionSession connectionSession) {
         super(sqlStatement, connectionSession);
     }
     
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/StorageUnitQueryResultSet.java
similarity index 93%
rename from proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java
rename to proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/StorageUnitQueryResultSet.java
index f21847bddfb..2b63fe0bd42 100644
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/DataSourceQueryResultSet.java
+++ b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/StorageUnitQueryResultSet.java
@@ -43,13 +43,14 @@ import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
- * Query result set for show data source.
+ * Query result set for show storage units.
  */
-public final class DataSourceQueryResultSet implements DatabaseDistSQLResultSet {
+public final class StorageUnitQueryResultSet implements DatabaseDistSQLResultSet {
     
     private static final String CONNECTION_TIMEOUT_MILLISECONDS = "connectionTimeoutMilliseconds";
     
@@ -73,18 +74,17 @@ public final class DataSourceQueryResultSet implements DatabaseDistSQLResultSet
     public void init(final ShardingSphereDatabase database, final SQLStatement sqlStatement) {
         resourceMetaData = database.getResourceMetaData();
         dataSourcePropsMap = new LinkedHashMap<>(database.getResourceMetaData().getDataSources().size(), 1);
-        Integer usageCount = ((ShowStorageUnitsStatement) sqlStatement).getUsageCount();
-        if (null == usageCount) {
-            for (Entry<String, DataSource> entry : database.getResourceMetaData().getDataSources().entrySet()) {
-                dataSourcePropsMap.put(entry.getKey(), DataSourcePropertiesCreator.create(entry.getValue()));
-            }
-        } else {
+        Optional<Integer> usageCountOptional = ((ShowStorageUnitsStatement) sqlStatement).getUsageCount();
+        if (usageCountOptional.isPresent()) {
             Multimap<String, String> inUsedMultiMap = getInUsedResources(database.getRuleMetaData());
             for (Entry<String, DataSource> entry : database.getResourceMetaData().getDataSources().entrySet()) {
                 Integer currentUsageCount = inUsedMultiMap.containsKey(entry.getKey()) ? inUsedMultiMap.get(entry.getKey()).size() : 0;
-                if (currentUsageCount != usageCount) {
-                    continue;
+                if (usageCountOptional.get().equals(currentUsageCount)) {
+                    dataSourcePropsMap.put(entry.getKey(), DataSourcePropertiesCreator.create(entry.getValue()));
                 }
+            }
+        } else {
+            for (Entry<String, DataSource> entry : database.getResourceMetaData().getDataSources().entrySet()) {
                 dataSourcePropsMap.put(entry.getKey(), DataSourcePropertiesCreator.create(entry.getValue()));
             }
         }
diff --git a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/UnusedDataSourceQueryResultSet.java b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/UnusedDataSourceQueryResultSet.java
deleted file mode 100644
index f7077dfdc5a..00000000000
--- a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/resource/UnusedDataSourceQueryResultSet.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource;
-
-import com.google.common.collect.LinkedListMultimap;
-import com.google.common.collect.Multimap;
-import com.google.gson.Gson;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowUnusedResourcesStatement;
-import org.apache.shardingsphere.infra.database.metadata.DataSourceMetaData;
-import org.apache.shardingsphere.infra.datanode.DataNode;
-import org.apache.shardingsphere.infra.datasource.props.DataSourceProperties;
-import org.apache.shardingsphere.infra.datasource.props.DataSourcePropertiesCreator;
-import org.apache.shardingsphere.infra.distsql.query.DatabaseDistSQLResultSet;
-import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
-import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
-import org.apache.shardingsphere.infra.rule.identifier.type.DataSourceContainedRule;
-import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
-
-import javax.sql.DataSource;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * Query result set for show unused data source.
- */
-public final class UnusedDataSourceQueryResultSet implements DatabaseDistSQLResultSet {
-    
-    private static final String CONNECTION_TIMEOUT_MILLISECONDS = "connectionTimeoutMilliseconds";
-    
-    private static final String IDLE_TIMEOUT_MILLISECONDS = "idleTimeoutMilliseconds";
-    
-    private static final String MAX_LIFETIME_MILLISECONDS = "maxLifetimeMilliseconds";
-    
-    private static final String MAX_POOL_SIZE = "maxPoolSize";
-    
-    private static final String MIN_POOL_SIZE = "minPoolSize";
-    
-    private static final String READ_ONLY = "readOnly";
-    
-    private ShardingSphereResourceMetaData resourceMetaData;
-    
-    private Map<String, DataSourceProperties> dataSourcePropsMap;
-    
-    private Iterator<String> dataSourceNames;
-    
-    @Override
-    public void init(final ShardingSphereDatabase database, final SQLStatement sqlStatement) {
-        resourceMetaData = database.getResourceMetaData();
-        dataSourcePropsMap = new LinkedHashMap<>(database.getResourceMetaData().getDataSources().size(), 1);
-        Multimap<String, String> inUsedMultiMap = getInUsedResources(database.getRuleMetaData());
-        for (Entry<String, DataSource> entry : database.getResourceMetaData().getDataSources().entrySet()) {
-            if (inUsedMultiMap.containsKey(entry.getKey())) {
-                continue;
-            }
-            dataSourcePropsMap.put(entry.getKey(), DataSourcePropertiesCreator.create(entry.getValue()));
-        }
-        dataSourceNames = dataSourcePropsMap.keySet().iterator();
-    }
-    
-    private Multimap<String, String> getInUsedResources(final ShardingSphereRuleMetaData ruleMetaData) {
-        Multimap<String, String> result = LinkedListMultimap.create();
-        for (ShardingSphereRule each : ruleMetaData.getRules()) {
-            if (each instanceof DataSourceContainedRule) {
-                Set<String> inUsedResourceNames = getInUsedResourceNames((DataSourceContainedRule) each);
-                inUsedResourceNames.forEach(eachResource -> result.put(eachResource, each.getType()));
-            }
-            if (each instanceof DataNodeContainedRule) {
-                Set<String> inUsedResourceNames = getInUsedResourceNames((DataNodeContainedRule) each);
-                inUsedResourceNames.forEach(eachResource -> result.put(eachResource, each.getType()));
-            }
-        }
-        return result;
-    }
-    
-    private Set<String> getInUsedResourceNames(final DataSourceContainedRule rule) {
-        Set<String> result = new HashSet<>();
-        for (Collection<String> each : rule.getDataSourceMapper().values()) {
-            result.addAll(each);
-        }
-        return result;
-    }
-    
-    private Set<String> getInUsedResourceNames(final DataNodeContainedRule rule) {
-        Set<String> result = new HashSet<>();
-        for (Collection<DataNode> each : rule.getAllDataNodes().values()) {
-            result.addAll(each.stream().map(DataNode::getDataSourceName).collect(Collectors.toList()));
-        }
-        return result;
-    }
-    
-    @Override
-    public Collection<String> getColumnNames() {
-        return Arrays.asList("name", "type", "host", "port", "db", "connection_timeout_milliseconds", "idle_timeout_milliseconds",
-                "max_lifetime_milliseconds", "max_pool_size", "min_pool_size", "read_only", "other_attributes");
-    }
-    
-    @Override
-    public boolean next() {
-        return dataSourceNames.hasNext();
-    }
-    
-    @Override
-    public Collection<Object> getRowData() {
-        String dataSourceName = dataSourceNames.next();
-        DataSourceMetaData metaData = resourceMetaData.getDataSourceMetaData(dataSourceName);
-        Collection<Object> result = new LinkedList<>();
-        result.add(dataSourceName);
-        result.add(resourceMetaData.getStorageType(dataSourceName).getType());
-        result.add(metaData.getHostname());
-        result.add(metaData.getPort());
-        result.add(metaData.getCatalog());
-        DataSourceProperties dataSourceProps = dataSourcePropsMap.get(dataSourceName);
-        Map<String, Object> standardProps = dataSourceProps.getPoolPropertySynonyms().getStandardProperties();
-        result.add(getStandardProperty(standardProps, CONNECTION_TIMEOUT_MILLISECONDS));
-        result.add(getStandardProperty(standardProps, IDLE_TIMEOUT_MILLISECONDS));
-        result.add(getStandardProperty(standardProps, MAX_LIFETIME_MILLISECONDS));
-        result.add(getStandardProperty(standardProps, MAX_POOL_SIZE));
-        result.add(getStandardProperty(standardProps, MIN_POOL_SIZE));
-        result.add(getStandardProperty(standardProps, READ_ONLY));
-        Map<String, Object> otherProps = dataSourceProps.getCustomDataSourceProperties().getProperties();
-        result.add(otherProps.isEmpty() ? "" : new Gson().toJson(otherProps));
-        return result;
-    }
-    
-    private String getStandardProperty(final Map<String, Object> standardProps, final String key) {
-        if (standardProps.containsKey(key) && null != standardProps.get(key)) {
-            return standardProps.get(key).toString();
-        }
-        return "";
-    }
-    
-    @Override
-    public String getType() {
-        return ShowUnusedResourcesStatement.class.getName();
-    }
-}
diff --git a/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet b/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
index 38ca8fae8fa..415f2d0b644 100644
--- a/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
+++ b/proxy/backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
@@ -15,8 +15,7 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource.DataSourceQueryResultSet
-org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource.UnusedDataSourceQueryResultSet
+org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource.StorageUnitQueryResultSet
 org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule.SingleTableQueryResultSet
 org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule.SingleTableRulesQueryResultSet
 org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule.RulesUsedStorageUnitQueryResultSet
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index 59a7ad98312..b1101433b3d 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -21,7 +21,6 @@ import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorage
 import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowUnusedResourcesStatement;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
 import org.apache.shardingsphere.infra.distsql.exception.rule.MissingRequiredRuleException;
@@ -226,13 +225,6 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
         assertThat(response, instanceOf(QueryResponseHeader.class));
     }
     
-    @Test
-    public void assertExecuteShowUnusedResourceContext() throws SQLException {
-        setContextManager(true);
-        ResponseHeader response = RQLBackendHandlerFactory.newInstance(mock(ShowUnusedResourcesStatement.class), connectionSession).execute();
-        assertThat(response, instanceOf(QueryResponseHeader.class));
-    }
-    
     private void setContextManager(final boolean isGovernance) {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = isGovernance
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactoryTest.java
index d5190365fae..cc896e39937 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/RDLBackendHandlerFactoryTest.java
@@ -21,9 +21,9 @@ import org.apache.shardingsphere.distsql.parser.statement.rdl.RuleDefinitionStat
 import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AddResourceBackendHandler;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AlterResourceBackendHandler;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.DropResourceBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.RegisterStorageUnitBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.AlterStorageUnitBackendHandler;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.resource.UnregisterStorageUnitBackendHandler;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule.RuleDefinitionBackendHandler;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import org.junit.Test;
@@ -35,18 +35,18 @@ import static org.mockito.Mockito.mock;
 public final class RDLBackendHandlerFactoryTest {
     
     @Test
-    public void assertNewInstanceWithAddResourceStatement() {
-        assertThat(RDLBackendHandlerFactory.newInstance(mock(RegisterStorageUnitStatement.class), mock(ConnectionSession.class)), instanceOf(AddResourceBackendHandler.class));
+    public void assertNewInstanceWithRegisterStorageUnitStatement() {
+        assertThat(RDLBackendHandlerFactory.newInstance(mock(RegisterStorageUnitStatement.class), mock(ConnectionSession.class)), instanceOf(RegisterStorageUnitBackendHandler.class));
     }
     
     @Test
-    public void assertNewInstanceWithAlterResourceStatement() {
-        assertThat(RDLBackendHandlerFactory.newInstance(mock(AlterStorageUnitStatement.class), mock(ConnectionSession.class)), instanceOf(AlterResourceBackendHandler.class));
+    public void assertNewInstanceWithAlterStorageUnitStatement() {
+        assertThat(RDLBackendHandlerFactory.newInstance(mock(AlterStorageUnitStatement.class), mock(ConnectionSession.class)), instanceOf(AlterStorageUnitBackendHandler.class));
     }
     
     @Test
-    public void assertNewInstanceWithDropResourceStatement() {
-        assertThat(RDLBackendHandlerFactory.newInstance(mock(UnregisterStorageUnitStatement.class), mock(ConnectionSession.class)), instanceOf(DropResourceBackendHandler.class));
+    public void assertNewInstanceWithUnregisterStorageUnitStatement() {
+        assertThat(RDLBackendHandlerFactory.newInstance(mock(UnregisterStorageUnitStatement.class), mock(ConnectionSession.class)), instanceOf(UnregisterStorageUnitBackendHandler.class));
     }
     
     @Test
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java
similarity index 83%
rename from proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java
rename to proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java
index 129004cbf62..a4b962c9bcc 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterResourceBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AlterStorageUnitBackendHandlerTest.java
@@ -57,7 +57,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
-public final class AlterResourceBackendHandlerTest extends ProxyContextRestorer {
+public final class AlterStorageUnitBackendHandlerTest extends ProxyContextRestorer {
     
     @Mock
     private DataSourcePropertiesValidator validator;
@@ -80,17 +80,17 @@ public final class AlterResourceBackendHandlerTest extends ProxyContextRestorer
     @Mock
     private DataSource dataSource;
     
-    private AlterResourceBackendHandler alterResourceBackendHandler;
+    private AlterStorageUnitBackendHandler alterStorageUnitBackendHandler;
     
     @Before
     public void setUp() throws Exception {
         when(metaDataContexts.getMetaData().getDatabase("test_db")).thenReturn(database);
         when(metaDataContexts.getMetaData().containsDatabase("test_db")).thenReturn(true);
         when(connectionSession.getProtocolType()).thenReturn(new MySQLDatabaseType());
-        alterResourceBackendHandler = new AlterResourceBackendHandler(alterStorageUnitStatement, connectionSession);
-        Field field = alterResourceBackendHandler.getClass().getDeclaredField("validator");
+        alterStorageUnitBackendHandler = new AlterStorageUnitBackendHandler(alterStorageUnitStatement, connectionSession);
+        Field field = alterStorageUnitBackendHandler.getClass().getDeclaredField("validator");
         field.setAccessible(true);
-        field.set(alterResourceBackendHandler, validator);
+        field.set(alterStorageUnitBackendHandler, validator);
     }
     
     @Test
@@ -100,23 +100,23 @@ public final class AlterResourceBackendHandlerTest extends ProxyContextRestorer
         ProxyContext.init(contextManager);
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("ds_0", mockHikariDataSource("ds_0")));
-        assertThat(alterResourceBackendHandler.execute("test_db", createAlterResourceStatement("ds_0")), instanceOf(UpdateResponseHeader.class));
+        assertThat(alterStorageUnitBackendHandler.execute("test_db", createAlterStorageUnitStatement("ds_0")), instanceOf(UpdateResponseHeader.class));
     }
     
     @Test(expected = DuplicateResourceException.class)
-    public void assertExecuteWithDuplicateResourceNames() {
-        alterResourceBackendHandler.execute("test_db", createAlterResourceStatementWithDuplicateResourceNames());
+    public void assertExecuteWithDuplicateStorageUnitNames() {
+        alterStorageUnitBackendHandler.execute("test_db", createAlterStorageUnitStatementWithDuplicateStorageUnitNames());
     }
     
     @Test(expected = MissingRequiredResourcesException.class)
-    public void assertExecuteWithNotExistedResourceNames() {
+    public void assertExecuteWithNotExistedStorageUnitNames() {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
         when(metaDataContexts.getMetaData().getDatabases()).thenReturn(Collections.singletonMap("test_db", database));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("ds_0", dataSource));
-        alterResourceBackendHandler.execute("test_db", createAlterResourceStatement("not_existed"));
+        alterStorageUnitBackendHandler.execute("test_db", createAlterStorageUnitStatement("not_existed"));
     }
     
     @Test(expected = InvalidResourcesException.class)
@@ -126,15 +126,15 @@ public final class AlterResourceBackendHandlerTest extends ProxyContextRestorer
         ProxyContext.init(contextManager);
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("ds_0", mockHikariDataSource("ds_1")));
-        ResponseHeader responseHeader = alterResourceBackendHandler.execute("test_db", createAlterResourceStatement("ds_0"));
+        ResponseHeader responseHeader = alterStorageUnitBackendHandler.execute("test_db", createAlterStorageUnitStatement("ds_0"));
         assertThat(responseHeader, instanceOf(UpdateResponseHeader.class));
     }
     
-    private AlterStorageUnitStatement createAlterResourceStatement(final String resourceName) {
+    private AlterStorageUnitStatement createAlterStorageUnitStatement(final String resourceName) {
         return new AlterStorageUnitStatement(Collections.singleton(new URLBasedDataSourceSegment(resourceName, "jdbc:mysql://127.0.0.1:3306/ds_0", "root", "", new Properties())));
     }
     
-    private AlterStorageUnitStatement createAlterResourceStatementWithDuplicateResourceNames() {
+    private AlterStorageUnitStatement createAlterStorageUnitStatementWithDuplicateStorageUnitNames() {
         Collection<DataSourceSegment> result = new LinkedList<>();
         result.add(new HostnameAndPortBasedDataSourceSegment("ds_0", "127.0.0.1", "3306", "ds_0", "root", "", new Properties()));
         result.add(new URLBasedDataSourceSegment("ds_0", "jdbc:mysql://127.0.0.1:3306/ds_1", "root", "", new Properties()));
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java
similarity index 84%
rename from proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java
rename to proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java
index 316d0971a7b..cc6c26e1252 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/AddResourceBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/RegisterStorageUnitBackendHandlerTest.java
@@ -53,7 +53,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
-public final class AddResourceBackendHandlerTest extends ProxyContextRestorer {
+public final class RegisterStorageUnitBackendHandlerTest extends ProxyContextRestorer {
     
     @Mock
     private DataSourcePropertiesValidator validator;
@@ -73,17 +73,17 @@ public final class AddResourceBackendHandlerTest extends ProxyContextRestorer {
     @Mock
     private ShardingSphereResourceMetaData resourceMetaData;
     
-    private AddResourceBackendHandler addResourceBackendHandler;
+    private RegisterStorageUnitBackendHandler registerStorageUnitBackendHandler;
     
     @Before
     public void setUp() throws Exception {
         when(metaDataContexts.getMetaData().getDatabase("test_db")).thenReturn(database);
         when(metaDataContexts.getMetaData().containsDatabase("test_db")).thenReturn(true);
         when(connectionSession.getProtocolType()).thenReturn(new MySQLDatabaseType());
-        addResourceBackendHandler = new AddResourceBackendHandler(registerStorageUnitStatement, connectionSession);
-        Field field = addResourceBackendHandler.getClass().getDeclaredField("validator");
+        registerStorageUnitBackendHandler = new RegisterStorageUnitBackendHandler(registerStorageUnitStatement, connectionSession);
+        Field field = registerStorageUnitBackendHandler.getClass().getDeclaredField("validator");
         field.setAccessible(true);
-        field.set(addResourceBackendHandler, validator);
+        field.set(registerStorageUnitBackendHandler, validator);
     }
     
     @Test
@@ -94,26 +94,26 @@ public final class AddResourceBackendHandlerTest extends ProxyContextRestorer {
         when(metaDataContexts.getMetaData().getDatabases()).thenReturn(Collections.singletonMap("test_db", database));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(resourceMetaData.getDataSources()).thenReturn(Collections.emptyMap());
-        ResponseHeader responseHeader = addResourceBackendHandler.execute("test_db", createAddResourceStatement());
+        ResponseHeader responseHeader = registerStorageUnitBackendHandler.execute("test_db", createRegisterStorageUnitStatement());
         assertThat(responseHeader, instanceOf(UpdateResponseHeader.class));
     }
     
     @Test(expected = DuplicateResourceException.class)
-    public void assertExecuteWithDuplicateResourceNames() {
+    public void assertExecuteWithDuplicateStorageUnitNames() {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
         when(metaDataContexts.getMetaData().getDatabases()).thenReturn(Collections.singletonMap("test_db", database));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(resourceMetaData.getDataSources()).thenReturn(Collections.emptyMap());
-        addResourceBackendHandler.execute("test_db", createAlterResourceStatementWithDuplicateResourceNames());
+        registerStorageUnitBackendHandler.execute("test_db", createRegisterStorageUnitStatementWithDuplicateStorageUnitNames());
     }
     
-    private RegisterStorageUnitStatement createAddResourceStatement() {
+    private RegisterStorageUnitStatement createRegisterStorageUnitStatement() {
         return new RegisterStorageUnitStatement(Collections.singleton(new URLBasedDataSourceSegment("ds_0", "jdbc:mysql://127.0.0.1:3306/test0", "root", "", new Properties())));
     }
     
-    private RegisterStorageUnitStatement createAlterResourceStatementWithDuplicateResourceNames() {
+    private RegisterStorageUnitStatement createRegisterStorageUnitStatementWithDuplicateStorageUnitNames() {
         Collection<DataSourceSegment> result = new LinkedList<>();
         result.add(new HostnameAndPortBasedDataSourceSegment("ds_0", "127.0.0.1", "3306", "ds_0", "root", "", new Properties()));
         result.add(new URLBasedDataSourceSegment("ds_0", "jdbc:mysql://127.0.0.1:3306/ds_1", "root", "", new Properties()));
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandlerTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitBackendHandlerTest.java
similarity index 83%
rename from proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandlerTest.java
rename to proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitBackendHandlerTest.java
index ec6965c3e37..a387277d5c1 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/DropResourceBackendHandlerTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/resource/UnregisterStorageUnitBackendHandlerTest.java
@@ -51,7 +51,7 @@ import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
-public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
+public final class UnregisterStorageUnitBackendHandlerTest extends ProxyContextRestorer {
     
     @Mock
     private UnregisterStorageUnitStatement unregisterStorageUnitStatement;
@@ -79,7 +79,7 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
     
     private ContextManager contextManager;
     
-    private DropResourceBackendHandler dropResourceBackendHandler;
+    private UnregisterStorageUnitBackendHandler unregisterStorageUnitBackendHandler;
     
     @Before
     public void setUp() {
@@ -93,7 +93,7 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
-        dropResourceBackendHandler = new DropResourceBackendHandler(unregisterStorageUnitStatement, connectionSession);
+        unregisterStorageUnitBackendHandler = new UnregisterStorageUnitBackendHandler(unregisterStorageUnitStatement, connectionSession);
     }
     
     @Test
@@ -103,28 +103,28 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
         UnregisterStorageUnitStatement unregisterStorageUnitStatement = new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false);
-        assertThat(dropResourceBackendHandler.execute("test", unregisterStorageUnitStatement), instanceOf(UpdateResponseHeader.class));
+        assertThat(unregisterStorageUnitBackendHandler.execute("test", unregisterStorageUnitStatement), instanceOf(UpdateResponseHeader.class));
         verify(contextManager).dropResources("test", unregisterStorageUnitStatement.getNames());
     }
     
     @Test(expected = MissingRequiredResourcesException.class)
-    public void assertResourceNameNotExistedExecute() {
-        dropResourceBackendHandler.execute("test", new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false));
+    public void assertStorageUnitNameNotExistedExecute() {
+        unregisterStorageUnitBackendHandler.execute("test", new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false));
     }
     
     @Test(expected = ResourceInUsedException.class)
-    public void assertResourceNameInUseExecute() {
+    public void assertStorageUnitNameInUseExecute() {
         when(ruleMetaData.getRules()).thenReturn(Collections.singleton(shadowRule));
         when(shadowRule.getType()).thenReturn("ShadowRule");
         when(shadowRule.getDataSourceMapper()).thenReturn(Collections.singletonMap("", Collections.singleton("foo_ds")));
         when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("foo_ds", dataSource));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
-        dropResourceBackendHandler.execute("test", new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false));
+        unregisterStorageUnitBackendHandler.execute("test", new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false));
     }
     
     @Test(expected = ResourceInUsedException.class)
-    public void assertResourceNameInUseWithoutIgnoreSingleTables() {
+    public void assertStorageUnitNameInUseWithoutIgnoreSingleTables() {
         when(ruleMetaData.getRules()).thenReturn(Collections.singleton(singleTableRule));
         when(singleTableRule.getType()).thenReturn("SingleTableRule");
         DataNode dataNode = mock(DataNode.class);
@@ -133,11 +133,11 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         when(resourceMetaData.getDataSources()).thenReturn(Collections.singletonMap("foo_ds", dataSource));
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
-        dropResourceBackendHandler.execute("test", new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false));
+        unregisterStorageUnitBackendHandler.execute("test", new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), false));
     }
     
     @Test
-    public void assertResourceNameInUseIgnoreSingleTables() throws SQLException {
+    public void assertStorageUnitNameInUseIgnoreSingleTables() throws SQLException {
         when(ruleMetaData.getRules()).thenReturn(Collections.singleton(singleTableRule));
         when(singleTableRule.getType()).thenReturn("SingleTableRule");
         DataNode dataNode = mock(DataNode.class);
@@ -147,24 +147,24 @@ public final class DropResourceBackendHandlerTest extends ProxyContextRestorer {
         when(database.getResourceMetaData()).thenReturn(resourceMetaData);
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
         UnregisterStorageUnitStatement unregisterStorageUnitStatement = new UnregisterStorageUnitStatement(Collections.singleton("foo_ds"), true);
-        assertThat(dropResourceBackendHandler.execute("test", unregisterStorageUnitStatement), instanceOf(UpdateResponseHeader.class));
+        assertThat(unregisterStorageUnitBackendHandler.execute("test", unregisterStorageUnitStatement), instanceOf(UpdateResponseHeader.class));
         verify(contextManager).dropResources("test", unregisterStorageUnitStatement.getNames());
     }
     
     @Test
     public void assertExecuteWithIfExists() throws SQLException {
         UnregisterStorageUnitStatement unregisterStorageUnitStatement = new UnregisterStorageUnitStatement(true, Collections.singleton("foo_ds"), true);
-        assertThat(dropResourceBackendHandler.execute("test", unregisterStorageUnitStatement), instanceOf(UpdateResponseHeader.class));
+        assertThat(unregisterStorageUnitBackendHandler.execute("test", unregisterStorageUnitStatement), instanceOf(UpdateResponseHeader.class));
         verify(contextManager).dropResources("test", unregisterStorageUnitStatement.getNames());
     }
     
     @Test(expected = DistSQLException.class)
-    public void assertResourceNameInUseWithIfExists() {
+    public void assertStorageUnitNameInUseWithIfExists() {
         when(ruleMetaData.getRules()).thenReturn(Collections.singleton(shadowRule));
         when(shadowRule.getType()).thenReturn("ShadowRule");
         when(shadowRule.getDataSourceMapper()).thenReturn(Collections.singletonMap("", Collections.singleton("foo_ds")));
         when(contextManager.getMetaDataContexts().getMetaData().getDatabase("test")).thenReturn(database);
         UnregisterStorageUnitStatement unregisterStorageUnitStatement = new UnregisterStorageUnitStatement(true, Collections.singleton("foo_ds"), true);
-        dropResourceBackendHandler.execute("test", unregisterStorageUnitStatement);
+        unregisterStorageUnitBackendHandler.execute("test", unregisterStorageUnitStatement);
     }
 }
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/DataSourceQueryResultSetTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/DataSourceQueryResultSetTest.java
deleted file mode 100644
index 9917b6e188f..00000000000
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/DataSourceQueryResultSetTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
-
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
-import org.apache.shardingsphere.infra.distsql.query.DatabaseDistSQLResultSet;
-import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource.DataSourceQueryResultSet;
-import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
-import org.apache.shardingsphere.test.mock.MockedDataSource;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-@RunWith(MockitoJUnitRunner.class)
-public final class DataSourceQueryResultSetTest {
-    
-    @Mock
-    private ShardingSphereDatabase database;
-    
-    @Before
-    public void before() {
-        ShardingSphereResourceMetaData resourceMetaData = new ShardingSphereResourceMetaData("sharding_db", Collections.singletonMap("foo_ds", createDataSource()));
-        when(database.getResourceMetaData()).thenReturn(resourceMetaData);
-    }
-    
-    private MockedDataSource createDataSource() {
-        MockedDataSource result = new MockedDataSource();
-        result.setUrl("jdbc:mysql://localhost/demo_ds");
-        result.setUsername("root");
-        result.setPassword("password");
-        result.setMaxPoolSize(100);
-        result.setMinPoolSize(10);
-        return result;
-    }
-    
-    @Test
-    public void assertGetRowData() {
-        DatabaseDistSQLResultSet resultSet = new DataSourceQueryResultSet();
-        ShowStorageUnitsStatement showStorageUnitsStatement = new ShowStorageUnitsStatement(mock(DatabaseSegment.class), null);
-        resultSet.init(database, showStorageUnitsStatement);
-        Collection<Object> actual = resultSet.getRowData();
-        assertThat(actual.size(), is(12));
-        Iterator<Object> rowData = actual.iterator();
-        assertThat(rowData.next(), is("foo_ds"));
-        assertThat(rowData.next(), is("MySQL"));
-        assertThat(rowData.next(), is("localhost"));
-        assertThat(rowData.next(), is(3306));
-        assertThat(rowData.next(), is("demo_ds"));
-        assertThat(rowData.next(), is(""));
-        assertThat(rowData.next(), is(""));
-        assertThat(rowData.next(), is(""));
-        assertThat(rowData.next(), is("100"));
-        assertThat(rowData.next(), is("10"));
-        assertThat(rowData.next(), is(""));
-        assertThat(rowData.next(), is(""));
-    }
-}
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/UnusedDataSourceQueryResultSetTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/StorageUnitQueryResultSetTest.java
similarity index 78%
rename from proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/UnusedDataSourceQueryResultSetTest.java
rename to proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/StorageUnitQueryResultSetTest.java
index 162553863f3..46784ff0ba9 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/UnusedDataSourceQueryResultSetTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/StorageUnitQueryResultSetTest.java
@@ -22,7 +22,7 @@ import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
-import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource.DataSourceQueryResultSet;
+import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.resource.StorageUnitQueryResultSet;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
 import org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
@@ -50,7 +50,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
-public final class UnusedDataSourceQueryResultSetTest {
+public final class StorageUnitQueryResultSetTest {
     
     @Mock
     private ShardingSphereDatabase database;
@@ -101,8 +101,38 @@ public final class UnusedDataSourceQueryResultSetTest {
     }
     
     @Test
-    public void assertGetRowData() {
-        DataSourceQueryResultSet resultSet = new DataSourceQueryResultSet();
+    public void assertAllStorageUnit() {
+        StorageUnitQueryResultSet resultSet = new StorageUnitQueryResultSet();
+        ShowStorageUnitsStatement showStorageUnitsStatement = new ShowStorageUnitsStatement(mock(DatabaseSegment.class), null);
+        resultSet.init(database, showStorageUnitsStatement);
+        Map<Integer, String> nameMap = new HashMap<>(3, 1);
+        nameMap.put(0, "ds_2");
+        nameMap.put(1, "ds_1");
+        nameMap.put(2, "ds_0");
+        int index = 0;
+        while (resultSet.next()) {
+            Collection<Object> actual = resultSet.getRowData();
+            assertThat(actual.size(), is(12));
+            Iterator<Object> rowData = actual.iterator();
+            assertThat(rowData.next(), is(nameMap.get(index)));
+            assertThat(rowData.next(), is("MySQL"));
+            assertThat(rowData.next(), is("localhost"));
+            assertThat(rowData.next(), is(3307));
+            assertThat(rowData.next(), is(nameMap.get(index)));
+            assertThat(rowData.next(), is(""));
+            assertThat(rowData.next(), is(""));
+            assertThat(rowData.next(), is(""));
+            assertThat(rowData.next(), is("100"));
+            assertThat(rowData.next(), is("10"));
+            assertThat(rowData.next(), is(""));
+            assertThat(rowData.next(), is(""));
+            index++;
+        }
+    }
+    
+    @Test
+    public void assertUnusedStorageUnit() {
+        StorageUnitQueryResultSet resultSet = new StorageUnitQueryResultSet();
         ShowStorageUnitsStatement showStorageUnitsStatement = new ShowStorageUnitsStatement(mock(DatabaseSegment.class), 0);
         resultSet.init(database, showStorageUnitsStatement);
         Collection<Object> actual = resultSet.getRowData();
diff --git a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/available/FromDatabaseAvailable.java b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/available/FromDatabaseAvailable.java
index 2edbc28ec84..e5cd9ec2258 100644
--- a/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/available/FromDatabaseAvailable.java
+++ b/sql-parser/statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/available/FromDatabaseAvailable.java
@@ -27,9 +27,9 @@ import java.util.Optional;
 public interface FromDatabaseAvailable {
     
     /**
-     * Get schema.
+     * Get database.
      * 
-     * @return schema segment
+     * @return database segment
      */
     Optional<DatabaseSegment> getDatabase();
 }
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/RDLStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/RDLStatementAssert.java
index 36466d41e8f..20a6d813ccb 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/RDLStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/RDLStatementAssert.java
@@ -32,24 +32,24 @@ import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.Alt
 import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingTableReferenceRuleStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingTableRuleStatement;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.AlterResourceStatementAssert;
+import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.AlterStorageUnitStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.AlterRuleStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterDatabaseDiscoveryRuleStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterEncryptRuleStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterReadwriteSplittingRuleStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterShardingTableReferenceRulesStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterShardingTableRuleStatementAssert;
-import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.create.AddResourceStatementAssert;
+import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.create.RegisterStorageUnitStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.create.CreateRuleStatementAssert;
-import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.DropResourceStatementAssert;
+import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.UnregisterStorageUnitStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.drop.DropRuleStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterEncryptRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterReadwriteSplittingRuleStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterResourceStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterStorageUnitStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingTableReferenceRulesStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.AddResourceStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropResourceStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.RegisterStorageUnitStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.UnregisterStorageUnitStatementTestCase;
 
 /**
  * RDL statement assert.
@@ -78,13 +78,13 @@ public final class RDLStatementAssert {
         } else if (actual instanceof CreateRuleStatement) {
             CreateRuleStatementAssert.assertIs(assertContext, (CreateRuleStatement) actual, expected);
         } else if (actual instanceof RegisterStorageUnitStatement) {
-            AddResourceStatementAssert.assertIs(assertContext, (RegisterStorageUnitStatement) actual, (AddResourceStatementTestCase) expected);
+            RegisterStorageUnitStatementAssert.assertIs(assertContext, (RegisterStorageUnitStatement) actual, (RegisterStorageUnitStatementTestCase) expected);
         } else if (actual instanceof AlterStorageUnitStatement) {
-            AlterResourceStatementAssert.assertIs(assertContext, (AlterStorageUnitStatement) actual, (AlterResourceStatementTestCase) expected);
+            AlterStorageUnitStatementAssert.assertIs(assertContext, (AlterStorageUnitStatement) actual, (AlterStorageUnitStatementTestCase) expected);
         } else if (actual instanceof AlterRuleStatement) {
             AlterRuleStatementAssert.assertIs(assertContext, (AlterRuleStatement) actual, expected);
         } else if (actual instanceof UnregisterStorageUnitStatement) {
-            DropResourceStatementAssert.assertIs(assertContext, (UnregisterStorageUnitStatement) actual, (DropResourceStatementTestCase) expected);
+            UnregisterStorageUnitStatementAssert.assertIs(assertContext, (UnregisterStorageUnitStatement) actual, (UnregisterStorageUnitStatementTestCase) expected);
         } else if (actual instanceof DropRuleStatement) {
             DropRuleStatementAssert.assertIs(assertContext, (DropRuleStatement) actual, expected);
         }
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterResourceStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterStorageUnitStatementAssert.java
similarity index 92%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterResourceStatementAssert.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterStorageUnitStatementAssert.java
index e77b4d73ba6..1ae29682551 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterResourceStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterStorageUnitStatementAssert.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorage
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.DataSourceAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.ExpectedDataSource;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterResourceStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterStorageUnitStatementTestCase;
 
 import java.util.Collection;
 import java.util.List;
@@ -35,10 +35,10 @@ import static org.junit.Assert.assertNull;
 import static org.hamcrest.MatcherAssert.assertThat;
 
 /**
- * Alter Resource statement assert.
+ * Alter storage unit statement assert.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class AlterResourceStatementAssert {
+public final class AlterStorageUnitStatementAssert {
     
     /**
      * Assert alter resource statement is correct with expected parser result.
@@ -47,7 +47,7 @@ public final class AlterResourceStatementAssert {
      * @param actual actual add resource statement
      * @param expected expected add resource statement test case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, final AlterStorageUnitStatement actual, final AlterResourceStatementTestCase expected) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, final AlterStorageUnitStatement actual, final AlterStorageUnitStatementTestCase expected) {
         if (null == expected) {
             assertNull(assertContext.getText("Actual statement should not exist."), actual);
         } else {
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/AddResourceStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/RegisterStorageUnitStatementAssert.java
similarity index 91%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/AddResourceStatementAssert.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/RegisterStorageUnitStatementAssert.java
index 8700ac93e8e..87012a5187f 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/AddResourceStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/RegisterStorageUnitStatementAssert.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterSto
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.DataSourceAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.ExpectedDataSource;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.AddResourceStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.RegisterStorageUnitStatementTestCase;
 
 import java.util.Collection;
 import java.util.List;
@@ -35,10 +35,10 @@ import static org.junit.Assert.assertNull;
 import static org.hamcrest.MatcherAssert.assertThat;
 
 /**
- * Add Resource statement assert.
+ * Register storage unit statement assert.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class AddResourceStatementAssert {
+public final class RegisterStorageUnitStatementAssert {
     
     /**
      * Assert add resource statement is correct with expected parser result.
@@ -47,7 +47,7 @@ public final class AddResourceStatementAssert {
      * @param actual actual add resource statement
      * @param expected expected add resource statement test case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, final RegisterStorageUnitStatement actual, final AddResourceStatementTestCase expected) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, final RegisterStorageUnitStatement actual, final RegisterStorageUnitStatementTestCase expected) {
         if (null == expected) {
             assertNull(assertContext.getText("Actual statement should not exist."), actual);
         } else {
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropResourceStatementAssert.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/UnregisterStorageUnitStatementAssert.java
similarity index 88%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropResourceStatementAssert.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/UnregisterStorageUnitStatementAssert.java
index c73c992bce3..bfde2528b68 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/DropResourceStatementAssert.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/drop/UnregisterStorageUnitStatementAssert.java
@@ -21,17 +21,17 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropResourceStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.UnregisterStorageUnitStatementTestCase;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertNull;
 import static org.hamcrest.MatcherAssert.assertThat;
 
 /**
- * Drop resource statement assert.
+ * Unregister storage unit statement assert.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class DropResourceStatementAssert {
+public final class UnregisterStorageUnitStatementAssert {
     
     /**
      * Assert drop resource statement is correct with expected parser result.
@@ -40,7 +40,7 @@ public final class DropResourceStatementAssert {
      * @param actual actual drop resource statement
      * @param expected expected drop resource statement test case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, final UnregisterStorageUnitStatement actual, final DropResourceStatementTestCase expected) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, final UnregisterStorageUnitStatement actual, final UnregisterStorageUnitStatementTestCase expected) {
         if (null == expected.getDataSources()) {
             assertNull(assertContext.getText("Actual resource should not exist."), actual);
         } else {
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
index d4d9e293285..68eae511dc6 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
@@ -333,13 +333,13 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterDefaultShardingStrategyStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterEncryptRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterReadwriteSplittingRuleStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterResourceStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterStorageUnitStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShadowRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingAuditorStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingAutoTableRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingTableReferenceRulesStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingTableRuleStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.AddResourceStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.RegisterStorageUnitStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.AlterDefaultShadowAlgorithmStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateBroadcastTableRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateDatabaseDiscoveryDefinitionRuleStatementTestCase;
@@ -360,7 +360,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropDefaultShardingStrategyStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropEncryptRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropReadwriteSplittingRuleStatementTestCase;
-import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropResourceStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.UnregisterStorageUnitStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShadowAlgorithmStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShadowRuleStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingAlgorithmStatementTestCase;
@@ -870,14 +870,14 @@ public final class SQLParserTestCases {
     @XmlElement(name = "rename")
     private final List<RenameStatementTestCase> renameTestCases = new LinkedList<>();
     
-    @XmlElement(name = "add-resource")
-    private final List<AddResourceStatementTestCase> addResourceTestCases = new LinkedList<>();
+    @XmlElement(name = "register-storage-unit")
+    private final List<RegisterStorageUnitStatementTestCase> registerStorageUnitTestCases = new LinkedList<>();
     
     @XmlElement(name = "register-migration-source-storage-unit")
     private final List<RegisterMigrationSourceStorageUnitStatementTestCase> registerMigrationSourceStorageUnitStatementTestCases = new LinkedList<>();
     
-    @XmlElement(name = "alter-resource")
-    private final List<AlterResourceStatementTestCase> alterResourceTestCases = new LinkedList<>();
+    @XmlElement(name = "alter-storage-unit")
+    private final List<AlterStorageUnitStatementTestCase> alterStorageUnitTestCases = new LinkedList<>();
     
     @XmlElement(name = "alter-database-discovery-definition-rule")
     private final List<AlterDatabaseDiscoveryDefinitionRuleStatementTestCase> alterDatabaseDiscoveryDefinitionRuleTestCases = new LinkedList<>();
@@ -933,8 +933,8 @@ public final class SQLParserTestCases {
     @XmlElement(name = "drop-readwrite-splitting-rule")
     private final List<DropReadwriteSplittingRuleStatementTestCase> dropReadwriteSplittingRuleTestCases = new LinkedList<>();
     
-    @XmlElement(name = "drop-resource")
-    private final List<DropResourceStatementTestCase> dropResourceTestCases = new LinkedList<>();
+    @XmlElement(name = "unregister-storage-unit")
+    private final List<UnregisterStorageUnitStatementTestCase> unregisterStorageUnitStatementTestCase = new LinkedList<>();
     
     @XmlElement(name = "drop-sharding-table-reference-rule")
     private final List<DropShardingTableReferenceRuleStatementTestCase> dropShardingTableReferenceRuleStatementTestCases = new LinkedList<>();
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterResourceStatementTestCase.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterStorageUnitStatementTestCase.java
similarity index 91%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterResourceStatementTestCase.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterStorageUnitStatementTestCase.java
index 76810f4b8a7..bbbc3742512 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterResourceStatementTestCase.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterStorageUnitStatementTestCase.java
@@ -26,10 +26,10 @@ import java.util.LinkedList;
 import java.util.List;
 
 /**
- * Alter resource statement test case.
+ * Alter storage unit statement test case.
  */
 @Getter
-public final class AlterResourceStatementTestCase extends SQLParserTestCase {
+public final class AlterStorageUnitStatementTestCase extends SQLParserTestCase {
     
     @XmlElement(name = "data-source")
     private final List<ExpectedDataSource> dataSources = new LinkedList<>();
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/AddResourceStatementTestCase.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/RegisterStorageUnitStatementTestCase.java
similarity index 91%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/AddResourceStatementTestCase.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/RegisterStorageUnitStatementTestCase.java
index 4c39e58de9d..c3f808198f2 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/AddResourceStatementTestCase.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/create/RegisterStorageUnitStatementTestCase.java
@@ -27,11 +27,11 @@ import java.util.LinkedList;
 import java.util.List;
 
 /**
- * Add resource statement test case.
+ * Register storage unit statement test case.
  */
 @Getter
 @Setter
-public final class AddResourceStatementTestCase extends SQLParserTestCase {
+public final class RegisterStorageUnitStatementTestCase extends SQLParserTestCase {
     
     @XmlElement(name = "data-source")
     private final List<ExpectedDataSource> dataSources = new LinkedList<>();
diff --git a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropResourceStatementTestCase.java b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/UnregisterStorageUnitStatementTestCase.java
similarity index 92%
rename from test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropResourceStatementTestCase.java
rename to test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/UnregisterStorageUnitStatementTestCase.java
index 3c931f2ba79..87d4225f9c0 100644
--- a/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/DropResourceStatementTestCase.java
+++ b/test/parser/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/drop/UnregisterStorageUnitStatementTestCase.java
@@ -27,11 +27,11 @@ import java.util.LinkedList;
 import java.util.List;
 
 /**
- * Drop resource statement test case.
+ * Unregister storage unit statement test case.
  */
 @Getter
 @Setter
-public final class DropResourceStatementTestCase extends SQLParserTestCase {
+public final class UnregisterStorageUnitStatementTestCase extends SQLParserTestCase {
     
     @XmlAttribute(name = "if-exists")
     private boolean ifExists;
diff --git a/test/parser/src/main/resources/case/dal/alter.xml b/test/parser/src/main/resources/case/dal/alter.xml
index b7c04b90ccc..0ab3ec1c6a8 100644
--- a/test/parser/src/main/resources/case/dal/alter.xml
+++ b/test/parser/src/main/resources/case/dal/alter.xml
@@ -20,6 +20,6 @@
     <alter-resource-group sql-case-id="alter_resource_group">
         <group name="rg" start-index="21" stop-index="22" />
     </alter-resource-group>
-    <alter-resource sql-case-id="alter_resource_cost_cpu_time"></alter-resource>
-    <alter-resource sql-case-id="alter_resource_cost_cpu"></alter-resource>
+    <alter-resource-group sql-case-id="alter_resource_cost_cpu_time"></alter-resource-group>
+    <alter-resource-group sql-case-id="alter_resource_cost_cpu"></alter-resource-group>
 </sql-parser-test-cases>
diff --git a/test/parser/src/main/resources/case/rdl/alter.xml b/test/parser/src/main/resources/case/rdl/alter.xml
index 0d602a3bc86..956a72c67cd 100644
--- a/test/parser/src/main/resources/case/rdl/alter.xml
+++ b/test/parser/src/main/resources/case/rdl/alter.xml
@@ -17,51 +17,51 @@
   -->
 
 <sql-parser-test-cases>
-    <alter-resource sql-case-id="alter-resource-simple-single-without-password">
+    <alter-storage-unit sql-case-id="alter-storage-unit-simple-single-without-password">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="" />
-    </alter-resource>
+    </alter-storage-unit>
 
-    <alter-resource sql-case-id="alter-resource-simple-single-with-password">
+    <alter-storage-unit sql-case-id="alter-storage-unit-simple-single-with-password">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="123456" />
-    </alter-resource>
+    </alter-storage-unit>
 
-    <alter-resource sql-case-id="alter-resource-simple-multiple">
+    <alter-storage-unit sql-case-id="alter-storage-unit-simple-multiple">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="123456" />
         <data-source name="ds_1" hostname="127.0.0.1" port="3306" db="test1" user="ROOT" password="123456" />
-    </alter-resource>
+    </alter-storage-unit>
 
-    <alter-resource sql-case-id="alter-resource-url-single-without-password">
+    <alter-storage-unit sql-case-id="alter-storage-unit-url-single-without-password">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password="" />
-    </alter-resource>
+    </alter-storage-unit>
 
-    <alter-resource sql-case-id="alter-resource-url-single-with-password">
+    <alter-storage-unit sql-case-id="alter-storage-unit-url-single-with-password">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password="123456" />
-    </alter-resource>
+    </alter-storage-unit>
 
-    <alter-resource sql-case-id="alter-resource-url-multiple">
+    <alter-storage-unit sql-case-id="alter-storage-unit-url-multiple">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password="123456" />
         <data-source name="ds_1" url="jdbc:mysql://127.0.0.1:3306/test1" user="ROOT" password="123456" />
-    </alter-resource>
+    </alter-storage-unit>
 
-    <alter-resource sql-case-id="alter-resource-single-with-properties">
+    <alter-storage-unit sql-case-id="alter-storage-unit-single-with-properties">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="123456">
             <properties>
                 <property key="maxPoolSize" value="30" />
             </properties>
         </data-source>
-    </alter-resource>
+    </alter-storage-unit>
 
-    <alter-resource sql-case-id="alter-resource-url-single-with-empty-properties">
+    <alter-storage-unit sql-case-id="alter-storage-unit-url-single-with-empty-properties">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password="" />
-    </alter-resource>
+    </alter-storage-unit>
 
-    <alter-resource sql-case-id="alter-resource-url-single-with-properties">
+    <alter-storage-unit sql-case-id="alter-storage-unit-url-single-with-properties">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password="123456">
             <properties>
                 <property key="maxPoolSize" value="30" />
             </properties>
         </data-source>
-    </alter-resource>
+    </alter-storage-unit>
     
     <alter-sharding-auto-table-rule sql-case-id="alter-sharding-auto-table-rule">
         <rule name="t_order" table-strategy-column="order_id" key-generate-strategy-column="another_id">
diff --git a/test/parser/src/main/resources/case/rdl/create.xml b/test/parser/src/main/resources/case/rdl/create.xml
index 069937a6afb..46687c42292 100644
--- a/test/parser/src/main/resources/case/rdl/create.xml
+++ b/test/parser/src/main/resources/case/rdl/create.xml
@@ -17,60 +17,60 @@
   -->
 
 <sql-parser-test-cases>
-    <add-resource sql-case-id="add-resource-simple-single-without-password">
+    <register-storage-unit sql-case-id="register-storage-unit-simple-single-without-password">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="" />
-    </add-resource>
+    </register-storage-unit>
     
-    <add-resource sql-case-id="add-resource-simple-single-with-password">
+    <register-storage-unit sql-case-id="register-storage-unit-simple-single-with-password">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="123456" />
-    </add-resource>
+    </register-storage-unit>
     
-    <add-resource sql-case-id="add-resource-simple-multiple">
+    <register-storage-unit sql-case-id="register-storage-unit-simple-multiple">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="123456" />
         <data-source name="ds_1" hostname="127.0.0.1" port="3306" db="test1" user="ROOT" password="123456" />
-    </add-resource>
+    </register-storage-unit>
     
     <register-migration-source-storage-unit sql-case-id="single-register-migration-source-storage-unit">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="123456" url="jdbc:mysql://127.0.0.1:3306/test0"/>
     </register-migration-source-storage-unit>
 
-    <add-resource sql-case-id="add-resource-with-quota">
+    <register-storage-unit sql-case-id="register-storage-unit-with-quota">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="" />
-    </add-resource>
+    </register-storage-unit>
     
-    <add-resource sql-case-id="add-resource-url-single-without-password">
+    <register-storage-unit sql-case-id="register-storage-unit-url-single-without-password">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password="" />
-    </add-resource>
+    </register-storage-unit>
     
-    <add-resource sql-case-id="add-resource-url-single-with-password">
+    <register-storage-unit sql-case-id="register-storage-unit-url-single-with-password">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password="123456" />
-    </add-resource>
+    </register-storage-unit>
     
-    <add-resource sql-case-id="add-resource-url-multiple">
+    <register-storage-unit sql-case-id="register-storage-unit-url-multiple">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password="123456" />
         <data-source name="ds_1" url="jdbc:mysql://127.0.0.1:3306/test1" user="ROOT" password="123456" />
-    </add-resource>
+    </register-storage-unit>
 
-    <add-resource sql-case-id="add-resource-single-with-properties">
+    <register-storage-unit sql-case-id="register-storage-unit-single-with-properties">
         <data-source name="ds_0" hostname="127.0.0.1" port="3306" db="test0" user="ROOT" password="123456">
             <properties>
                 <property key="maxPoolSize" value="30" />
                 <property key="idleTimeout" value="30000" />
             </properties>
         </data-source>
-    </add-resource>
+    </register-storage-unit>
 
-    <add-resource sql-case-id="add-resource-url-single-with-empty-properties">
+    <register-storage-unit sql-case-id="register-storage-unit-url-single-with-empty-properties">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password=""/>
-    </add-resource>
+    </register-storage-unit>
 
-    <add-resource sql-case-id="add-resource-url-single-with-properties">
+    <register-storage-unit sql-case-id="register-storage-unit-url-single-with-properties">
         <data-source name="ds_0" url="jdbc:mysql://127.0.0.1:3306/test0" user="ROOT" password="123456">
             <properties>
                 <property key="maxPoolSize" value="30"/>
             </properties>
         </data-source>
-    </add-resource>
+    </register-storage-unit>
     
     <create-sharding-auto-table-rule sql-case-id="create-sharding-auto-table-rule">
         <rule name="t_order" table-strategy-column="order_id" key-generate-strategy-column="another_id">
diff --git a/test/parser/src/main/resources/case/rdl/drop.xml b/test/parser/src/main/resources/case/rdl/drop.xml
index 6c08c7ef0d7..ea6e7f4bf36 100644
--- a/test/parser/src/main/resources/case/rdl/drop.xml
+++ b/test/parser/src/main/resources/case/rdl/drop.xml
@@ -17,23 +17,23 @@
   -->
 
 <sql-parser-test-cases>
-    <drop-resource sql-case-id="drop-resource">
+    <unregister-storage-unit sql-case-id="unregister-storage-unit">
         <data-source>ds_0</data-source>
         <data-source>ds_1</data-source>
         <ignore-single-tables>false</ignore-single-tables>
-    </drop-resource>
+    </unregister-storage-unit>
 
-    <drop-resource sql-case-id="drop-resource-if-exists" if-exists="true">
+    <unregister-storage-unit sql-case-id="unregister-storage-unit-if-exists" if-exists="true">
         <data-source>ds_0</data-source>
         <data-source>ds_1</data-source>
         <ignore-single-tables>false</ignore-single-tables>
-    </drop-resource>
+    </unregister-storage-unit>
     
-    <drop-resource sql-case-id="drop-resource-ignore-single-tables">
+    <unregister-storage-unit sql-case-id="unregister-storage-unit-ignore-single-tables">
         <data-source>ds_0</data-source>
         <data-source>ds_1</data-source>
         <ignore-single-tables>true</ignore-single-tables>
-    </drop-resource>
+    </unregister-storage-unit>
     
     <drop-sharding-table-rule sql-case-id="drop-sharding-table-rule" >
         <table>t_order</table>
diff --git a/test/parser/src/main/resources/sql/supported/rdl/alter.xml b/test/parser/src/main/resources/sql/supported/rdl/alter.xml
index 34d7f433782..511ee8648c3 100644
--- a/test/parser/src/main/resources/sql/supported/rdl/alter.xml
+++ b/test/parser/src/main/resources/sql/supported/rdl/alter.xml
@@ -17,15 +17,15 @@
   -->
 
 <sql-cases>
-    <distsql-case id="alter-resource-simple-single-without-password" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
-    <distsql-case id="alter-resource-simple-single-with-password" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="alter-resource-simple-multiple" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456'), ds_1(HOST='127.0.0.1',PORT=3306,DB='test1',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="alter-resource-url-single-without-password" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT');" />
-    <distsql-case id="alter-resource-url-single-with-password" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="alter-resource-url-multiple" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456'), ds_1(URL='jdbc:mysql://127.0.0.1:3306/test1',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="alter-resource-single-with-properties" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'));" />
-    <distsql-case id="alter-resource-url-single-with-empty-properties" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PROPERTIES())" />
-    <distsql-case id="alter-resource-url-single-with-properties" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'))" />
+    <distsql-case id="alter-storage-unit-simple-single-without-password" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
+    <distsql-case id="alter-storage-unit-simple-single-with-password" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="alter-storage-unit-simple-multiple" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456'), ds_1(HOST='127.0.0.1',PORT=3306,DB='test1',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="alter-storage-unit-url-single-without-password" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT');" />
+    <distsql-case id="alter-storage-unit-url-single-with-password" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="alter-storage-unit-url-multiple" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456'), ds_1(URL='jdbc:mysql://127.0.0.1:3306/test1',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="alter-storage-unit-single-with-properties" value="ALTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'));" />
+    <distsql-case id="alter-storage-unit-url-single-with-empty-properties" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PROPERTIES())" />
+    <distsql-case id="alter-storage-unit-url-single-with-properties" value="ALTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'))" />
     <distsql-case id="alter-readwrite-splitting-rule" value="ALTER READWRITE_SPLITTING RULE ms_group_0 (AUTO_AWARE_RESOURCE=group_0, TYPE(NAME='random',PROPERTIES('read_weight'='2:1'))), ms_group_1 (WRITE_STORAGE_UNIT=primary_ds, READ_STORAGE_UNITS(replica_ds_0,replica_ds_1),TYPE(NAME='random'))" />
     <distsql-case id="alter-database-discovery-definition-rule" value="ALTER DB_DISCOVERY RULE ha_group_0 (STORAGE_UNITS(ds_0,ds_1), TYPE(NAME='mgr',PROPERTIES('groupName'='92504d5b-6dec')),HEARTBEAT(PROPERTIES('keepAliveCron'='0/5 * * * * ?'))), ha_group_1 (STORAGE_UNITS(ds_2,ds_3), TYPE(NAME='mgr2',PROPERTIES('groupName'='92504d5b-6dec-2')),HEARTBEAT(PROPERTIES('keepAliveCron'='0/6 * * * * ?')))" />
     <distsql-case id="alter-encrypt-rule" value="ALTER ENCRYPT RULE t_encrypt (RESOURCE=ds_1, COLUMNS((NAME=user_id,PLAIN=user_plain,CIPHER=user_cipher,TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abc'))), (NAME=order_id, CIPHER =order_cipher,TYPE(NAME='MD5'))))" />
diff --git a/test/parser/src/main/resources/sql/supported/rdl/create.xml b/test/parser/src/main/resources/sql/supported/rdl/create.xml
index 401cad899b3..f67302289d4 100644
--- a/test/parser/src/main/resources/sql/supported/rdl/create.xml
+++ b/test/parser/src/main/resources/sql/supported/rdl/create.xml
@@ -17,15 +17,15 @@
   -->
 
 <sql-cases>
-    <distsql-case id="add-resource-simple-single-without-password" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
-    <distsql-case id="add-resource-simple-single-with-password" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="add-resource-simple-multiple" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456'), ds_1(HOST='127.0.0.1',PORT=3306,DB='test1',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="add-resource-url-single-without-password" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT');" />
-    <distsql-case id="add-resource-url-single-with-password" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="add-resource-url-multiple" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456'), ds_1(URL='jdbc:mysql://127.0.0.1:3306/test1',USER='ROOT',PASSWORD='123456');" />
-    <distsql-case id="add-resource-single-with-properties" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30','idleTimeout'=30000));" />
-    <distsql-case id="add-resource-url-single-with-empty-properties" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PROPERTIES())" />
-    <distsql-case id="add-resource-url-single-with-properties" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'))" />
+    <distsql-case id="register-storage-unit-simple-single-without-password" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
+    <distsql-case id="register-storage-unit-simple-single-with-password" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="register-storage-unit-simple-multiple" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456'), ds_1(HOST='127.0.0.1',PORT=3306,DB='test1',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="register-storage-unit-url-single-without-password" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT');" />
+    <distsql-case id="register-storage-unit-url-single-with-password" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="register-storage-unit-url-multiple" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456'), ds_1(URL='jdbc:mysql://127.0.0.1:3306/test1',USER='ROOT',PASSWORD='123456');" />
+    <distsql-case id="register-storage-unit-single-with-properties" value="REGISTER STORAGE UNIT ds_0(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30','idleTimeout'=30000));" />
+    <distsql-case id="register-storage-unit-url-single-with-empty-properties" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PROPERTIES())" />
+    <distsql-case id="register-storage-unit-url-single-with-properties" value="REGISTER STORAGE UNIT ds_0(URL='jdbc:mysql://127.0.0.1:3306/test0',USER='ROOT',PASSWORD='123456',PROPERTIES('maxPoolSize'='30'))" />
     <distsql-case id="create-sharding-auto-table-rule" value="CREATE SHARDING TABLE RULE t_order (STORAGE_UNITS(ms_group_0,ms_group_1), SHARDING_COLUMN=order_id,TYPE(NAME='hash_mod',PROPERTIES('sharding-count'='4')), KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="create-sharding-auto-table-rule-with-inline-expression" value="CREATE SHARDING TABLE RULE t_order (STORAGE_UNITS('ms_group_${0..1}'), SHARDING_COLUMN=order_id,TYPE(NAME='hash_mod',PROPERTIES('sharding-count'=4)), KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="create-sharding-table-reference-rule" value="CREATE SHARDING TABLE REFERENCE RULE (t_order,t_order_item), (t_1,t_2)" />
@@ -46,7 +46,7 @@
     <distsql-case id="create-sharding-table-rule-with-auto-create-algorithm" value="CREATE SHARDING TABLE RULE t_order (DATANODES('ms_group_${0..1}.t_order_${0..1}'),DATABASE_STRATEGY(TYPE='standard',sharding_column = order_id,sharding_algorithm(TYPE(NAME='INLINE',PROPERTIES('algorithm-expression'='ms_group_${order_id % 2}')))),TABLE_STRATEGY(TYPE='standard',sharding_column = user_id,sharding_algorithm(type(name='INLINE',PROPERTIES('algorithm-expression'='t_order_${user_id % 2}')))),KEY_ [...]
     <distsql-case id="create-default-shadow-algorithm" value="CREATE DEFAULT SHADOW ALGORITHM TYPE(NAME='HINT', PROPERTIES('shadow'='true', 'foo'='bar'))" />
     <distsql-case id="create-default-single-table" value="SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0" />
-    <distsql-case id="add-resource-with-quota" value="REGISTER STORAGE UNIT `ds_0`(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
+    <distsql-case id="register-storage-unit-with-quota" value="REGISTER STORAGE UNIT `ds_0`(HOST='127.0.0.1',PORT=3306,DB='test0',USER='ROOT');" />
     <distsql-case id="create-sharding-auto-table-rule-with-quota" value="CREATE SHARDING TABLE RULE `t_order` (STORAGE_UNITS(ms_group_0,ms_group_1), SHARDING_COLUMN=order_id,TYPE(NAME='hash_mod',PROPERTIES('sharding-count'='4')), KEY_GENERATE_STRATEGY(COLUMN=another_id,TYPE(NAME='snowflake')))" />
     <distsql-case id="create-broadcast-table-rule-with-quota" value="CREATE BROADCAST TABLE RULE `t_1`,`t_2` " />
     <distsql-case id="create-readwrite-splitting-rule-with-quota" value="CREATE READWRITE_SPLITTING RULE `ms_group_0` (WRITE_STORAGE_UNIT=primary_ds, READ_STORAGE_UNITS(replica_ds_0,replica_ds_1), TYPE(NAME='random')))" />
diff --git a/test/parser/src/main/resources/sql/supported/rdl/drop.xml b/test/parser/src/main/resources/sql/supported/rdl/drop.xml
index 5524cccae23..c20edb6d230 100644
--- a/test/parser/src/main/resources/sql/supported/rdl/drop.xml
+++ b/test/parser/src/main/resources/sql/supported/rdl/drop.xml
@@ -17,9 +17,9 @@
   -->
 
 <sql-cases>
-    <distsql-case id="drop-resource" value="UNREGISTER STORAGE UNIT ds_0,ds_1" />
-    <distsql-case id="drop-resource-if-exists" value="UNREGISTER STORAGE UNIT IF EXISTS ds_0,ds_1" />
-    <distsql-case id="drop-resource-ignore-single-tables" value="UNREGISTER STORAGE UNIT ds_0,ds_1 ignore single tables;" />
+    <distsql-case id="unregister-storage-unit" value="UNREGISTER STORAGE UNIT ds_0,ds_1" />
+    <distsql-case id="unregister-storage-unit-if-exists" value="UNREGISTER STORAGE UNIT IF EXISTS ds_0,ds_1" />
+    <distsql-case id="unregister-storage-unit-ignore-single-tables" value="UNREGISTER STORAGE UNIT ds_0,ds_1 ignore single tables;" />
     <distsql-case id="drop-sharding-table-rule" value="DROP SHARDING TABLE RULE t_order,t_order_item" />
     <distsql-case id="drop-sharding-table-rule-if-exists" value="DROP SHARDING TABLE RULE IF EXISTS t_order,t_order_item" />
     <distsql-case id="drop-sharding-table-reference-rule" value="DROP SHARDING TABLE REFERENCE RULE (t_1,t_2)" />