You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zi...@apache.org on 2023/04/07 05:02:44 UTC

[shardingsphere] branch master updated: Add parse test for some RQL. (#25046)

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

zichaowang 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 1d3656d0000 Add parse test for some RQL. (#25046)
1d3656d0000 is described below

commit 1d3656d00008cb25ac308e32fd836e7f235966a5
Author: Raigor <ra...@gmail.com>
AuthorDate: Fri Apr 7 13:02:36 2023 +0800

    Add parse test for some RQL. (#25046)
---
 .../asserts/statement/rql/RQLStatementAssert.java  | 10 +++
 .../rql/impl/ShowStorageUnitsStatementAssert.java  | 66 ++++++++++++++++++++
 .../rql/impl/ShowTablesStatementAssert.java        | 71 ++++++++++++++++++++++
 .../table/ShowSingleTablesStatementAssert.java     | 59 ++++++++++++++++++
 .../cases/parser/jaxb/RootSQLParserTestCases.java  | 12 +++-
 .../ShowRulesUsedStorageUnitStatementTestCase.java |  2 +-
 .../unit/ShowStorageUnitsStatementTestCase.java}   | 10 +--
 .../ShowLogicalTableStatementTestCase.java}        | 17 +-----
 .../ShowSingleTableStatementTestCase.java          |  7 +--
 .../ShowTableStatementTestCase.java}               | 10 +--
 .../it/parser/src/main/resources/case/rql/show.xml | 31 +++++++++-
 .../src/main/resources/sql/supported/rql/show.xml  |  8 +++
 12 files changed, 270 insertions(+), 33 deletions(-)

diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/RQLStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/RQLStatementAssert.java
index 322e3305ab1..098f41256b7 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/RQLStatementAssert.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/RQLStatementAssert.java
@@ -21,8 +21,12 @@ import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.distsql.parser.statement.rql.RQLStatement;
 import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRulesStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowTablesStatement;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rql.impl.ShowRulesStatementAssert;
+import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rql.impl.ShowStorageUnitsStatementAssert;
+import org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rql.impl.ShowTablesStatementAssert;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
 
 /**
@@ -42,5 +46,11 @@ public final class RQLStatementAssert {
         if (actual instanceof ShowRulesStatement) {
             ShowRulesStatementAssert.assertIs(assertContext, (ShowRulesStatement) actual, expected);
         }
+        if (actual instanceof ShowTablesStatement) {
+            ShowTablesStatementAssert.assertIs(assertContext, (ShowTablesStatement) actual, expected);
+        }
+        if (actual instanceof ShowStorageUnitsStatement) {
+            ShowStorageUnitsStatementAssert.assertIs(assertContext, (ShowStorageUnitsStatement) actual, expected);
+        }
     }
 }
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowStorageUnitsStatementAssert.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowStorageUnitsStatementAssert.java
new file mode 100644
index 00000000000..ce8b37fff55
--- /dev/null
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowStorageUnitsStatementAssert.java
@@ -0,0 +1,66 @@
+/*
+ * 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.test.it.sql.parser.internal.asserts.statement.rql.impl;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
+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.cases.parser.jaxb.SQLParserTestCase;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.storage.unit.ShowStorageUnitsStatementTestCase;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Show storage units statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ShowStorageUnitsStatementAssert {
+    
+    /**
+     * Assert show storage units statement is correct with expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual show storage units statement
+     * @param expected expected show storage units statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, final ShowStorageUnitsStatement actual, final SQLParserTestCase expected) {
+        assertThat("Expected value should be ShowStorageUnitsStatementTestCase", expected, instanceOf(ShowStorageUnitsStatementTestCase.class));
+        assertIs(assertContext, actual, (ShowStorageUnitsStatementTestCase) expected);
+    }
+    
+    private static void assertIs(final SQLCaseAssertContext assertContext, final ShowStorageUnitsStatement actual, final ShowStorageUnitsStatementTestCase expected) {
+        if (null == expected.getDatabase()) {
+            assertFalse(actual.getDatabase().isPresent(), assertContext.getText("Actual database should not exist."));
+        } else {
+            assertTrue(actual.getDatabase().isPresent(), assertContext.getText("Actual database should exist."));
+            DatabaseAssert.assertIs(assertContext, actual.getDatabase().get(), expected.getDatabase());
+        }
+        if (null == expected.getUsageCount()) {
+            assertFalse(actual.getUsageCount().isPresent(), assertContext.getText("Actual usage count should not exist."));
+        } else {
+            assertTrue(actual.getUsageCount().isPresent(), assertContext.getText("Actual usage count should exist."));
+            assertThat(assertContext.getText("Usage count assertion error"), actual.getUsageCount().get(), is(expected.getUsageCount()));
+        }
+    }
+}
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
new file mode 100644
index 00000000000..c35e3a621d8
--- /dev/null
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowTablesStatementAssert.java
@@ -0,0 +1,71 @@
+/*
+ * 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.test.it.sql.parser.internal.asserts.statement.rql.impl;
+
+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.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;
+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.ShowTableStatementTestCase;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Show tables statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ShowTablesStatementAssert {
+    
+    /**
+     * Assert show tables statement is correct with expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual show tables statement
+     * @param expected expected show tables statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, final ShowTablesStatement actual, final SQLParserTestCase expected) {
+        assertThat("Expected value should be ShowTableStatementTestCase", expected, instanceOf(ShowTableStatementTestCase.class));
+        assertIs(assertContext, actual, (ShowTableStatementTestCase) expected);
+        if (actual instanceof ShowSingleTableStatement) {
+            ShowSingleTablesStatementAssert.assertIs(assertContext, (ShowSingleTableStatement) actual, expected);
+        }
+    }
+    
+    private static void assertIs(final SQLCaseAssertContext assertContext, final ShowTablesStatement actual, final ShowTableStatementTestCase expected) {
+        if (null == expected.getDatabase()) {
+            assertFalse(actual.getDatabase().isPresent(), assertContext.getText("Actual database should not exist."));
+        } else {
+            assertTrue(actual.getDatabase().isPresent(), assertContext.getText("Actual database should exist."));
+            DatabaseAssert.assertIs(assertContext, actual.getDatabase().get(), expected.getDatabase());
+        }
+        if (null == expected.getLikePattern()) {
+            assertFalse(actual.getLikePattern().isPresent(), assertContext.getText("Actual like pattern should not exist."));
+        } else {
+            assertTrue(actual.getLikePattern().isPresent(), assertContext.getText("Actual like pattern should exist."));
+            assertThat(assertContext.getText("Like pattern assertion error"), actual.getLikePattern().get(), is(expected.getLikePattern()));
+        }
+    }
+}
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
new file mode 100644
index 00000000000..9dc368e6d6a
--- /dev/null
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/table/ShowSingleTablesStatementAssert.java
@@ -0,0 +1,59 @@
+/*
+ * 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.test.it.sql.parser.internal.asserts.statement.rql.impl.table;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.shardingsphere.distsql.parser.statement.rql.show.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;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * Show single tables statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ShowSingleTablesStatementAssert {
+    
+    /**
+     * Assert show single tables statement is correct with expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual show single tables statement
+     * @param expected expected show single tables statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, final ShowSingleTableStatement actual, final SQLParserTestCase expected) {
+        assertThat("Expected value should be ShowSingleTableStatementTestCase", expected, instanceOf(ShowSingleTableStatementTestCase.class));
+        assertIs(assertContext, actual, (ShowSingleTableStatementTestCase) expected);
+    }
+    
+    private static void assertIs(final SQLCaseAssertContext assertContext, final ShowSingleTableStatement actual, final ShowSingleTableStatementTestCase expected) {
+        if (null == expected.getTable()) {
+            assertFalse(actual.getTableName().isPresent(), assertContext.getText("Actual table name should not exist."));
+        } else {
+            assertTrue(actual.getTableName().isPresent(), assertContext.getText("Actual table name should exist."));
+            assertThat(assertContext.getText("Table name assertion error"), actual.getTableName().get(), is(expected.getTable()));
+        }
+    }
+}
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
index 7b2f8c132eb..87426f68b71 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
@@ -371,7 +371,6 @@ import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rdl.rule.sharding.DropShardingTableReferenceRuleStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rdl.rule.sharding.DropShardingTableRuleStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rdl.rule.single.SetDefaultSingleTableStorageUnitStatementTestCase;
-import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.resource.ShowRulesUsedStorageUnitStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.encrypt.CountEncryptRuleStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.encrypt.ShowEncryptRulesStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.mask.CountMaskRuleStatementTestCase;
@@ -400,7 +399,10 @@ import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.sharding.ShowUnusedShardingKeyGeneratorsStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.single.CountSingleTableStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.single.ShowDefaultSingleTableStorageUnitStatementTestCase;
-import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.single.ShowSingleTableStatementTestCase;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.storage.unit.ShowRulesUsedStorageUnitStatementTestCase;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.storage.unit.ShowStorageUnitsStatementTestCase;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.table.ShowLogicalTableStatementTestCase;
+import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.table.ShowSingleTableStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.FormatSQLStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.ParseStatementTestCase;
 import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rul.PreviewStatementTestCase;
@@ -1089,9 +1091,15 @@ public final class RootSQLParserTestCases {
     @XmlElement(name = "uninstall-plugin")
     private final List<UninstallPluginStatementTestCase> uninstallPluginTestCases = new LinkedList<>();
     
+    @XmlElement(name = "show-storage-units")
+    private final List<ShowStorageUnitsStatementTestCase> showStorageUnitsTestCases = new LinkedList<>();
+    
     @XmlElement(name = "show-single-table")
     private final List<ShowSingleTableStatementTestCase> showSingleTableTestCases = new LinkedList<>();
     
+    @XmlElement(name = "show-logical-tables")
+    private final List<ShowLogicalTableStatementTestCase> showLogicalTableTestCases = new LinkedList<>();
+    
     @XmlElement(name = "show-default-single-table-storage-unit")
     private final List<ShowDefaultSingleTableStorageUnitStatementTestCase> showDefaultSingleTableStorageUnitTestCases = new LinkedList<>();
     
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/resource/ShowRulesUsedStorageUnitStatementTestCase.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/storage/unit/ShowRulesUsedStorageUnitStatementTestCase.java
similarity index 96%
rename from test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/resource/ShowRulesUsedStorageUnitStatementTestCase.java
rename to test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/storage/unit/ShowRulesUsedStorageUnitStatementTestCase.java
index 02750e21951..8a4e27a931e 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/resource/ShowRulesUsedStorageUnitStatementTestCase.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/storage/unit/ShowRulesUsedStorageUnitStatementTestCase.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.resource;
+package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.storage.unit;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/storage/unit/ShowStorageUnitsStatementTestCase.java
similarity index 81%
copy from test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java
copy to test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/storage/unit/ShowStorageUnitsStatementTestCase.java
index 011ca6f5b66..b38c756a9c3 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/storage/unit/ShowStorageUnitsStatementTestCase.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.single;
+package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.storage.unit;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -24,12 +24,12 @@ import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import javax.xml.bind.annotation.XmlAttribute;
 
 /**
- * Show single table statement test case.
+ * Show storage units statement test case.
  */
 @Getter
 @Setter
-public final class ShowSingleTableStatementTestCase extends DatabaseContainedTestCase {
+public final class ShowStorageUnitsStatementTestCase extends DatabaseContainedTestCase {
     
-    @XmlAttribute
-    private String name;
+    @XmlAttribute(name = "usage-count")
+    private Integer usageCount;
 }
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/table/ShowLogicalTableStatementTestCase.java
similarity index 66%
copy from test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java
copy to test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/table/ShowLogicalTableStatementTestCase.java
index 011ca6f5b66..ba753370904 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/table/ShowLogicalTableStatementTestCase.java
@@ -15,21 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.single;
-
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.DatabaseContainedTestCase;
-
-import javax.xml.bind.annotation.XmlAttribute;
+package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.table;
 
 /**
- * Show single table statement test case.
+ * Show logical table statement test case.
  */
-@Getter
-@Setter
-public final class ShowSingleTableStatementTestCase extends DatabaseContainedTestCase {
-    
-    @XmlAttribute
-    private String name;
+public final class ShowLogicalTableStatementTestCase extends ShowTableStatementTestCase {
 }
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/table/ShowSingleTableStatementTestCase.java
similarity index 79%
copy from test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java
copy to test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/table/ShowSingleTableStatementTestCase.java
index 011ca6f5b66..4760c3d3cc2 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/table/ShowSingleTableStatementTestCase.java
@@ -15,11 +15,10 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.single;
+package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.table;
 
 import lombok.Getter;
 import lombok.Setter;
-import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.DatabaseContainedTestCase;
 
 import javax.xml.bind.annotation.XmlAttribute;
 
@@ -28,8 +27,8 @@ import javax.xml.bind.annotation.XmlAttribute;
  */
 @Getter
 @Setter
-public final class ShowSingleTableStatementTestCase extends DatabaseContainedTestCase {
+public final class ShowSingleTableStatementTestCase extends ShowTableStatementTestCase {
     
     @XmlAttribute
-    private String name;
+    private String table;
 }
diff --git a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/table/ShowTableStatementTestCase.java
similarity index 82%
rename from test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java
rename to test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/table/ShowTableStatementTestCase.java
index 011ca6f5b66..47e08f9b122 100644
--- a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/rule/single/ShowSingleTableStatementTestCase.java
+++ b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/rql/table/ShowTableStatementTestCase.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.rule.single;
+package org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rql.table;
 
 import lombok.Getter;
 import lombok.Setter;
@@ -24,12 +24,12 @@ import org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import javax.xml.bind.annotation.XmlAttribute;
 
 /**
- * Show single table statement test case.
+ * Show table statement test case.
  */
 @Getter
 @Setter
-public final class ShowSingleTableStatementTestCase extends DatabaseContainedTestCase {
+public abstract class ShowTableStatementTestCase extends DatabaseContainedTestCase {
     
-    @XmlAttribute
-    private String name;
+    @XmlAttribute(name = "like-pattern")
+    private String likePattern;
 }
diff --git a/test/it/parser/src/main/resources/case/rql/show.xml b/test/it/parser/src/main/resources/case/rql/show.xml
index f745f37a094..abafa0a5d4b 100644
--- a/test/it/parser/src/main/resources/case/rql/show.xml
+++ b/test/it/parser/src/main/resources/case/rql/show.xml
@@ -74,11 +74,18 @@
         <database name="shadow_db" start-index="35" stop-index="43" />
     </show-default-shadow-algorithm>
     
-    <show-single-table sql-case-id="show-single-table">
-        <name name="t_order" start-index="19" stop-index="25" />
+    <show-single-table sql-case-id="show-single-table" table="t_order">
         <database name="single_table_db" start-index="31" stop-index="45" />
     </show-single-table>
     
+    <show-single-table sql-case-id="show-single-tables">
+        <database name="single_table_db" start-index="24" stop-index="38" />
+    </show-single-table>
+    
+    <show-single-table sql-case-id="show-single-tables-like" like-pattern="t_%">
+        <database name="single_table_db" start-index="35" stop-index="49" />
+    </show-single-table>
+    
     <show-default-single-table-storage-unit sql-case-id="show-default-single-table-storage-unit">
         <database name="single_table_db" start-index="44" stop-index="58" />
     </show-default-single-table-storage-unit>
@@ -150,4 +157,24 @@
     <count-mask-rule sql-case-id="count-mask-rule">
         <database name="db1" start-index="21" stop-index="23" />
     </count-mask-rule>
+    
+    <show-storage-units sql-case-id="show-storage-units" />
+    
+    <show-storage-units sql-case-id="show-storage-units-from">
+        <database name="sharding_db" start-index="24" stop-index="34" />
+    </show-storage-units>
+    
+    <show-storage-units sql-case-id="show-storage-units-where-usage-count" usage-count="0">
+        <database name="sharding_db" start-index="24" stop-index="34" />
+    </show-storage-units>
+    
+    <show-logical-tables sql-case-id="show-logical-tables" />
+    
+    <show-logical-tables sql-case-id="show-logical-tables-from">
+        <database name="sharding_db" start-index="25" stop-index="35" />
+    </show-logical-tables>
+    
+    <show-logical-tables sql-case-id="show-logical-tables-like" like-pattern="t_%">
+        <database name="sharding_db" start-index="36" stop-index="46" />
+    </show-logical-tables>
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/rql/show.xml b/test/it/parser/src/main/resources/sql/supported/rql/show.xml
index 1fe91b4c4a1..1109317fdfc 100644
--- a/test/it/parser/src/main/resources/sql/supported/rql/show.xml
+++ b/test/it/parser/src/main/resources/sql/supported/rql/show.xml
@@ -32,6 +32,8 @@
     <sql-case id="show-shadow-algorithms" value="SHOW SHADOW ALGORITHMS FROM shadow_db" db-types="ShardingSphere" />
     <sql-case id="show-default-shadow-algorithm" value="SHOW DEFAULT SHADOW ALGORITHM FROM shadow_db" db-types="ShardingSphere" />
     <sql-case id="show-single-table" value="SHOW SINGLE TABLE t_order FROM single_table_db" db-types="ShardingSphere" />
+    <sql-case id="show-single-tables" value="SHOW SINGLE TABLES FROM single_table_db" db-types="ShardingSphere" />
+    <sql-case id="show-single-tables-like" value="SHOW SINGLE TABLES LIKE 't_%' FROM single_table_db" db-types="ShardingSphere" />
     <sql-case id="show-default-single-table-storage-unit" value="SHOW DEFAULT SINGLE TABLE STORAGE UNIT FROM single_table_db" db-types="ShardingSphere" />
     <sql-case id="show-sharding-table-nodes" value="SHOW SHARDING TABLE NODES t_order FROM sharding_db" db-types="ShardingSphere" />
     <sql-case id="show-sharding-key-generators" value="SHOW SHARDING KEY GENERATORS FROM sharding_db" db-types="ShardingSphere" />
@@ -50,4 +52,10 @@
     <sql-case id="count-encrypt-rule" value="COUNT ENCRYPT RULE FROM db1" db-types="ShardingSphere" />
     <sql-case id="count-shadow-rule" value="COUNT SHADOW RULE FROM db1" db-types="ShardingSphere" />
     <sql-case id="count-mask-rule" value="COUNT MASK RULE FROM db1" db-types="ShardingSphere" />
+    <sql-case id="show-storage-units" value="SHOW STORAGE UNITS" db-types="ShardingSphere" />
+    <sql-case id="show-storage-units-from" value="SHOW STORAGE UNITS FROM sharding_db" db-types="ShardingSphere" />
+    <sql-case id="show-storage-units-where-usage-count" value="SHOW STORAGE UNITS FROM sharding_db WHERE USAGE_COUNT = 0" db-types="ShardingSphere" />
+    <sql-case id="show-logical-tables" value="SHOW LOGICAL TABLES" db-types="ShardingSphere" />
+    <sql-case id="show-logical-tables-from" value="SHOW LOGICAL TABLES FROM sharding_db" db-types="ShardingSphere" />
+    <sql-case id="show-logical-tables-like" value="SHOW LOGICAL TABLES LIKE 't_%' FROM sharding_db" db-types="ShardingSphere" />
 </sql-cases>