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

jianglongtao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 7e08335  For #14609, Add `SHOW UNUSED SHARDING ALGORITHMS` syntax to 
DistSQL. (#14638)
7e08335 is described below

commit 7e083359cce3b4ad63edd0156fed008a370e559c
Author: yx9o <[email protected]>
AuthorDate: Mon Jan 10 00:07:36 2022 +0800

    For #14609, Add `SHOW UNUSED SHARDING ALGORITHMS` syntax to DistSQL. 
(#14638)
    
    * Add a syntax SHOW UNUSED SHARDING ALGORITHMS.
    
    * Update.
---
 .../UnusedShardingAlgorithmsQueryResultSet.java    | 128 +++++++++++++++++++++
 ...dingsphere.infra.distsql.query.DistSQLResultSet |   1 +
 .../UnusedShardingAlgorithmQueryResultSetTest.java |  81 +++++++++++++
 .../src/main/antlr4/imports/sharding/Keyword.g4    |  12 +-
 .../main/antlr4/imports/sharding/RQLStatement.g4   |   4 +
 .../parser/autogen/ShardingDistSQLStatement.g4     |   1 +
 .../core/ShardingDistSQLStatementVisitor.java      |   9 +-
 .../ShowUnusedShardingAlgorithmsStatement.java}    |  51 ++------
 .../distsql/rql/impl/ShowRulesStatementAssert.java |   5 +
 ...howUnusedShardingAlgorithmsStatementAssert.java |  51 ++++++++
 .../jaxb/cases/domain/SQLParserTestCases.java      |  59 +++++-----
 ...wUnusedShardingAlgorithmsStatementTestCase.java |  54 +++------
 .../src/main/resources/case/rql/show.xml           |   6 +-
 .../src/main/resources/sql/supported/rql/show.xml  |   1 +
 14 files changed, 351 insertions(+), 112 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/UnusedShardingAlgorithmsQueryResultSet.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/UnusedShardingAlgorithmsQueryResultSet.java
new file mode 100644
index 0000000..7da0f86
--- /dev/null
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/UnusedShardingAlgorithmsQueryResultSet.java
@@ -0,0 +1,128 @@
+/*
+ * 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.sharding.distsql.handler.query;
+
+import 
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
+import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.properties.PropertiesConverter;
+import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowUnusedShardingAlgorithmsStatement;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Properties;
+
+/**
+ * Result set for show unused sharding algorithms.
+ */
+public final class UnusedShardingAlgorithmsQueryResultSet implements 
DistSQLResultSet {
+    
+    private static final String TYPE = 
ShowUnusedShardingAlgorithmsStatement.class.getCanonicalName();
+    
+    private static final String NAME = "name";
+    
+    private static final String COLUMN_TYPE = "type";
+    
+    private static final String PROPS = "props";
+    
+    private Iterator<Entry<String, ShardingSphereAlgorithmConfiguration>> data 
= Collections.emptyIterator();
+    
+    @Override
+    public void init(final ShardingSphereMetaData metaData, final SQLStatement 
sqlStatement) {
+        Optional<ShardingRuleConfiguration> ruleConfig = 
metaData.getRuleMetaData().getConfigurations()
+                .stream().filter(each -> each instanceof 
ShardingRuleConfiguration).map(each -> (ShardingRuleConfiguration) 
each).findAny();
+        ruleConfig.ifPresent(rule -> getUnusedShardingAlgorithms(rule));
+    }
+    
+    @Override
+    public Collection<String> getColumnNames() {
+        return Arrays.asList(NAME, COLUMN_TYPE, PROPS);
+    }
+    
+    @Override
+    public boolean next() {
+        return data.hasNext();
+    }
+    
+    @Override
+    public Collection<Object> getRowData() {
+        return buildTableRowData(data.next());
+    }
+    
+    private Collection<Object> buildTableRowData(final Entry<String, 
ShardingSphereAlgorithmConfiguration> data) {
+        Collection<Object> result = new LinkedList<>();
+        result.add(data.getKey());
+        result.add(data.getValue().getType());
+        result.add(buildProps(data.getValue().getProps()));
+        return result;
+    }
+    
+    private Object buildProps(final Properties props) {
+        return Objects.nonNull(props) ? PropertiesConverter.convert(props) : 
"";
+    }
+    
+    @Override
+    public String getType() {
+        return TYPE;
+    }
+    
+    private void getUnusedShardingAlgorithms(final ShardingRuleConfiguration 
shardingRuleConfig) {
+        Collection<String> inUsedSet = 
getUsedShardingAlgorithms(shardingRuleConfig);
+        Map<String, ShardingSphereAlgorithmConfiguration> map = new 
HashMap<>();
+        for (Entry<String, ShardingSphereAlgorithmConfiguration> each : 
shardingRuleConfig.getShardingAlgorithms().entrySet()) {
+            if (!inUsedSet.contains(each.getKey())) {
+                map.put(each.getKey(), each.getValue());
+            }
+        }
+        data = map.entrySet().iterator();
+    }
+    
+    private Collection<String> getUsedShardingAlgorithms(final 
ShardingRuleConfiguration shardingRuleConfig) {
+        Collection<String> result = new LinkedHashSet<>();
+        shardingRuleConfig.getTables().forEach(each -> {
+            if (Objects.nonNull(each.getDatabaseShardingStrategy())) {
+                
result.add(each.getDatabaseShardingStrategy().getShardingAlgorithmName());
+            }
+            if (Objects.nonNull(each.getTableShardingStrategy())) {
+                
result.add(each.getTableShardingStrategy().getShardingAlgorithmName());
+            }
+        });
+        shardingRuleConfig.getAutoTables().stream().filter(each -> 
Objects.nonNull(each.getShardingStrategy())).forEach(each -> 
result.add(each.getShardingStrategy().getShardingAlgorithmName()));
+        ShardingStrategyConfiguration tableShardingStrategy = 
shardingRuleConfig.getDefaultTableShardingStrategy();
+        if (null != tableShardingStrategy && 
!tableShardingStrategy.getShardingAlgorithmName().isEmpty()) {
+            result.add(tableShardingStrategy.getShardingAlgorithmName());
+        }
+        ShardingStrategyConfiguration databaseShardingStrategy = 
shardingRuleConfig.getDefaultDatabaseShardingStrategy();
+        if (null != databaseShardingStrategy && 
!databaseShardingStrategy.getShardingAlgorithmName().isEmpty()) {
+            result.add(databaseShardingStrategy.getShardingAlgorithmName());
+        }
+        return result;
+    }
+}
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
index 3da55c6..34a23a1 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
@@ -26,3 +26,4 @@ 
org.apache.shardingsphere.scaling.distsql.handler.CheckScalingQueryResultSet
 org.apache.shardingsphere.scaling.distsql.handler.ShowScalingListQueryResultSet
 
org.apache.shardingsphere.scaling.distsql.handler.ShowScalingJobStatusQueryResultSet
 
org.apache.shardingsphere.scaling.distsql.handler.ShowScalingCheckAlgorithmsQueryResultSet
+org.apache.shardingsphere.sharding.distsql.handler.query.UnusedShardingAlgorithmsQueryResultSet
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/UnusedShardingAlgorithmQueryResultSetTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/UnusedShardingAlgorithmQueryResultSetTest.java
new file mode 100644
index 0000000..00007e2
--- /dev/null
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/UnusedShardingAlgorithmQueryResultSetTest.java
@@ -0,0 +1,81 @@
+/*
+ * 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.sharding.distsql.query;
+
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
+import 
org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.distsql.handler.query.UnusedShardingAlgorithmsQueryResultSet;
+import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingAlgorithmsStatement;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public final class UnusedShardingAlgorithmQueryResultSetTest {
+    
+    @Test
+    public void assertGetRowData() {
+        ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, 
RETURNS_DEEP_STUBS);
+        
when(metaData.getRuleMetaData().getConfigurations()).thenReturn(Collections.singleton(createRuleConfiguration()));
+        UnusedShardingAlgorithmsQueryResultSet resultSet = new 
UnusedShardingAlgorithmsQueryResultSet();
+        resultSet.init(metaData, mock(ShowShardingAlgorithmsStatement.class));
+        List<Object> actual = new ArrayList<>(resultSet.getRowData());
+        assertThat(actual.size(), is(3));
+        assertThat(actual.get(0), is("database_inline"));
+        assertThat(actual.get(1), is("INLINE"));
+        assertThat(actual.get(2), is("algorithm-expression=ds_${user_id % 
2}"));
+    }
+    
+    private RuleConfiguration createRuleConfiguration() {
+        ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+        result.getShardingAlgorithms().put("database_inline", 
createShardingInlineAlgorithmConfiguration());
+        result.getShardingAlgorithms().put("t_order_hash_mod", 
createShardingHashModAlgorithmConfiguration());
+        result.getAutoTables().add(createShardingAutoTableRuleConfiguration());
+        return result;
+    }
+    
+    private ShardingSphereAlgorithmConfiguration 
createShardingInlineAlgorithmConfiguration() {
+        Properties props = new Properties();
+        props.put("algorithm-expression", "ds_${user_id % 2}");
+        return new ShardingSphereAlgorithmConfiguration("INLINE", props);
+    }
+    
+    private ShardingSphereAlgorithmConfiguration 
createShardingHashModAlgorithmConfiguration() {
+        Properties props = new Properties();
+        props.put("sharding-count", 4);
+        return new ShardingSphereAlgorithmConfiguration("hash_mod", props);
+    }
+    
+    private ShardingAutoTableRuleConfiguration 
createShardingAutoTableRuleConfiguration() {
+        ShardingAutoTableRuleConfiguration result = new 
ShardingAutoTableRuleConfiguration("auto_table");
+        result.setShardingStrategy(new 
StandardShardingStrategyConfiguration("order_id", "hash_mod"));
+        return result;
+    }
+}
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/Keyword.g4
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/Keyword.g4
index 8747772..8ba5b70 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/Keyword.g4
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/Keyword.g4
@@ -142,7 +142,7 @@ CLEAR
 DEFAULT
     : D E F A U L T
     ;
-    
+
 DATABASE
     : D A T A B A S E
     ;
@@ -154,15 +154,15 @@ SHARDING_ALGORITHM
 STRATEGY
     : S T R A T E G Y
     ;
-        
+
 DATANODES
     : D A T A N O D E S
     ;
-    
+
 DATABASE_STRATEGY
     : D A T A B A S E UL_ S T R A T E G Y
     ;
-    
+
 TABLE_STRATEGY
     : T A B L E UL_ S T R A T E G Y
     ;
@@ -186,3 +186,7 @@ GENERATORS
 GENERATED_KEY_ALGORITHM
     : G E N E R A T E D UL_ K E Y UL_ A L G O R I T H M
     ;
+
+UNUSED
+    : U N U S E D
+    ;
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
index 7ac5f5f..8594531 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
@@ -46,6 +46,10 @@ showShardingKeyGenerators
 showShardingDefaultShardingStrategy
     : SHOW DEFAULT SHARDING STRATEGY (FROM schemaName)?
     ;
+
+showUnusedShardingAlgorithms
+    : SHOW UNUSED SHARDING ALGORITHMS (FROM schemaName)?
+    ;
     
 tableRule
     : RULE tableName
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/sharding/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/sharding/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
index 466625c..db780e0 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/sharding/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/sharding/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
@@ -50,5 +50,6 @@ execute
     | showShardingDefaultShardingStrategy
     | alterDefaultShardingStrategy
     | dropDefaultShardingStrategy
+    | showUnusedShardingAlgorithms
     ) SEMI?
     ;
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
index 66e13d5..f4542fe 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingDistSQLStatementVisitor.java
@@ -64,6 +64,7 @@ import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatement
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingKeyGeneratorsContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingTableNodesContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingTableRulesContext;
+import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowUnusedShardingAlgorithmsContext;
 import 
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.TableNameContext;
 import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.segment.AbstractTableRuleSegment;
@@ -100,6 +101,7 @@ import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingB
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingKeyGeneratorsStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableNodesStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesStatement;
+import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowUnusedShardingAlgorithmsStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.hint.AddShardingHintDatabaseValueStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.hint.AddShardingHintTableValueStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.hint.ClearShardingHintStatement;
@@ -373,7 +375,7 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
         }
         return new IdentifierValue(context.getText()).getValue();
     }
-
+    
     private String getIdentifierValueWithBracketReserved(final ParseTree 
context) {
         if (null == context) {
             return null;
@@ -444,4 +446,9 @@ public final class ShardingDistSQLStatementVisitor extends 
ShardingDistSQLStatem
     public ASTNode visitShowShardingDefaultShardingStrategy(final 
ShowShardingDefaultShardingStrategyContext ctx) {
         return new 
ShowDefaultShardingStrategyStatement(Objects.nonNull(ctx.schemaName()) ? 
(SchemaSegment) visit(ctx.schemaName()) : null);
     }
+    
+    @Override
+    public ASTNode visitShowUnusedShardingAlgorithms(final 
ShowUnusedShardingAlgorithmsContext ctx) {
+        return new 
ShowUnusedShardingAlgorithmsStatement(Objects.nonNull(ctx.schemaName()) ? 
(SchemaSegment) visit(ctx.schemaName()) : null);
+    }
 }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/ShowUnusedShardingAlgorithmsStatement.java
similarity index 50%
copy from 
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
copy to 
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/ShowUnusedShardingAlgorithmsStatement.java
index 7ac5f5f..6a08f5f 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-statement/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/statement/ShowUnusedShardingAlgorithmsStatement.java
@@ -15,46 +15,17 @@
  * limitations under the License.
  */
 
-grammar RQLStatement;
+package org.apache.shardingsphere.sharding.distsql.parser.statement;
 
-import Keyword, Literals, Symbol;
+import 
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRulesStatement;
+import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
 
-showShardingTableRules
-    : SHOW SHARDING TABLE (tableRule | RULES) (FROM schemaName)?
-    ;
-
-showShardingBindingTableRules
-    : SHOW SHARDING BINDING TABLE RULES (FROM schemaName)?
-    ;
-
-showShardingBroadcastTableRules
-    : SHOW SHARDING BROADCAST TABLE RULES (FROM schemaName)?
-    ;
-
-showShardingAlgorithms
-    : SHOW SHARDING ALGORITHMS (FROM schemaName)?
-    ;
-
-showShardingTableNodes
-    : SHOW SHARDING TABLE NODES tableName? (FROM schemaName)?
-    ;
-
-showShardingKeyGenerators
-    : SHOW SHARDING KEY GENERATORS (FROM schemaName)?
-    ;
-
-showShardingDefaultShardingStrategy
-    : SHOW DEFAULT SHARDING STRATEGY (FROM schemaName)?
-    ;
+/**
+ * Show unused sharding algorithms statement.
+ */
+public final class ShowUnusedShardingAlgorithmsStatement extends 
ShowRulesStatement {
     
-tableRule
-    : RULE tableName
-    ;
-
-tableName
-    : IDENTIFIER
-    ;
-
-schemaName
-    : IDENTIFIER
-    ;
+    public ShowUnusedShardingAlgorithmsStatement(final SchemaSegment schema) {
+        super(schema);
+    }
+}
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/ShowRulesStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/ShowRulesStatementAssert.java
index fc60ae4..4641889 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/ShowRulesStatementAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/ShowRulesStatementAssert.java
@@ -37,6 +37,7 @@ import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingB
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingKeyGeneratorsStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableNodesStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesStatement;
+import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowUnusedShardingAlgorithmsStatement;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowDatabaseDiscoveryRulesStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowDefaultShardingStrategyStatementAssert;
@@ -53,6 +54,7 @@ import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowSingleTableRulesStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowSingleTableStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowTransactionRuleStatementAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowUnusedShardingAlgorithmsStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowDataBaseDiscoveryRulesStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowDefaultShardingStrategyStatementTestCase;
@@ -69,6 +71,7 @@ import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowSingleTableRulesStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowSingleTableStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowTransactionRuleStatementTestCase;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowUnusedShardingAlgorithmsStatementTestCase;
 
 /**
  * Show rule statement assert.
@@ -114,6 +117,8 @@ public final class ShowRulesStatementAssert {
             ShowTransactionRuleStatementAssert.assertIs(assertContext, 
(ShowTransactionRuleStatement) actual, (ShowTransactionRuleStatementTestCase) 
expected);
         } else if (actual instanceof ShowDefaultShardingStrategyStatement) {
             ShowDefaultShardingStrategyStatementAssert.assertIs(assertContext, 
(ShowDefaultShardingStrategyStatement) actual, 
(ShowDefaultShardingStrategyStatementTestCase) expected);
+        } else if (actual instanceof ShowUnusedShardingAlgorithmsStatement) {
+            
ShowUnusedShardingAlgorithmsStatementAssert.assertIs(assertContext, 
(ShowUnusedShardingAlgorithmsStatement) actual, 
(ShowUnusedShardingAlgorithmsStatementTestCase) expected);
         }
     }
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowUnusedShardingAlgorithmsStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowUnusedShardingAlgorithmsStatementAssert.java
new file mode 100644
index 0000000..a59cac7
--- /dev/null
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowUnusedShardingAlgorithmsStatementAssert.java
@@ -0,0 +1,51 @@
+/*
+ * 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.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowUnusedShardingAlgorithmsStatement;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.schema.SchemaAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowUnusedShardingAlgorithmsStatementTestCase;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Show unused sharding algorithms statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ShowUnusedShardingAlgorithmsStatementAssert {
+    
+    /**
+     * Assert show unused sharding algorithms statement is correct with 
expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual show unused sharding algorithms statement
+     * @param expected expected show unused sharding algorithms statement test 
case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final ShowUnusedShardingAlgorithmsStatement actual, final 
ShowUnusedShardingAlgorithmsStatementTestCase expected) {
+        if (null != expected.getSchema()) {
+            assertTrue(assertContext.getText("Actual schema should exist."), 
actual.getSchema().isPresent());
+            SchemaAssert.assertIs(assertContext, actual.getSchema().get(), 
expected.getSchema());
+        } else {
+            assertFalse(assertContext.getText("Actual schema should not 
exist."), actual.getSchema().isPresent());
+        }
+    }
+}
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
index 9c79db6..4916e5a 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
@@ -240,6 +240,7 @@ import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowSingleTableRulesStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowSingleTableStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowTransactionRuleStatementTestCase;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowUnusedShardingAlgorithmsStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dml.CallStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dml.CopyStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dml.DeleteStatementTestCase;
@@ -391,16 +392,16 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "show-procedure-status")
     private final List<ShowProcedureStatusStatementTestCase> 
showProcedureStatusStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "show-procedure-code")
     private final List<ShowProcedureCodeStatementTestCase> 
showProcedureCodeStatementTestCases = new LinkedList<>();
     
     @XmlElement(name = "show-relaylog-events")
     private final List<ShowRelaylogEventsStatementTestCase> 
showRelaylogEventsStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "show-slave-hosts")
     private final List<ShowSlaveHostsStatementTestCase> 
showSlaveHostsStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "show-columns")
     private final List<ShowColumnsStatementTestCase> showColumnsTestCases = 
new LinkedList<>();
     
@@ -466,10 +467,10 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "create-database")
     private final List<CreateDatabaseStatementTestCase> createDatabaseTestCase 
= new LinkedList<>();
-
+    
     @XmlElement(name = "create-database-link")
     private final List<CreateDatabaseLinkStatementTestCase> 
createDatabaseLinkTestCase = new LinkedList<>();
-
+    
     @XmlElement(name = "create-dimension")
     private final List<CreateDimensionStatementTestCase> 
createDimensionTestCase = new LinkedList<>();
     
@@ -517,10 +518,10 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "drop-domain")
     private final List<DropDomainStatementTestCase> 
dropDomainStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "show-triggers")
     private final List<ShowTriggersStatementTestCase> showTriggerTestCase = 
new LinkedList<>();
-
+    
     @XmlElement(name = "drop-view")
     private final List<DropViewStatementTestCase> dropViewTestCase = new 
LinkedList<>();
     
@@ -556,7 +557,7 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "audit")
     private final List<AuditStatementTestCase> auditTestCase = new 
LinkedList<>();
-
+    
     @XmlElement(name = "no-audit")
     private final List<NoAuditStatementTestCase> noAuditTestCase = new 
LinkedList<>();
     
@@ -637,7 +638,7 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "create-sharding-auto-table-rule")
     private final List<CreateShardingAutoTableRuleStatementTestCase> 
createShardingTableRuleTestCase = new LinkedList<>();
-  
+    
     @XmlElement(name = "create-sharding-table-rule")
     private final List<CreateShardingTableRuleStatementTestCase> 
createShardingTableRuleTestCases = new LinkedList<>();
     
@@ -706,10 +707,10 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "checkout-scaling")
     private final List<CheckoutScalingStatementTestCase> 
checkoutScalingStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "create-sharding-scaling")
     private final List<CreateShardingScalingStatementTestCase> 
createShardingScalingStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "drop-sharding-scaling")
     private final List<DropShardingScalingStatementTestCase> 
dropShardingScalingStatementTestCases = new LinkedList<>();
     
@@ -766,7 +767,7 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "alter-shadow-algorithm")
     private final List<AlterShadowAlgorithmStatementTestCase> 
alterShadowAlgorithmTestCase = new LinkedList<>();
- 
+    
     @XmlElement(name = "create-shadow-algorithm")
     private final List<CreateShadowAlgorithmStatementTestCase> 
createShadowAlgorithmTestCase = new LinkedList<>();
     
@@ -820,7 +821,7 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "uninstall-component")
     private final List<UninstallComponentStatementTestCase> 
uninstallComponentStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "uninstall-plugin")
     private final List<UninstallPluginStatementTestCase> 
uninstallPluginStatementTestCases = new LinkedList<>();
     
@@ -850,7 +851,7 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "create-default-sharding-strategy")
     private final List<CreateDefaultShardingStrategyStatementTestCase> 
createDefaultShardingStrategyStatementTestCases = new LinkedList<>();
-  
+    
     @XmlElement(name = "alter-default-sharding-strategy")
     private final List<AlterDefaultShardingStrategyStatementTestCase> 
alterDefaultShardingStrategyStatementTestCases = new LinkedList<>();
     
@@ -859,19 +860,19 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "show-replicas")
     private final List<ShowReplicasStatementTestCase> 
showReplicasStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "show-replica-status")
     private final List<ShowReplicaStatusStatementTestCase> 
showReplicaStatusStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "show-slave-status")
     private final List<ShowSlaveStatusStatementTestCase> 
showSlaveStatusStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "alter-sharding-algorithm")
     private final List<AlterShardingAlgorithmStatementTestCase> 
alterShardingAlgorithmStatementTestCases = new LinkedList<>();
     
     @XmlElement(name = "alter-sharding-key-generator")
     private final List<AlterShardingKeyGeneratorStatementTestCase> 
alterShardingKeyGeneratorStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "drop-sharding-key-generator")
     private final List<DropShardingKeyGeneratorStatementTestCase> 
dropShardingKeyGeneratorStatementTestCases = new LinkedList<>();
     
@@ -880,7 +881,7 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "reset")
     private final List<ResetStatementTestCase> resetStatementTestCases = new 
LinkedList<>();
-
+    
     @XmlElement(name = "reset-persist")
     private final List<ResetPersistStatementTestCase> 
resetPersistStatementTestCases = new LinkedList<>();
     
@@ -889,13 +890,13 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "load-index")
     private final List<LoadIndexInfoStatementTestCase> 
loadIndexInfoStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "kill")
     private final List<KillStatementTestCase> killStatementTestCases = new 
LinkedList<>();
-
+    
     @XmlElement(name = "shutdown")
     private final List<ShutdownStatementTestCase> shutdownStatementTestCases = 
new LinkedList<>();
-
+    
     @XmlElement(name = "create-default-single-table")
     private final List<CreateDefaultSingleTableRuleStatementTestCase> 
createDefaultSingleTableRuleStatementTestCases = new LinkedList<>();
     
@@ -907,7 +908,7 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "show-open-tables")
     private final List<ShowOpenTablesStatementTestCase> 
showOpenTablesStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "check-table")
     private final List<CheckTableStatementTestCase> checkTableTestCases = new 
LinkedList<>();
     
@@ -931,7 +932,7 @@ public final class SQLParserTestCases {
     
     @XmlElement(name = "show-variables")
     private final List<ShowVariablesStatementTestCase> 
showVariablesStatementTestCases = new LinkedList<>();
-
+    
     @XmlElement(name = "show-sharding-key-generators")
     private final List<ShowShardingKeyGeneratorsStatementTestCase> 
showShardingKeyGeneratorsStatementTestCases = new LinkedList<>();
     
@@ -980,6 +981,9 @@ public final class SQLParserTestCases {
     @XmlElement(name = "help")
     private final List<HelpStatementTestCase> helpStatementTestCases = new 
LinkedList<>();
     
+    @XmlElement(name = "show-unused-sharding-algorithms")
+    private final List<ShowUnusedShardingAlgorithmsStatementTestCase> 
showUnusedShardingAlgorithmsStatementTestCases = new LinkedList<>();
+    
     /**
      * Get all SQL parser test cases.
      *
@@ -1202,8 +1206,8 @@ public final class SQLParserTestCases {
         putAll(showCharacterSetStatementTestCases, result);
         putAll(showCollationStatementTestCases, result);
         putAll(showVariablesStatementTestCases, result);
-        putAll(showShardingKeyGeneratorsStatementTestCases,result);
-        putAll(showDefaultShardingStrategyStatementTestCases,result);
+        putAll(showShardingKeyGeneratorsStatementTestCases, result);
+        putAll(showDefaultShardingStrategyStatementTestCases, result);
         putAll(dropShardingKeyGeneratorStatementTestCases, result);
         putAll(dropDefaultShardingStrategyStatementTestCases, result);
         putAll(delimiterStatementTestCases, result);
@@ -1211,7 +1215,7 @@ public final class SQLParserTestCases {
         putAll(showSQLParserRuleStatementTestCases, result);
         putAll(createDomainStatementTestCases, result);
         putAll(createRuleStatementTestCases, result);
-        putAll(showAuthorityRuleStatementTestCases,result);
+        putAll(showAuthorityRuleStatementTestCases, result);
         putAll(showTransactionRuleStatementTestCases, result);
         putAll(alterSQLParserRuleStatementTestCases, result);
         putAll(createTypeStatementTestCases, result);
@@ -1224,6 +1228,7 @@ public final class SQLParserTestCases {
         putAll(alterLanguageStatementTestCases, result);
         putAll(dropLanguageStatementTestCases, result);
         putAll(helpStatementTestCases, result);
+        putAll(showUnusedShardingAlgorithmsStatementTestCases, result);
         return result;
     }
     // CHECKSTYLE:ON
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowUnusedShardingAlgorithmsStatementTestCase.java
similarity index 50%
copy from 
shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
copy to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowUnusedShardingAlgorithmsStatementTestCase.java
index 7ac5f5f..5892360 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/RQLStatement.g4
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowUnusedShardingAlgorithmsStatementTestCase.java
@@ -15,46 +15,22 @@
  * limitations under the License.
  */
 
-grammar RQLStatement;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql;
 
-import Keyword, Literals, Symbol;
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.schema.ExpectedSchema;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 
-showShardingTableRules
-    : SHOW SHARDING TABLE (tableRule | RULES) (FROM schemaName)?
-    ;
+import javax.xml.bind.annotation.XmlElement;
 
-showShardingBindingTableRules
-    : SHOW SHARDING BINDING TABLE RULES (FROM schemaName)?
-    ;
-
-showShardingBroadcastTableRules
-    : SHOW SHARDING BROADCAST TABLE RULES (FROM schemaName)?
-    ;
-
-showShardingAlgorithms
-    : SHOW SHARDING ALGORITHMS (FROM schemaName)?
-    ;
-
-showShardingTableNodes
-    : SHOW SHARDING TABLE NODES tableName? (FROM schemaName)?
-    ;
-
-showShardingKeyGenerators
-    : SHOW SHARDING KEY GENERATORS (FROM schemaName)?
-    ;
-
-showShardingDefaultShardingStrategy
-    : SHOW DEFAULT SHARDING STRATEGY (FROM schemaName)?
-    ;
+/**
+ * Show unused sharding algorithms statement test case.
+ */
+@Getter
+@Setter
+public final class ShowUnusedShardingAlgorithmsStatementTestCase extends 
SQLParserTestCase {
     
-tableRule
-    : RULE tableName
-    ;
-
-tableName
-    : IDENTIFIER
-    ;
-
-schemaName
-    : IDENTIFIER
-    ;
+    @XmlElement
+    private ExpectedSchema schema;
+}
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rql/show.xml
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rql/show.xml
index 98d77dd..bbdd4ac 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rql/show.xml
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rql/show.xml
@@ -95,9 +95,13 @@
         <schema name="sharding_db" start-index="34" stop-index="44"/>
     </show-sharding-key-generators>
 
-    <show-transaction-rule sql-case-id="show-transaction-rule" />
+    <show-transaction-rule sql-case-id="show-transaction-rule"/>
 
     <show-default-sharding-strategy 
sql-case-id="show-default-sharding-strategy">
         <schema name="sharding_db" start-index="36" stop-index="46"/>
     </show-default-sharding-strategy>
+
+    <show-unused-sharding-algorithms 
sql-case-id="show-unused-sharding-algorithms">
+        <schema name="schemaName" start-index="37" stop-index="46"/>
+    </show-unused-sharding-algorithms>
 </sql-parser-test-cases>
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rql/show.xml
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rql/show.xml
index cbdd825..b6c3d81 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rql/show.xml
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rql/show.xml
@@ -38,4 +38,5 @@
     <distsql-case id="show-sharding-key-generators" value="SHOW SHARDING KEY 
GENERATORS FROM sharding_db" />
     <distsql-case id="show-transaction-rule" value="SHOW TRANSACTION RULE" />
     <distsql-case id="show-default-sharding-strategy" value="SHOW DEFAULT 
SHARDING STRATEGY FROM sharding_db" />
+    <distsql-case id="show-unused-sharding-algorithms" value="SHOW UNUSED 
SHARDING ALGORITHMS FROM schemaName" />
 </sql-cases>

Reply via email to