You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/06/01 03:44:25 UTC

[shardingsphere] branch master updated: Split single rule related DistSQL into shardingsphere-single module (#25966)

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

zhaojinchao 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 2568122ea84 Split single rule related DistSQL into shardingsphere-single module (#25966)
2568122ea84 is described below

commit 2568122ea84ece56a2a24be3356cf7b639b19fa0
Author: Raigor <ra...@gmail.com>
AuthorDate: Thu Jun 1 11:44:17 2023 +0800

    Split single rule related DistSQL into shardingsphere-single module (#25966)
    
    * Split single rule related DistSQL into shardingsphere-single module
    
    * revert yaml config.
    
    * fix visit DatabaseName
---
 .../infra/util/regular}/RegularUtils.java          |  2 +-
 .../infra/util/regular}/RegularUtilsTest.java      |  2 +-
 kernel/single/distsql/handler/pom.xml              | 59 ++++++++++++++
 .../handler/query}/CountSingleTableExecutor.java   |  4 +-
 .../ShowDefaultSingleTableStorageUnitExecutor.java |  4 +-
 .../handler/query}/ShowSingleTableExecutor.java    |  6 +-
 ...aultSingleTableStorageUnitStatementUpdater.java |  8 +-
 ...hardingsphere.distsql.handler.query.RQLExecutor |  4 +-
 ...re.distsql.handler.update.RuleDefinitionUpdater |  2 +-
 .../query}/CountSingleTableExecutorTest.java       |  4 +-
 ...wDefaultSingleTableStorageUnitExecutorTest.java |  4 +-
 .../query}/ShowSingleTableExecutorTest.java        | 21 +----
 ...SingleTableStorageUnitStatementUpdaterTest.java |  4 +-
 kernel/single/distsql/parser/pom.xml               | 91 ++++++++++++++++++++++
 .../src/main/antlr4/imports/single/Alphabet.g4     | 41 +++++++---
 .../src/main/antlr4/imports/single/Keyword.g4      | 65 +++++++++++++---
 .../src/main/antlr4/imports/single/Literals.g4     | 27 ++++---
 .../src/main/antlr4/imports/single/RDLStatement.g4 | 21 +++--
 .../main/antlr4/imports/single}/RQLStatement.g4    | 22 ++----
 .../src/main/antlr4/imports/single/Symbol.g4       | 62 +++++++++++++++
 .../parser/autogen/SingleDistSQLStatement.g4       | 21 +++--
 .../distsql/parser/core/SingleDistSQLLexer.java    | 16 ++--
 .../distsql/parser/core/SingleDistSQLParser.java   | 32 ++++----
 .../parser/core/SingleDistSQLStatementVisitor.java | 70 +++++++++++++++++
 .../facade/SingleDistSQLStatementParserFacade.java | 53 +++++++++++++
 ...engine.spi.FeaturedDistSQLStatementParserFacade |  2 +-
 kernel/single/{ => distsql}/pom.xml                |  9 ++-
 kernel/single/{ => distsql/statement}/pom.xml      | 16 ++--
 .../SetDefaultSingleTableStorageUnitStatement.java |  3 +-
 .../statement/rql}/CountSingleTableStatement.java  |  3 +-
 ...ShowDefaultSingleTableStorageUnitStatement.java |  3 +-
 .../statement/rql}/ShowSingleTableStatement.java   |  3 +-
 kernel/single/pom.xml                              |  1 +
 .../engine/src/main/antlr4/imports/Keyword.g4      | 12 ---
 .../engine/src/main/antlr4/imports/RDLStatement.g4 |  4 -
 .../engine/src/main/antlr4/imports/RQLStatement.g4 | 12 ---
 .../parser/autogen/KernelDistSQLStatement.g4       |  4 -
 .../core/kernel/KernelDistSQLStatementVisitor.java | 29 -------
 proxy/backend/core/pom.xml                         |  5 ++
 .../ral/queryable/ShowDistVariablesExecutor.java   |  2 +-
 .../distsql/rql/rule/ShowLogicalTableExecutor.java |  2 +-
 ...hardingsphere.distsql.handler.query.RQLExecutor |  3 -
 .../handler/admin/executor/ShowTablesExecutor.java |  2 +-
 test/it/parser/pom.xml                             |  5 ++
 .../rdl/create/CreateRuleStatementAssert.java      |  2 +-
 ...faultSingleTableStorageUnitStatementAssert.java |  2 +-
 .../rql/impl/ShowTablesStatementAssert.java        |  2 +-
 .../table/ShowSingleTablesStatementAssert.java     |  2 +-
 48 files changed, 545 insertions(+), 228 deletions(-)

diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/RegularUtils.java b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/regular/RegularUtils.java
similarity index 96%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/RegularUtils.java
rename to infra/util/src/main/java/org/apache/shardingsphere/infra/util/regular/RegularUtils.java
index db4de1987f0..2d673654107 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/RegularUtils.java
+++ b/infra/util/src/main/java/org/apache/shardingsphere/infra/util/regular/RegularUtils.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.util;
+package org.apache.shardingsphere.infra.util.regular;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/util/RegularUtilsTest.java b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/regular/RegularUtilsTest.java
similarity index 96%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/util/RegularUtilsTest.java
rename to infra/util/src/test/java/org/apache/shardingsphere/infra/util/regular/RegularUtilsTest.java
index c34c310608c..5f68c57f518 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/util/RegularUtilsTest.java
+++ b/infra/util/src/test/java/org/apache/shardingsphere/infra/util/regular/RegularUtilsTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.util;
+package org.apache.shardingsphere.infra.util.regular;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/kernel/single/distsql/handler/pom.xml b/kernel/single/distsql/handler/pom.xml
new file mode 100644
index 00000000000..d76e2a9fe6f
--- /dev/null
+++ b/kernel/single/distsql/handler/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.shardingsphere</groupId>
+        <artifactId>shardingsphere-single-distsql</artifactId>
+        <version>5.3.3-SNAPSHOT</version>
+    </parent>
+    <artifactId>shardingsphere-single-distsql-handler</artifactId>
+    <name>${project.artifactId}</name>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-distsql-handler</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-single-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-single-distsql-statement</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-single-distsql-parser</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-test-util</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutor.java b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/query/CountSingleTableExecutor.java
similarity index 91%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutor.java
rename to kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/query/CountSingleTableExecutor.java
index 05e7160403c..f0db8687c17 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutor.java
+++ b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/query/CountSingleTableExecutor.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
+package org.apache.shardingsphere.single.distsql.handler.query;
 
 import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.CountSingleTableStatement;
 import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.single.distsql.statement.rql.CountSingleTableStatement;
 import org.apache.shardingsphere.single.rule.SingleRule;
 
 import java.util.Arrays;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowDefaultSingleTableStorageUnitExecutor.java b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutor.java
similarity index 92%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowDefaultSingleTableStorageUnitExecutor.java
rename to kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutor.java
index 78d53c930f5..70102556d83 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowDefaultSingleTableStorageUnitExecutor.java
+++ b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutor.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
+package org.apache.shardingsphere.single.distsql.handler.query;
 
 import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.single.distsql.statement.rql.ShowDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.single.rule.SingleRule;
 
 import java.util.Collection;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowSingleTableExecutor.java b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutor.java
similarity index 93%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowSingleTableExecutor.java
rename to kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutor.java
index 58104ba9621..a4315413bad 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowSingleTableExecutor.java
+++ b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutor.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
+package org.apache.shardingsphere.single.distsql.handler.query;
 
 import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.proxy.backend.util.RegularUtils;
+import org.apache.shardingsphere.infra.util.regular.RegularUtils;
+import org.apache.shardingsphere.single.distsql.statement.rql.ShowSingleTableStatement;
 import org.apache.shardingsphere.single.rule.SingleRule;
 import org.apache.shardingsphere.sql.parser.sql.common.util.SQLUtils;
 
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitStatementUpdater.java
similarity index 91%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java
rename to kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitStatementUpdater.java
index cebdb18c7a7..78dcf33ca79 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java
+++ b/kernel/single/distsql/handler/src/main/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitStatementUpdater.java
@@ -15,15 +15,15 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule;
+package org.apache.shardingsphere.single.distsql.handler.update;
 
-import org.apache.commons.lang3.StringUtils;
+import com.google.common.base.Strings;
 import org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
 import org.apache.shardingsphere.distsql.handler.update.RuleDefinitionCreateUpdater;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
 import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
+import org.apache.shardingsphere.single.distsql.statement.rdl.SetDefaultSingleTableStorageUnitStatement;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -39,7 +39,7 @@ public final class SetDefaultSingleTableStorageUnitStatementUpdater implements R
     }
     
     private void checkStorageUnitExist(final ShardingSphereDatabase database, final SetDefaultSingleTableStorageUnitStatement sqlStatement) {
-        if (StringUtils.isNotBlank(sqlStatement.getDefaultStorageUnit())) {
+        if (!Strings.isNullOrEmpty(sqlStatement.getDefaultStorageUnit())) {
             Collection<String> storageUnitNames = database.getResourceMetaData().getDataSources().keySet();
             ShardingSpherePreconditions.checkState(storageUnitNames.contains(sqlStatement.getDefaultStorageUnit()),
                     () -> new MissingRequiredStorageUnitsException(database.getName(), Collections.singleton(sqlStatement.getDefaultStorageUnit())));
diff --git a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater b/kernel/single/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
similarity index 75%
copy from proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater
copy to kernel/single/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
index 3310f24b6b3..28f9b11ee6b 100644
--- a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater
+++ b/kernel/single/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
@@ -15,4 +15,6 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule.SetDefaultSingleTableStorageUnitStatementUpdater
+org.apache.shardingsphere.single.distsql.handler.query.ShowSingleTableExecutor
+org.apache.shardingsphere.single.distsql.handler.query.ShowDefaultSingleTableStorageUnitExecutor
+org.apache.shardingsphere.single.distsql.handler.query.CountSingleTableExecutor
diff --git a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater b/kernel/single/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater
similarity index 87%
copy from proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater
copy to kernel/single/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater
index 3310f24b6b3..fbdde28c1d7 100644
--- a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater
+++ b/kernel/single/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule.SetDefaultSingleTableStorageUnitStatementUpdater
+org.apache.shardingsphere.single.distsql.handler.update.SetDefaultSingleTableStorageUnitStatementUpdater
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutorTest.java b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/CountSingleTableExecutorTest.java
similarity index 94%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutorTest.java
rename to kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/CountSingleTableExecutorTest.java
index 4b74029094d..a0903781299 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/CountSingleTableExecutorTest.java
+++ b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/CountSingleTableExecutorTest.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
+package org.apache.shardingsphere.single.distsql.handler.query;
 
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.CountSingleTableStatement;
 import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
+import org.apache.shardingsphere.single.distsql.statement.rql.CountSingleTableStatement;
 import org.apache.shardingsphere.single.rule.SingleRule;
 import org.junit.jupiter.api.Test;
 
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowDefaultSingleTableStorageUnitExecutorTest.java b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutorTest.java
similarity index 94%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowDefaultSingleTableStorageUnitExecutorTest.java
rename to kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutorTest.java
index 4ced66e6733..01c057e7a15 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowDefaultSingleTableStorageUnitExecutorTest.java
+++ b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutorTest.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
+package org.apache.shardingsphere.single.distsql.handler.query;
 
 import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
+import org.apache.shardingsphere.single.distsql.statement.rql.ShowDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.single.rule.SingleRule;
 import org.junit.jupiter.api.Test;
 
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowSingleTableExecutorTest.java b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutorTest.java
similarity index 85%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowSingleTableExecutorTest.java
rename to kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutorTest.java
index c5ecc00fd52..0f99e2858b3 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowSingleTableExecutorTest.java
+++ b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutorTest.java
@@ -15,17 +15,15 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule;
+package org.apache.shardingsphere.single.distsql.handler.query;
 
 import org.apache.shardingsphere.distsql.handler.query.RQLExecutor;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
-import org.apache.shardingsphere.shadow.rule.ShadowRule;
+import org.apache.shardingsphere.single.distsql.statement.rql.ShowSingleTableStatement;
 import org.apache.shardingsphere.single.rule.SingleRule;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -102,21 +100,6 @@ class ShowSingleTableExecutorTest {
         assertThat(fourthRow.getCell(2), is("ds_1_multiple"));
     }
     
-    @Test
-    void assertGetRowDataWithOtherRules() {
-        addShardingSphereRule(new ShadowRule(mock(ShadowRuleConfiguration.class)));
-        RQLExecutor<ShowSingleTableStatement> executor = new ShowSingleTableExecutor();
-        Collection<LocalDataQueryResultRow> actual = executor.getRows(database, mock(ShowSingleTableStatement.class));
-        assertThat(actual.size(), is(2));
-        Iterator<LocalDataQueryResultRow> rowData = actual.iterator();
-        LocalDataQueryResultRow firstRow = rowData.next();
-        assertThat(firstRow.getCell(1), is("t_order"));
-        assertThat(firstRow.getCell(2), is("ds_1"));
-        LocalDataQueryResultRow secondRow = rowData.next();
-        assertThat(secondRow.getCell(1), is("t_order_item"));
-        assertThat(secondRow.getCell(2), is("ds_2"));
-    }
-    
     @Test
     void assertGetSingleTableWithLikeLiteral() {
         RQLExecutor<ShowSingleTableStatement> executor = new ShowSingleTableExecutor();
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdaterTest.java b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitStatementUpdaterTest.java
similarity index 94%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdaterTest.java
rename to kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitStatementUpdaterTest.java
index e3827949c35..cf85828f426 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdaterTest.java
+++ b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/update/SetDefaultSingleTableStorageUnitStatementUpdaterTest.java
@@ -15,12 +15,12 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule;
+package org.apache.shardingsphere.single.distsql.handler.update;
 
 import org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
+import org.apache.shardingsphere.single.distsql.statement.rdl.SetDefaultSingleTableStorageUnitStatement;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.junit.jupiter.MockitoExtension;
diff --git a/kernel/single/distsql/parser/pom.xml b/kernel/single/distsql/parser/pom.xml
new file mode 100644
index 00000000000..44033e09ae3
--- /dev/null
+++ b/kernel/single/distsql/parser/pom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ 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.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.shardingsphere</groupId>
+        <artifactId>shardingsphere-single-distsql</artifactId>
+        <version>5.3.3-SNAPSHOT</version>
+    </parent>
+    <artifactId>shardingsphere-single-distsql-parser</artifactId>
+    <name>${project.artifactId}</name>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-parser-sql-spi</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-parser-distsql-engine</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-single-distsql-statement</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+    
+    <profiles>
+        <profile>
+            <id>jdk8</id>
+            <activation>
+                <jdk>1.8</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.mojo</groupId>
+                        <artifactId>build-helper-maven-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>jdk11+</id>
+            <activation>
+                <jdk>[11,)</jdk>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.antlr</groupId>
+                        <artifactId>antlr4-maven-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>antlr</id>
+                                <goals>
+                                    <goal>antlr4</goal>
+                                </goals>
+                                <configuration>
+                                    <libDirectory>src/main/antlr4/imports/single/</libDirectory>
+                                    <listener>false</listener>
+                                    <visitor>true</visitor>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+</project>
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java b/kernel/single/distsql/parser/src/main/antlr4/imports/single/Alphabet.g4
similarity index 56%
copy from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
copy to kernel/single/distsql/parser/src/main/antlr4/imports/single/Alphabet.g4
index 3d006651f05..f7603cc7e63 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
+++ b/kernel/single/distsql/parser/src/main/antlr4/imports/single/Alphabet.g4
@@ -15,17 +15,34 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rdl.create;
+lexer grammar Alphabet;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+FOR_GENERATOR: 'DO NOT MATCH ANY THING, JUST FOR GENERATOR';
 
-/**
- * Set default single table storage unit statement.
- */
-@RequiredArgsConstructor
-@Getter
-public final class SetDefaultSingleTableStorageUnitStatement extends CreateRuleStatement {
-    
-    private final String defaultStorageUnit;
-}
+fragment A:   [Aa];
+fragment B:   [Bb];
+fragment C:   [Cc];
+fragment D:   [Dd];
+fragment E:   [Ee];
+fragment F:   [Ff];
+fragment G:   [Gg];
+fragment H:   [Hh];
+fragment I:   [Ii];
+fragment J:   [Jj];
+fragment K:   [Kk];
+fragment L:   [Ll];
+fragment M:   [Mm];
+fragment N:   [Nn];
+fragment O:   [Oo];
+fragment P:   [Pp];
+fragment Q:   [Qq];
+fragment R:   [Rr];
+fragment S:   [Ss];
+fragment T:   [Tt];
+fragment U:   [Uu];
+fragment V:   [Vv];
+fragment W:   [Ww];
+fragment X:   [Xx];
+fragment Y:   [Yy];
+fragment Z:   [Zz];
+fragment UL_: '_';
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java b/kernel/single/distsql/parser/src/main/antlr4/imports/single/Keyword.g4
similarity index 65%
copy from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
copy to kernel/single/distsql/parser/src/main/antlr4/imports/single/Keyword.g4
index 3d006651f05..38b2ff61786 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
+++ b/kernel/single/distsql/parser/src/main/antlr4/imports/single/Keyword.g4
@@ -15,17 +15,58 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rdl.create;
+lexer grammar Keyword;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import Alphabet;
 
-/**
- * Set default single table storage unit statement.
- */
-@RequiredArgsConstructor
-@Getter
-public final class SetDefaultSingleTableStorageUnitStatement extends CreateRuleStatement {
-    
-    private final String defaultStorageUnit;
-}
+WS
+    : [ \t\r\n] + ->skip
+    ;
+
+SHOW
+    : S H O W
+    ;
+
+SET
+    : S E T
+    ;
+
+DEFAULT
+    : D E F A U L T
+    ;
+
+SINGLE
+    : S I N G L E
+    ;
+
+TABLE
+    : T A B L E
+    ;
+
+TABLES
+    : T A B L E S
+    ;
+
+STORAGE
+    : S T O R A G E
+    ;
+
+UNIT
+    : U N I T
+    ;
+
+RANDOM
+    : R A N D O M
+    ;
+
+FROM
+    : F R O M
+    ;
+
+COUNT
+    : C O U N T
+    ;
+
+LIKE
+    : L I K E
+    ;
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java b/kernel/single/distsql/parser/src/main/antlr4/imports/single/Literals.g4
similarity index 68%
copy from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
copy to kernel/single/distsql/parser/src/main/antlr4/imports/single/Literals.g4
index 3d006651f05..68f6a1b07ed 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
+++ b/kernel/single/distsql/parser/src/main/antlr4/imports/single/Literals.g4
@@ -15,17 +15,20 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rdl.create;
+lexer grammar Literals;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import Alphabet, Symbol;
 
-/**
- * Set default single table storage unit statement.
- */
-@RequiredArgsConstructor
-@Getter
-public final class SetDefaultSingleTableStorageUnitStatement extends CreateRuleStatement {
-    
-    private final String defaultStorageUnit;
-}
+IDENTIFIER_
+    : [A-Za-z_$0-9]*?[A-Za-z_$]+?[A-Za-z_$0-9]*
+    | BQ_ ~'`'+ BQ_
+    ;
+
+STRING_
+    : (DQ_ ('\\'. | '""' | ~('"' | '\\'))* DQ_)
+    | (SQ_ ('\\'. | '\'\'' | ~('\'' | '\\'))* SQ_)
+    ;
+
+INT_
+    : [0-9]+
+    ;
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java b/kernel/single/distsql/parser/src/main/antlr4/imports/single/RDLStatement.g4
similarity index 68%
copy from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
copy to kernel/single/distsql/parser/src/main/antlr4/imports/single/RDLStatement.g4
index 3d006651f05..9d79c7eb2bf 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
+++ b/kernel/single/distsql/parser/src/main/antlr4/imports/single/RDLStatement.g4
@@ -15,17 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rdl.create;
+grammar RDLStatement;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import Symbol, Keyword, Literals;
 
-/**
- * Set default single table storage unit statement.
- */
-@RequiredArgsConstructor
-@Getter
-public final class SetDefaultSingleTableStorageUnitStatement extends CreateRuleStatement {
-    
-    private final String defaultStorageUnit;
-}
+setDefaultSingleTableStorageUnit
+    : SET DEFAULT SINGLE TABLE STORAGE UNIT EQ_ (storageUnitName | RANDOM)
+    ;
+
+storageUnitName
+    : IDENTIFIER_
+    ;
diff --git a/parser/distsql/engine/src/main/antlr4/imports/RQLStatement.g4 b/kernel/single/distsql/parser/src/main/antlr4/imports/single/RQLStatement.g4
similarity index 78%
copy from parser/distsql/engine/src/main/antlr4/imports/RQLStatement.g4
copy to kernel/single/distsql/parser/src/main/antlr4/imports/single/RQLStatement.g4
index d38cd8755e6..fb2ca92cca4 100644
--- a/parser/distsql/engine/src/main/antlr4/imports/RQLStatement.g4
+++ b/kernel/single/distsql/parser/src/main/antlr4/imports/single/RQLStatement.g4
@@ -17,19 +17,7 @@
 
 grammar RQLStatement;
 
-import BaseRule;
-
-showStorageUnits
-    : SHOW STORAGE UNITS (FROM databaseName)? (WHERE USAGE_COUNT EQ_ usageCount)?
-    ;
-
-showRulesUsedStorageUnit
-    : SHOW RULES USED STORAGE UNIT storageUnitName (FROM databaseName)?
-    ;
-
-showLogicalTables
-    : SHOW LOGICAL TABLES showLike? (FROM databaseName)?
-    ;
+import Symbol, Keyword, Literals;
 
 showDefaultSingleTableStorageUnit
     : SHOW DEFAULT SINGLE TABLE STORAGE UNIT (FROM databaseName)?
@@ -43,8 +31,12 @@ countSingleTable
     : COUNT SINGLE TABLE (FROM databaseName)?
     ;
 
-usageCount
-    : INT_
+databaseName
+    : IDENTIFIER_
+    ;
+
+tableName
+    : IDENTIFIER_
     ;
 
 showLike
diff --git a/kernel/single/distsql/parser/src/main/antlr4/imports/single/Symbol.g4 b/kernel/single/distsql/parser/src/main/antlr4/imports/single/Symbol.g4
new file mode 100644
index 00000000000..61031e590dd
--- /dev/null
+++ b/kernel/single/distsql/parser/src/main/antlr4/imports/single/Symbol.g4
@@ -0,0 +1,62 @@
+/*
+ * 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.
+ */
+
+lexer grammar Symbol;
+
+AND_:                '&&';
+OR_:                 '||';
+NOT_:                '!';
+TILDE_:              '~';
+VERTICALBAR_:       '|';
+AMPERSAND_:          '&';
+SIGNEDLEFTSHIFT_:  '<<';
+SIGNEDRIGHTSHIFT_: '>>';
+CARET_:              '^';
+MOD_:                '%';
+COLON_:              ':';
+PLUS_:               '+';
+MINUS_:              '-';
+ASTERISK_:           '*';
+SLASH_:              '/';
+BACKSLASH_:          '\\';
+DOT_:                '.';
+DOTASTERISK_:       '.*';
+SAFEEQ_:            '<=>';
+DEQ_:                '==';
+EQ_:                 '=';
+NEQ_:                '<>' | '!=';
+GT_:                 '>';
+GTE_:                '>=';
+LT_:                 '<';
+LTE_:                '<=';
+POUND_:              '#';
+LP_:                 '(';
+RP_:                 ')';
+LBE_:                '{';
+RBE_:                '}';
+LBT_:                '[';
+RBT_:                ']';
+COMMA_:              ',';
+DQ_:                 '"';
+SQ_:                 '\'';
+BQ_:                 '`';
+QUESTION_:           '?';
+AT_:                 '@';
+SEMI_:               ';';
+JSONSEPARATOR_:      '->>';
+UL_:                 '_';
+DL_:                 '$';
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java b/kernel/single/distsql/parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/SingleDistSQLStatement.g4
similarity index 68%
copy from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
copy to kernel/single/distsql/parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/SingleDistSQLStatement.g4
index 3d006651f05..4e6f7df90dd 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
+++ b/kernel/single/distsql/parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/SingleDistSQLStatement.g4
@@ -15,17 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rdl.create;
+grammar SingleDistSQLStatement;
 
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
+import Symbol, RDLStatement, RQLStatement;
 
-/**
- * Set default single table storage unit statement.
- */
-@RequiredArgsConstructor
-@Getter
-public final class SetDefaultSingleTableStorageUnitStatement extends CreateRuleStatement {
-    
-    private final String defaultStorageUnit;
-}
+execute
+    : (setDefaultSingleTableStorageUnit
+    | showDefaultSingleTableStorageUnit
+    | showSingleTable
+    | countSingleTable
+    ) SEMI_? EOF
+    ;
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowDefaultSingleTableStorageUnitStatement.java b/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/core/SingleDistSQLLexer.java
similarity index 64%
copy from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowDefaultSingleTableStorageUnitStatement.java
copy to kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/core/SingleDistSQLLexer.java
index 27f4e50d23d..fdf8c6b01a7 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowDefaultSingleTableStorageUnitStatement.java
+++ b/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/core/SingleDistSQLLexer.java
@@ -15,18 +15,18 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rql.show;
+package org.apache.shardingsphere.single.distsql.parser.core;
 
-import lombok.Getter;
-import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
+import org.antlr.v4.runtime.CharStream;
+import org.apache.shardingsphere.distsql.parser.autogen.SingleDistSQLStatementLexer;
+import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
 
 /**
- * Show default single table storage unit statement.
+ * SQL lexer for single DistSQL.
  */
-@Getter
-public final class ShowDefaultSingleTableStorageUnitStatement extends ShowRulesStatement {
+public final class SingleDistSQLLexer extends SingleDistSQLStatementLexer implements SQLLexer {
     
-    public ShowDefaultSingleTableStorageUnitStatement(final DatabaseSegment database) {
-        super(database);
+    public SingleDistSQLLexer(final CharStream input) {
+        super(input);
     }
 }
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableStatement.java b/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/core/SingleDistSQLParser.java
similarity index 52%
copy from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableStatement.java
copy to kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/core/SingleDistSQLParser.java
index d39372b2a60..60fcdfa4381 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableStatement.java
+++ b/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/core/SingleDistSQLParser.java
@@ -15,30 +15,26 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rql.show;
+package org.apache.shardingsphere.single.distsql.parser.core;
 
-import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
-
-import java.util.Optional;
+import org.antlr.v4.runtime.CommonTokenStream;
+import org.antlr.v4.runtime.TokenStream;
+import org.apache.shardingsphere.distsql.parser.autogen.SingleDistSQLStatementParser;
+import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
+import org.apache.shardingsphere.sql.parser.api.ASTNode;
+import org.apache.shardingsphere.sql.parser.core.ParseASTNode;
 
 /**
- * Show single table statement.
+ * SQL parser for single DistSQL.
  */
-public final class ShowSingleTableStatement extends ShowTablesStatement {
-    
-    private final String tableName;
+public final class SingleDistSQLParser extends SingleDistSQLStatementParser implements SQLParser {
     
-    public ShowSingleTableStatement(final String tableName, final String likePattern, final DatabaseSegment database) {
-        super(likePattern, database);
-        this.tableName = tableName;
+    public SingleDistSQLParser(final TokenStream input) {
+        super(input);
     }
     
-    /**
-     * Get table name.
-     *
-     * @return table name
-     */
-    public Optional<String> getTableName() {
-        return Optional.ofNullable(tableName);
+    @Override
+    public ASTNode parse() {
+        return new ParseASTNode(execute(), (CommonTokenStream) getTokenStream());
     }
 }
diff --git a/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/core/SingleDistSQLStatementVisitor.java b/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/core/SingleDistSQLStatementVisitor.java
new file mode 100644
index 00000000000..397c60d7b39
--- /dev/null
+++ b/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/core/SingleDistSQLStatementVisitor.java
@@ -0,0 +1,70 @@
+/*
+ * 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.single.distsql.parser.core;
+
+import org.antlr.v4.runtime.tree.ParseTree;
+import org.apache.shardingsphere.distsql.parser.autogen.SingleDistSQLStatementBaseVisitor;
+import org.apache.shardingsphere.distsql.parser.autogen.SingleDistSQLStatementParser.CountSingleTableContext;
+import org.apache.shardingsphere.distsql.parser.autogen.SingleDistSQLStatementParser.DatabaseNameContext;
+import org.apache.shardingsphere.distsql.parser.autogen.SingleDistSQLStatementParser.SetDefaultSingleTableStorageUnitContext;
+import org.apache.shardingsphere.distsql.parser.autogen.SingleDistSQLStatementParser.ShowDefaultSingleTableStorageUnitContext;
+import org.apache.shardingsphere.distsql.parser.autogen.SingleDistSQLStatementParser.ShowSingleTableContext;
+import org.apache.shardingsphere.single.distsql.statement.rdl.SetDefaultSingleTableStorageUnitStatement;
+import org.apache.shardingsphere.single.distsql.statement.rql.CountSingleTableStatement;
+import org.apache.shardingsphere.single.distsql.statement.rql.ShowDefaultSingleTableStorageUnitStatement;
+import org.apache.shardingsphere.single.distsql.statement.rql.ShowSingleTableStatement;
+import org.apache.shardingsphere.sql.parser.api.ASTNode;
+import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
+
+/**
+ * SQL statement visitor for single DistSQL.
+ */
+public final class SingleDistSQLStatementVisitor extends SingleDistSQLStatementBaseVisitor<ASTNode> implements SQLVisitor<ASTNode> {
+    
+    @Override
+    public ASTNode visitCountSingleTable(final CountSingleTableContext ctx) {
+        return new CountSingleTableStatement(null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
+    }
+    
+    @Override
+    public ASTNode visitSetDefaultSingleTableStorageUnit(final SetDefaultSingleTableStorageUnitContext ctx) {
+        return new SetDefaultSingleTableStorageUnitStatement(null == ctx.storageUnitName() ? null : getIdentifierValue(ctx.storageUnitName()));
+    }
+    
+    @Override
+    public ASTNode visitShowDefaultSingleTableStorageUnit(final ShowDefaultSingleTableStorageUnitContext ctx) {
+        return new ShowDefaultSingleTableStorageUnitStatement(null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
+    }
+    
+    @Override
+    public ASTNode visitShowSingleTable(final ShowSingleTableContext ctx) {
+        return new ShowSingleTableStatement(null == ctx.TABLE() ? null : getIdentifierValue(ctx.tableName()), null == ctx.showLike() ? null : getIdentifierValue(ctx.showLike().likePattern()),
+                null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
+    }
+    
+    @Override
+    public ASTNode visitDatabaseName(final DatabaseNameContext ctx) {
+        return new DatabaseSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(), new IdentifierValue(ctx.getText()));
+    }
+    
+    private String getIdentifierValue(final ParseTree context) {
+        return null == context ? null : new IdentifierValue(context.getText()).getValue();
+    }
+}
diff --git a/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/facade/SingleDistSQLStatementParserFacade.java b/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/facade/SingleDistSQLStatementParserFacade.java
new file mode 100644
index 00000000000..556a9ad4672
--- /dev/null
+++ b/kernel/single/distsql/parser/src/main/java/org/apache/shardingsphere/single/distsql/parser/facade/SingleDistSQLStatementParserFacade.java
@@ -0,0 +1,53 @@
+/*
+ * 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.single.distsql.parser.facade;
+
+import org.apache.shardingsphere.distsql.parser.engine.spi.FeaturedDistSQLStatementParserFacade;
+import org.apache.shardingsphere.sql.parser.api.ASTNode;
+import org.apache.shardingsphere.sql.parser.api.parser.SQLLexer;
+import org.apache.shardingsphere.sql.parser.api.parser.SQLParser;
+import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
+import org.apache.shardingsphere.single.distsql.parser.core.SingleDistSQLLexer;
+import org.apache.shardingsphere.single.distsql.parser.core.SingleDistSQLParser;
+import org.apache.shardingsphere.single.distsql.parser.core.SingleDistSQLStatementVisitor;
+
+/**
+ * SQL parser facade for single DistSQL statement.
+ */
+public final class SingleDistSQLStatementParserFacade implements FeaturedDistSQLStatementParserFacade {
+    
+    @Override
+    public Class<? extends SQLLexer> getLexerClass() {
+        return SingleDistSQLLexer.class;
+    }
+    
+    @Override
+    public Class<? extends SQLParser> getParserClass() {
+        return SingleDistSQLParser.class;
+    }
+    
+    @Override
+    public Class<? extends SQLVisitor<ASTNode>> getVisitorClass() {
+        return SingleDistSQLStatementVisitor.class;
+    }
+    
+    @Override
+    public String getType() {
+        return "single";
+    }
+}
diff --git a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater b/kernel/single/distsql/parser/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.parser.engine.spi.FeaturedDistSQLStatementParserFacade
similarity index 87%
rename from proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater
rename to kernel/single/distsql/parser/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.parser.engine.spi.FeaturedDistSQLStatementParserFacade
index 3310f24b6b3..eb114384dc1 100644
--- a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.update.RuleDefinitionUpdater
+++ b/kernel/single/distsql/parser/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.parser.engine.spi.FeaturedDistSQLStatementParserFacade
@@ -15,4 +15,4 @@
 # limitations under the License.
 #
 
-org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule.SetDefaultSingleTableStorageUnitStatementUpdater
+org.apache.shardingsphere.single.distsql.parser.facade.SingleDistSQLStatementParserFacade
diff --git a/kernel/single/pom.xml b/kernel/single/distsql/pom.xml
similarity index 86%
copy from kernel/single/pom.xml
copy to kernel/single/distsql/pom.xml
index 5c9f6767b68..85df81cfd69 100644
--- a/kernel/single/pom.xml
+++ b/kernel/single/distsql/pom.xml
@@ -21,15 +21,16 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-kernel</artifactId>
+        <artifactId>shardingsphere-single</artifactId>
         <version>5.3.3-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-single</artifactId>
+    <artifactId>shardingsphere-single-distsql</artifactId>
     <packaging>pom</packaging>
     <name>${project.artifactId}</name>
     
     <modules>
-        <module>api</module>
-        <module>core</module>
+        <module>statement</module>
+        <module>parser</module>
+        <module>handler</module>
     </modules>
 </project>
diff --git a/kernel/single/pom.xml b/kernel/single/distsql/statement/pom.xml
similarity index 76%
copy from kernel/single/pom.xml
copy to kernel/single/distsql/statement/pom.xml
index 5c9f6767b68..b822d96130a 100644
--- a/kernel/single/pom.xml
+++ b/kernel/single/distsql/statement/pom.xml
@@ -21,15 +21,17 @@
     <modelVersion>4.0.0</modelVersion>
     <parent>
         <groupId>org.apache.shardingsphere</groupId>
-        <artifactId>shardingsphere-kernel</artifactId>
+        <artifactId>shardingsphere-single-distsql</artifactId>
         <version>5.3.3-SNAPSHOT</version>
     </parent>
-    <artifactId>shardingsphere-single</artifactId>
-    <packaging>pom</packaging>
+    <artifactId>shardingsphere-single-distsql-statement</artifactId>
     <name>${project.artifactId}</name>
     
-    <modules>
-        <module>api</module>
-        <module>core</module>
-    </modules>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-parser-distsql-statement</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
 </project>
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java b/kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rdl/SetDefaultSingleTableStorageUnitStatement.java
similarity index 87%
rename from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
rename to kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rdl/SetDefaultSingleTableStorageUnitStatement.java
index 3d006651f05..df16c7c3904 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rdl/create/SetDefaultSingleTableStorageUnitStatement.java
+++ b/kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rdl/SetDefaultSingleTableStorageUnitStatement.java
@@ -15,10 +15,11 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rdl.create;
+package org.apache.shardingsphere.single.distsql.statement.rdl;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateRuleStatement;
 
 /**
  * Set default single table storage unit statement.
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/CountSingleTableStatement.java b/kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rql/CountSingleTableStatement.java
similarity index 88%
rename from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/CountSingleTableStatement.java
rename to kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rql/CountSingleTableStatement.java
index bade19dab9c..45ff04510fd 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/CountSingleTableStatement.java
+++ b/kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rql/CountSingleTableStatement.java
@@ -15,8 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rql.show;
+package org.apache.shardingsphere.single.distsql.statement.rql;
 
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRulesStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
 
 /**
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowDefaultSingleTableStorageUnitStatement.java b/kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rql/ShowDefaultSingleTableStorageUnitStatement.java
similarity index 88%
rename from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowDefaultSingleTableStorageUnitStatement.java
rename to kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rql/ShowDefaultSingleTableStorageUnitStatement.java
index 27f4e50d23d..6ceab4cfe8f 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowDefaultSingleTableStorageUnitStatement.java
+++ b/kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rql/ShowDefaultSingleTableStorageUnitStatement.java
@@ -15,9 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rql.show;
+package org.apache.shardingsphere.single.distsql.statement.rql;
 
 import lombok.Getter;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRulesStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
 
 /**
diff --git a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableStatement.java b/kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rql/ShowSingleTableStatement.java
similarity index 90%
rename from parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableStatement.java
rename to kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rql/ShowSingleTableStatement.java
index d39372b2a60..eaa42c823c7 100644
--- a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableStatement.java
+++ b/kernel/single/distsql/statement/src/main/java/org/apache/shardingsphere/single/distsql/statement/rql/ShowSingleTableStatement.java
@@ -15,8 +15,9 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.parser.statement.rql.show;
+package org.apache.shardingsphere.single.distsql.statement.rql;
 
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowTablesStatement;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
 
 import java.util.Optional;
diff --git a/kernel/single/pom.xml b/kernel/single/pom.xml
index 5c9f6767b68..1e8be90e062 100644
--- a/kernel/single/pom.xml
+++ b/kernel/single/pom.xml
@@ -31,5 +31,6 @@
     <modules>
         <module>api</module>
         <module>core</module>
+        <module>distsql</module>
     </modules>
 </project>
diff --git a/parser/distsql/engine/src/main/antlr4/imports/Keyword.g4 b/parser/distsql/engine/src/main/antlr4/imports/Keyword.g4
index 5c2a8018b14..b81678cff3c 100644
--- a/parser/distsql/engine/src/main/antlr4/imports/Keyword.g4
+++ b/parser/distsql/engine/src/main/antlr4/imports/Keyword.g4
@@ -35,10 +35,6 @@ CREATE
     : C R E A T E
     ;
 
-DEFAULT
-    : D E F A U L T
-    ;
-
 ALTER
     : A L T E R
     ;
@@ -187,10 +183,6 @@ MODE
     : M O D E
     ;
 
-COUNT
-    : C O U N T
-    ;
-
 LABEL
     : L A B E L
     ;
@@ -287,10 +279,6 @@ UNITS
     : U N I T S
     ;
 
-RANDOM
-    : R A N D O M
-    ;
-
 DIST
     : D I S T
     ;
diff --git a/parser/distsql/engine/src/main/antlr4/imports/RDLStatement.g4 b/parser/distsql/engine/src/main/antlr4/imports/RDLStatement.g4
index c520f29626d..7e4f56acde3 100644
--- a/parser/distsql/engine/src/main/antlr4/imports/RDLStatement.g4
+++ b/parser/distsql/engine/src/main/antlr4/imports/RDLStatement.g4
@@ -31,10 +31,6 @@ unregisterStorageUnit
     : UNREGISTER STORAGE UNIT ifExists? storageUnitName (COMMA_ storageUnitName)* ignoreSingleTables?
     ;
 
-setDefaultSingleTableStorageUnit
-    : SET DEFAULT SINGLE TABLE STORAGE UNIT EQ_ (storageUnitName | RANDOM)
-    ;
-
 storageUnitDefinition
     : storageUnitName LP_ (simpleSource | urlSource) COMMA_ USER EQ_ user (COMMA_ PASSWORD EQ_ password)? (COMMA_ propertiesDefinition)? RP_
     ;
diff --git a/parser/distsql/engine/src/main/antlr4/imports/RQLStatement.g4 b/parser/distsql/engine/src/main/antlr4/imports/RQLStatement.g4
index d38cd8755e6..981be702b66 100644
--- a/parser/distsql/engine/src/main/antlr4/imports/RQLStatement.g4
+++ b/parser/distsql/engine/src/main/antlr4/imports/RQLStatement.g4
@@ -31,18 +31,6 @@ showLogicalTables
     : SHOW LOGICAL TABLES showLike? (FROM databaseName)?
     ;
 
-showDefaultSingleTableStorageUnit
-    : SHOW DEFAULT SINGLE TABLE STORAGE UNIT (FROM databaseName)?
-    ;
-
-showSingleTable
-    : SHOW SINGLE (TABLES showLike? | TABLE tableName) (FROM databaseName)?
-    ;
-
-countSingleTable
-    : COUNT SINGLE TABLE (FROM databaseName)?
-    ;
-
 usageCount
     : INT_
     ;
diff --git a/parser/distsql/engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/KernelDistSQLStatement.g4 b/parser/distsql/engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/KernelDistSQLStatement.g4
index bdd731890a5..32076d44a6a 100644
--- a/parser/distsql/engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/KernelDistSQLStatement.g4
+++ b/parser/distsql/engine/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/KernelDistSQLStatement.g4
@@ -35,12 +35,8 @@ execute
     | showComputeNodeMode
     | labelComputeNode
     | unlabelComputeNode
-    | countSingleTable
     | alterComputeNode
     | showLogicalTables
-    | showSingleTable
-    | showDefaultSingleTableStorageUnit
-    | setDefaultSingleTableStorageUnit
     | refreshDatabaseMetadata
     | refreshTableMetadata
     | showTableMetadata
diff --git a/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java b/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
index b22764c14d9..b1391d1c32b 100644
--- a/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
+++ b/parser/distsql/engine/src/main/java/org/apache/shardingsphere/distsql/parser/core/kernel/KernelDistSQLStatementVisitor.java
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementPa
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.AlterStorageUnitContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.BatchSizeContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ConvertYamlConfigurationContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.CountSingleTableContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.DatabaseNameContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.DisableComputeNodeContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.EnableComputeNodeContext;
@@ -47,19 +46,16 @@ import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementPa
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.RefreshDatabaseMetadataContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.RefreshTableMetadataContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.RegisterStorageUnitContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.SetDefaultSingleTableStorageUnitContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.SetDistVariableContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShardingSizeContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowComputeNodeInfoContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowComputeNodeModeContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowComputeNodesContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowDefaultSingleTableStorageUnitContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowDistVariableContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowDistVariablesContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowLogicalTablesContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowMigrationRuleContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowRulesUsedStorageUnitContext;
-import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowSingleTableContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowStorageUnitsContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.ShowTableMetadataContext;
 import org.apache.shardingsphere.distsql.parser.autogen.KernelDistSQLStatementParser.StorageUnitDefinitionContext;
@@ -100,13 +96,9 @@ import org.apache.shardingsphere.distsql.parser.statement.ral.updatable.UnlabelC
 import org.apache.shardingsphere.distsql.parser.statement.ral.updatable.UnlockClusterStatement;
 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.create.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.CountSingleTableStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowLogicalTablesStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRulesUsedStorageUnitStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
 import org.apache.shardingsphere.sql.parser.api.ASTNode;
 import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
@@ -195,21 +187,11 @@ public final class KernelDistSQLStatementVisitor extends KernelDistSQLStatementB
         return new SetInstanceStatusStatement(status, getIdentifierValue(instanceIdContext));
     }
     
-    @Override
-    public ASTNode visitCountSingleTable(final CountSingleTableContext ctx) {
-        return new CountSingleTableStatement(null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
-    }
-    
     @Override
     public ASTNode visitAlterComputeNode(final AlterComputeNodeContext ctx) {
         return new AlterComputeNodeStatement(getIdentifierValue(ctx.instanceId()), getIdentifierValue(ctx.variableName()), getIdentifierValue(ctx.variableValues()));
     }
     
-    @Override
-    public ASTNode visitSetDefaultSingleTableStorageUnit(final SetDefaultSingleTableStorageUnitContext ctx) {
-        return new SetDefaultSingleTableStorageUnitStatement(null == ctx.storageUnitName() ? null : getIdentifierValue(ctx.storageUnitName()));
-    }
-    
     private Properties getProperties(final PropertiesDefinitionContext ctx) {
         Properties result = new Properties();
         if (null == ctx || null == ctx.properties()) {
@@ -251,17 +233,6 @@ public final class KernelDistSQLStatementVisitor extends KernelDistSQLStatementB
                 null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
     }
     
-    @Override
-    public ASTNode visitShowDefaultSingleTableStorageUnit(final ShowDefaultSingleTableStorageUnitContext ctx) {
-        return new ShowDefaultSingleTableStorageUnitStatement(null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
-    }
-    
-    @Override
-    public ASTNode visitShowSingleTable(final ShowSingleTableContext ctx) {
-        return new ShowSingleTableStatement(null == ctx.TABLE() ? null : getIdentifierValue(ctx.tableName()), null == ctx.showLike() ? null : getIdentifierValue(ctx.showLike().likePattern()),
-                null == ctx.databaseName() ? null : (DatabaseSegment) visit(ctx.databaseName()));
-    }
-    
     @Override
     public ASTNode visitShowDistVariable(final ShowDistVariableContext ctx) {
         return new ShowDistVariableStatement(Objects.requireNonNull(getIdentifierValue(ctx.variableName())).toUpperCase());
diff --git a/proxy/backend/core/pom.xml b/proxy/backend/core/pom.xml
index 2771b8b9b26..58c17a7eb0a 100644
--- a/proxy/backend/core/pom.xml
+++ b/proxy/backend/core/pom.xml
@@ -123,6 +123,11 @@
             <artifactId>shardingsphere-transaction-distsql-handler</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-single-distsql-handler</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-sql-parser-distsql-handler</artifactId>
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutor.java
index 2c31d603016..1fe54e2ce01 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ShowDistVariablesExecutor.java
@@ -28,7 +28,7 @@ import org.apache.shardingsphere.logging.util.LoggingUtils;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.common.enums.VariableEnum;
 import org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable.executor.ConnectionSessionRequiredQueryableRALExecutor;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.backend.util.RegularUtils;
+import org.apache.shardingsphere.infra.util.regular.RegularUtils;
 import org.apache.shardingsphere.sql.parser.sql.common.util.SQLUtils;
 
 import java.util.Arrays;
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowLogicalTableExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowLogicalTableExecutor.java
index 60ee008556e..b5051b2e96f 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowLogicalTableExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/rule/ShowLogicalTableExecutor.java
@@ -22,7 +22,7 @@ import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowLogicalTa
 import org.apache.shardingsphere.infra.database.type.SchemaSupportedDatabaseType;
 import org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.proxy.backend.util.RegularUtils;
+import org.apache.shardingsphere.infra.util.regular.RegularUtils;
 import org.apache.shardingsphere.sql.parser.sql.common.util.SQLUtils;
 
 import java.util.Collection;
diff --git a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor b/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
index 64ad1e2e869..4d82291c3cf 100644
--- a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
+++ b/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.query.RQLExecutor
@@ -16,8 +16,5 @@
 #
 
 org.apache.shardingsphere.proxy.backend.handler.distsql.rql.storage.unit.ShowStorageUnitExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule.ShowSingleTableExecutor
 org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule.ShowRulesUsedStorageUnitExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule.ShowDefaultSingleTableStorageUnitExecutor
-org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule.CountSingleTableExecutor
 org.apache.shardingsphere.proxy.backend.handler.distsql.rql.rule.ShowLogicalTableExecutor
diff --git a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutor.java b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutor.java
index c58cbb4ee30..7a31eb86bbf 100644
--- a/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutor.java
+++ b/proxy/backend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/ShowTablesExecutor.java
@@ -32,7 +32,7 @@ import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminQueryExecutor;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.proxy.backend.util.RegularUtils;
+import org.apache.shardingsphere.infra.util.regular.RegularUtils;
 import org.apache.shardingsphere.sql.parser.sql.common.util.SQLUtils;
 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dal.MySQLShowTablesStatement;
 
diff --git a/test/it/parser/pom.xml b/test/it/parser/pom.xml
index f96cb1a1979..566d9652de2 100644
--- a/test/it/parser/pom.xml
+++ b/test/it/parser/pom.xml
@@ -94,6 +94,11 @@
             <artifactId>shardingsphere-transaction-distsql-parser</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.shardingsphere</groupId>
+            <artifactId>shardingsphere-single-distsql-parser</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.shardingsphere</groupId>
             <artifactId>shardingsphere-sql-parser-distsql-parser</artifactId>
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/CreateRuleStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/CreateRuleStatementAssert.java
index fcdfda1fddf..4443792cb4f 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/CreateRuleStatementAssert.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/CreateRuleStatementAssert.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.distsql.parser.statement.rdl.create.CreateRuleStatement;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.encrypt.distsql.parser.statement.CreateEncryptRuleStatement;
 import org.apache.shardingsphere.mask.distsql.parser.statement.CreateMaskRuleStatement;
 import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
@@ -30,6 +29,7 @@ import org.apache.shardingsphere.sharding.distsql.parser.statement.CreateBroadca
 import org.apache.shardingsphere.sharding.distsql.parser.statement.CreateDefaultShardingStrategyStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableReferenceRuleStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
+import org.apache.shardingsphere.single.distsql.statement.rdl.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rdl.create.impl.CreateBroadcastTableRuleStatementAssert;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rdl.create.impl.CreateDefaultShadowAlgorithmStatementAssert;
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/SetDefaultSingleTableStorageUnitStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/SetDefaultSingleTableStorageUnitStatementAssert.java
index 349bf131611..8bc76ffbc15 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/SetDefaultSingleTableStorageUnitStatementAssert.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/create/impl/SetDefaultSingleTableStorageUnitStatementAssert.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
+import org.apache.shardingsphere.single.distsql.statement.rdl.SetDefaultSingleTableStorageUnitStatement;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ExistingAssert;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rdl.rule.single.SetDefaultSingleTableStorageUnitStatementTestCase;
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowTablesStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowTablesStatementAssert.java
index c35e3a621d8..85f9d1dcefa 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowTablesStatementAssert.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowTablesStatementAssert.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowTablesStatement;
+import org.apache.shardingsphere.single.distsql.statement.rql.ShowSingleTableStatement;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.database.DatabaseAssert;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rql.impl.table.ShowSingleTablesStatementAssert;
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/table/ShowSingleTablesStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/table/ShowSingleTablesStatementAssert.java
index 9dc368e6d6a..9577082b142 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/table/ShowSingleTablesStatementAssert.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/table/ShowSingleTablesStatementAssert.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
+import org.apache.shardingsphere.single.distsql.statement.rql.ShowSingleTableStatement;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.table.ShowSingleTableStatementTestCase;