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

[shardingsphere] branch master updated: Support `show sharding default strategy` syntax. (#14456)

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 585539b  Support `show sharding default strategy` syntax. (#14456)
585539b is described below

commit 585539b3ed627a94500af54f77306471eb133c98
Author: lanchengx <52...@users.noreply.github.com>
AuthorDate: Sun Jan 2 17:00:35 2022 +0800

    Support `show sharding default strategy` syntax. (#14456)
---
 .../ShardingTableRuleStatementConverter.java       |   2 +-
 .../handler/enums/ShardingStrategyTypeEnum.java    |  80 ++++++++++++++-
 .../DefaultShardingStrategyQueryResultSet.java     |  96 +++++++++++++++++
 .../DropShardingAlgorithmStatementUpdater.java     |   9 ++
 ...dingsphere.infra.distsql.query.DistSQLResultSet |   1 +
 ...gDefaultShardingStrategyQueryResultSetTest.java | 114 +++++++++++++++++++++
 .../main/antlr4/imports/sharding/RQLStatement.g4   |   4 +
 .../parser/autogen/ShardingDistSQLStatement.g4     |   1 +
 .../core/ShardingDistSQLStatementVisitor.java      |   7 ++
 .../ShowDefaultShardingStrategyStatement.java}     |  47 ++-------
 .../distsql/rql/impl/ShowRulesStatementAssert.java |   5 +
 ...ShowDefaultShardingStrategyStatementAssert.java |  51 +++++++++
 .../jaxb/cases/domain/SQLParserTestCases.java      |   5 +
 ...owDefaultShardingStrategyStatementTestCase.java |  50 +++------
 .../src/main/resources/case/rql/show.xml           |   4 +
 .../src/main/resources/sql/supported/rql/show.xml  |   1 +
 16 files changed, 400 insertions(+), 77 deletions(-)

diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/converter/ShardingTableRuleStatementConverter.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/converter/ShardingTableRuleStatementConverter.java
index 29533fb..5f3d6c5 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/converter/ShardingTableRuleStatementConverter.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/converter/ShardingTableRuleStatementConverter.java
@@ -157,7 +157,7 @@ public final class ShardingTableRuleStatementConverter {
      */
     public static ShardingStrategyConfiguration createStrategyConfiguration(final String strategyType, final String shardingColumn, final String shardingAlgorithmName) {
         ShardingStrategyTypeEnum shardingStrategyType = ShardingStrategyTypeEnum.getValueOf(strategyType);
-        return shardingStrategyType.getConfiguration(shardingAlgorithmName, shardingColumn);
+        return shardingStrategyType.createConfiguration(shardingAlgorithmName, shardingColumn);
     }
     
     private static String getAutoTableShardingAlgorithmName(final String tableName, final String algorithmType) {
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/enums/ShardingStrategyTypeEnum.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/enums/ShardingStrategyTypeEnum.java
index df6429c..58151a8 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/enums/ShardingStrategyTypeEnum.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/enums/ShardingStrategyTypeEnum.java
@@ -24,6 +24,8 @@ import org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingS
 import org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
 
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.Optional;
 
 /**
  * Sharding strategy type enum.
@@ -32,25 +34,64 @@ public enum ShardingStrategyTypeEnum {
     
     STANDARD {
         @Override
-        public ShardingStrategyConfiguration getConfiguration(final String shardingAlgorithmName, final String shardingColumn) {
+        public ShardingStrategyConfiguration createConfiguration(final String shardingAlgorithmName, final String shardingColumn) {
             return new StandardShardingStrategyConfiguration(shardingColumn, shardingAlgorithmName);
         }
         
+        @Override
+        public Class<? extends ShardingStrategyConfiguration> getImplementedClass() {
+            return StandardShardingStrategyConfiguration.class;
+        }
+        
+        @Override
+        public Collection<String> getConfigurationContents(final ShardingStrategyConfiguration strategyConfiguration) {
+            return Arrays.asList(((StandardShardingStrategyConfiguration) strategyConfiguration).getShardingColumn(), strategyConfiguration.getShardingAlgorithmName());
+        }
     }, NONE {
         @Override
-        public ShardingStrategyConfiguration getConfiguration(final String shardingAlgorithmName, final String shardingColumn) {
+        public ShardingStrategyConfiguration createConfiguration(final String shardingAlgorithmName, final String shardingColumn) {
             return new NoneShardingStrategyConfiguration();
         }
+        
+        @Override
+        public Class<? extends ShardingStrategyConfiguration> getImplementedClass() {
+            return NoneShardingStrategyConfiguration.class;
+        }
+        
+        @Override
+        public Collection<String> getConfigurationContents(final ShardingStrategyConfiguration strategyConfiguration) {
+            return Arrays.asList("", strategyConfiguration.getShardingAlgorithmName());
+        }
     }, HINT {
         @Override
-        public ShardingStrategyConfiguration getConfiguration(final String shardingAlgorithmName, final String shardingColumn) {
+        public ShardingStrategyConfiguration createConfiguration(final String shardingAlgorithmName, final String shardingColumn) {
             return new HintShardingStrategyConfiguration(shardingAlgorithmName);
         }
+        
+        @Override
+        public Class<? extends ShardingStrategyConfiguration> getImplementedClass() {
+            return HintShardingStrategyConfiguration.class;
+        }
+        
+        @Override
+        public Collection<String> getConfigurationContents(final ShardingStrategyConfiguration strategyConfiguration) {
+            return Arrays.asList("", strategyConfiguration.getShardingAlgorithmName());
+        }
     }, COMPLEX {
         @Override
-        public ShardingStrategyConfiguration getConfiguration(final String shardingAlgorithmName, final String shardingColumn) {
+        public ShardingStrategyConfiguration createConfiguration(final String shardingAlgorithmName, final String shardingColumn) {
             return new ComplexShardingStrategyConfiguration(shardingColumn, shardingAlgorithmName);
         }
+        
+        @Override
+        public Class<? extends ShardingStrategyConfiguration> getImplementedClass() {
+            return ComplexShardingStrategyConfiguration.class;
+        }
+        
+        @Override
+        public Collection<String> getConfigurationContents(final ShardingStrategyConfiguration strategyConfiguration) {
+            return Arrays.asList(((ComplexShardingStrategyConfiguration) strategyConfiguration).getShardingColumns(), strategyConfiguration.getShardingAlgorithmName());
+        }
     };
     
     /**
@@ -60,7 +101,22 @@ public enum ShardingStrategyTypeEnum {
      * @param shardingColumn sharding column
      * @return sharding strategy configuration
      */
-    public abstract ShardingStrategyConfiguration getConfiguration(String shardingAlgorithmName, String shardingColumn);
+    public abstract ShardingStrategyConfiguration createConfiguration(String shardingAlgorithmName, String shardingColumn);
+    
+    /**
+     * Get the class that implements the strategy.
+     *
+     * @return Class implementing the strategy
+     */
+    public abstract Class<? extends ShardingStrategyConfiguration> getImplementedClass();
+    
+    /**
+     * Get the content in the configuration.
+     * @param strategyConfiguration sharding strategy configuration.
+     * 
+     * @return Content list
+     */
+    public abstract Collection<String> getConfigurationContents(ShardingStrategyConfiguration strategyConfiguration);
     
     /**
      * Returns the sharding strategy type.
@@ -77,7 +133,21 @@ public enum ShardingStrategyTypeEnum {
     }
     
     /**
+     * Returns the sharding strategy type.
+     *
+     * @param shardingStrategyConfiguration Implementation class of sharding strategy configuration
+     * @return sharding strategy type
+     */
+    public static ShardingStrategyTypeEnum getValueOf(final ShardingStrategyConfiguration shardingStrategyConfiguration) {
+        Optional<ShardingStrategyTypeEnum> type = Arrays.stream(values())
+                .filter(each -> shardingStrategyConfiguration.getClass().getCanonicalName().equals(each.getImplementedClass().getCanonicalName())).findFirst();
+        type.orElseThrow(() -> new UnsupportedOperationException(String.format("unsupported strategy type %s", shardingStrategyConfiguration.getClass().getName())));
+        return type.get();
+    }
+    
+    /**
      * Determine whether the specified type is included.
+     *
      * @param name name
      * @return have data or not
      */
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/DefaultShardingStrategyQueryResultSet.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/DefaultShardingStrategyQueryResultSet.java
new file mode 100644
index 0000000..6f8be52
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/DefaultShardingStrategyQueryResultSet.java
@@ -0,0 +1,96 @@
+/*
+ * 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.sharding.api.config.ShardingRuleConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.sharding.ShardingStrategyConfiguration;
+import org.apache.shardingsphere.sharding.distsql.handler.enums.ShardingStrategyTypeEnum;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowDefaultShardingStrategyStatement;
+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.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Optional;
+
+/**
+ * Result set for show default sharding strategy.
+ */
+public final class DefaultShardingStrategyQueryResultSet implements DistSQLResultSet {
+    
+    private Iterator<Entry<String, LinkedList<Object>>> data = Collections.emptyIterator();
+    
+    @Override
+    public void init(final ShardingSphereMetaData metaData, final SQLStatement sqlStatement) {
+        Optional<ShardingRuleConfiguration> shardingRuleConfiguration = metaData.getRuleMetaData().findRuleConfiguration(ShardingRuleConfiguration.class).stream().findAny();
+        shardingRuleConfiguration.ifPresent(op -> data = buildData(op).entrySet().iterator());
+    }
+    
+    private Map<String, LinkedList<Object>> buildData(final ShardingRuleConfiguration ruleConfiguration) {
+        Map<String, LinkedList<Object>> result = new LinkedHashMap<>(2);
+        result.put("TABLE", buildDataItem(ruleConfiguration, ruleConfiguration.getDefaultTableShardingStrategy()));
+        result.put("DATABASE", buildDataItem(ruleConfiguration, ruleConfiguration.getDefaultDatabaseShardingStrategy()));
+        return result;
+    }
+    
+    private LinkedList<Object> buildDataItem(final ShardingRuleConfiguration ruleConfiguration, final ShardingStrategyConfiguration strategyConfiguration) {
+        if (null == strategyConfiguration) {
+            return new LinkedList<>(Arrays.asList("NONE", "", "", "", ""));
+        }
+        ShardingStrategyTypeEnum strategyType = ShardingStrategyTypeEnum.getValueOf(strategyConfiguration);
+        if (strategyType == ShardingStrategyTypeEnum.NONE) {
+            return new LinkedList<>(Arrays.asList("NONE", "", "", "", ""));
+        }
+        LinkedList<Object> result = new LinkedList<>(Collections.singleton(strategyType.name()));
+        result.addAll(strategyType.getConfigurationContents(strategyConfiguration));
+        ShardingSphereAlgorithmConfiguration algorithmConfiguration = ruleConfiguration.getShardingAlgorithms().get(strategyConfiguration.getShardingAlgorithmName());
+        result.add(algorithmConfiguration.getType());
+        result.add(algorithmConfiguration.getProps());
+        return result;
+    }
+    
+    @Override
+    public Collection<String> getColumnNames() {
+        return Arrays.asList("name", "type", "sharding_column", "sharding_algorithm_name", "sharding_algorithm_type", "sharding_algorithm_props");
+    }
+    
+    @Override
+    public boolean next() {
+        return data.hasNext();
+    }
+    
+    @Override
+    public Collection<Object> getRowData() {
+        Entry<String, LinkedList<Object>> entry = data.next();
+        entry.getValue().addFirst(entry.getKey());
+        return entry.getValue();
+    }
+    
+    @Override
+    public String getType() {
+        return ShowDefaultShardingStrategyStatement.class.getCanonicalName();
+    }
+}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmStatementUpdater.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmStatementUpdater.java
index 155f591..2651fd1 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmStatementUpdater.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingAlgorithmStatementUpdater.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.infra.distsql.exception.rule.AlgorithmInUsedExc
 import org.apache.shardingsphere.infra.distsql.update.RuleDefinitionDropUpdater;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 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.DropShardingAlgorithmStatement;
 
 import java.util.Collection;
@@ -79,6 +80,14 @@ public final class DropShardingAlgorithmStatementUpdater implements RuleDefiniti
             }
         });
         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 3c882c4..3da55c6 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
@@ -21,6 +21,7 @@ org.apache.shardingsphere.sharding.distsql.handler.query.ShardingBroadcastTableR
 org.apache.shardingsphere.sharding.distsql.handler.query.ShardingAlgorithmQueryResultSet
 org.apache.shardingsphere.sharding.distsql.handler.query.ShardingTableNodesQueryResultSet
 org.apache.shardingsphere.sharding.distsql.handler.query.ShardingKeyGeneratorsQueryResultSet
+org.apache.shardingsphere.sharding.distsql.handler.query.DefaultShardingStrategyQueryResultSet
 org.apache.shardingsphere.scaling.distsql.handler.CheckScalingQueryResultSet
 org.apache.shardingsphere.scaling.distsql.handler.ShowScalingListQueryResultSet
 org.apache.shardingsphere.scaling.distsql.handler.ShowScalingJobStatusQueryResultSet
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShardingDefaultShardingStrategyQueryResultSetTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShardingDefaultShardingStrategyQueryResultSetTest.java
new file mode 100644
index 0000000..d78c7ae
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShardingDefaultShardingStrategyQueryResultSetTest.java
@@ -0,0 +1,114 @@
+/*
+ * 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.strategy.sharding.ComplexShardingStrategyConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.sharding.HintShardingStrategyConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.sharding.NoneShardingStrategyConfiguration;
+import org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
+import org.apache.shardingsphere.sharding.distsql.handler.query.DefaultShardingStrategyQueryResultSet;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingAlgorithmsStatement;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public final class ShardingDefaultShardingStrategyQueryResultSetTest {
+    
+    @Test
+    public void assertGetRowData() {
+        ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
+        when(metaData.getRuleMetaData().findRuleConfiguration(any())).thenReturn(Collections.singleton(createRuleConfiguration1()));
+        DefaultShardingStrategyQueryResultSet resultSet = new DefaultShardingStrategyQueryResultSet();
+        resultSet.init(metaData, mock(ShowShardingAlgorithmsStatement.class));
+        List<Object> actual = new ArrayList<>(resultSet.getRowData());
+        assertThat(actual.size(), is(6));
+        assertThat(actual.get(0), is("TABLE"));
+        assertThat(actual.get(1), is("NONE"));
+        assertThat(actual.get(2), is(""));
+        assertThat(actual.get(3), is(""));
+        assertThat(actual.get(4), is(""));
+        assertThat(actual.get(5), is(""));
+        actual = new ArrayList<>(resultSet.getRowData());
+        assertThat(actual.size(), is(6));
+        assertThat(actual.get(0), is("DATABASE"));
+        assertThat(actual.get(1), is("COMPLEX"));
+        assertThat(actual.get(2), is("use_id, order_id"));
+        assertThat(actual.get(3), is("database_inline"));
+        assertThat(actual.get(4), is("INLINE"));
+        assertThat(actual.get(5).toString(), is("{algorithm-expression=ds_${user_id % 2}}"));
+        when(metaData.getRuleMetaData().findRuleConfiguration(any())).thenReturn(Collections.singleton(createRuleConfiguration2()));
+        resultSet = new DefaultShardingStrategyQueryResultSet();
+        resultSet.init(metaData, mock(ShowShardingAlgorithmsStatement.class));
+        actual = new ArrayList<>(resultSet.getRowData());
+        assertThat(actual.size(), is(6));
+        assertThat(actual.get(0), is("TABLE"));
+        assertThat(actual.get(1), is("STANDARD"));
+        assertThat(actual.get(2), is("use_id"));
+        assertThat(actual.get(3), is("database_inline"));
+        assertThat(actual.get(4), is("INLINE"));
+        assertThat(actual.get(5).toString(), is("{algorithm-expression=ds_${user_id % 2}}"));
+        actual = new ArrayList<>(resultSet.getRowData());
+        assertThat(actual.size(), is(6));
+        assertThat(actual.get(0), is("DATABASE"));
+        assertThat(actual.get(1), is("HINT"));
+        assertThat(actual.get(2), is(""));
+        assertThat(actual.get(3), is("database_inline"));
+        assertThat(actual.get(4), is("INLINE"));
+        assertThat(actual.get(5).toString(), is("{algorithm-expression=ds_${user_id % 2}}"));
+    }
+    
+    private RuleConfiguration createRuleConfiguration1() {
+        ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+        Properties properties = new Properties();
+        properties.put("algorithm-expression", "ds_${user_id % 2}");
+        Map<String, ShardingSphereAlgorithmConfiguration> map = new LinkedHashMap<>(1);
+        map.put("database_inline", new ShardingSphereAlgorithmConfiguration("INLINE", properties));
+        result.setShardingAlgorithms(map);
+        result.setDefaultTableShardingStrategy(new NoneShardingStrategyConfiguration());
+        result.setDefaultDatabaseShardingStrategy(new ComplexShardingStrategyConfiguration("use_id, order_id", "database_inline"));
+        return result;
+    }
+    
+    private RuleConfiguration createRuleConfiguration2() {
+        ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+        Properties properties = new Properties();
+        properties.put("algorithm-expression", "ds_${user_id % 2}");
+        Map<String, ShardingSphereAlgorithmConfiguration> map = new LinkedHashMap<>(1);
+        map.put("database_inline", new ShardingSphereAlgorithmConfiguration("INLINE", properties));
+        result.setShardingAlgorithms(map);
+        result.setDefaultTableShardingStrategy(new StandardShardingStrategyConfiguration("use_id", "database_inline"));
+        result.setDefaultDatabaseShardingStrategy(new HintShardingStrategyConfiguration("database_inline"));
+        return result;
+    }
+}
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 ba56dcd..7ac5f5f 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
@@ -42,6 +42,10 @@ showShardingTableNodes
 showShardingKeyGenerators
     : SHOW SHARDING KEY GENERATORS (FROM schemaName)?
     ;
+
+showShardingDefaultShardingStrategy
+    : SHOW DEFAULT SHARDING STRATEGY (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 7fcaa71..c0c9f74 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
@@ -47,5 +47,6 @@ execute
     | alterShardingKeyGenerator
     | showShardingKeyGenerators
     | dropShardingKeyGenerator
+    | showShardingDefaultShardingStrategy
     ) 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 155d643..67a8352 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
@@ -57,6 +57,7 @@ import org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatement
 import org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingAlgorithmsContext;
 import org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingBindingTableRulesContext;
 import org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingBroadcastTableRulesContext;
+import org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingDefaultShardingStrategyContext;
 import org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingHintStatusContext;
 import org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingKeyGeneratorsContext;
 import org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.ShowShardingTableNodesContext;
@@ -88,6 +89,7 @@ import org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingB
 import org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingBroadcastTableRulesStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingKeyGeneratorStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingTableRuleStatement;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowDefaultShardingStrategyStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingAlgorithmsStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingBindingTableRulesStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingBroadcastTableRulesStatement;
@@ -403,4 +405,9 @@ public final class ShardingDistSQLStatementVisitor extends ShardingDistSQLStatem
     public ASTNode visitDropShardingKeyGenerator(final DropShardingKeyGeneratorContext ctx) {
         return new DropShardingKeyGeneratorStatement(ctx.keyGeneratorName().stream().map(each -> getIdentifierValue(each)).collect(Collectors.toList()));
     }
+    
+    @Override
+    public ASTNode visitShowShardingDefaultShardingStrategy(final ShowShardingDefaultShardingStrategyContext ctx) {
+        return new ShowDefaultShardingStrategyStatement(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/ShowDefaultShardingStrategyStatement.java
similarity index 53%
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/ShowDefaultShardingStrategyStatement.java
index ba56dcd..54ec03d 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/ShowDefaultShardingStrategyStatement.java
@@ -15,42 +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)?
-    ;
+/**
+ * Show default sharding strategy statement.
+ */
+public final class ShowDefaultShardingStrategyStatement extends ShowRulesStatement {
     
-tableRule
-    : RULE tableName
-    ;
-
-tableName
-    : IDENTIFIER
-    ;
-
-schemaName
-    : IDENTIFIER
-    ;
+    public ShowDefaultShardingStrategyStatement(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 02a21d3..fc60ae4 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
@@ -30,6 +30,7 @@ import org.apache.shardingsphere.encrypt.distsql.parser.statement.ShowEncryptRul
 import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingRulesStatement;
 import org.apache.shardingsphere.shadow.distsql.parser.statement.ShowShadowAlgorithmsStatement;
 import org.apache.shardingsphere.shadow.distsql.parser.statement.ShowShadowRulesStatement;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowDefaultShardingStrategyStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingAlgorithmsStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingBindingTableRulesStatement;
 import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingBroadcastTableRulesStatement;
@@ -38,6 +39,7 @@ import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingT
 import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesStatement;
 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;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowEncryptRulesStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowReadwriteSplittingRulesStatementAssert;
 import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowShadowAlgorithmsStatementAssert;
@@ -53,6 +55,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.ShowTransactionRuleStatementAssert;
 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;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowEncryptRulesStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowReadwriteSplittingRulesStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShadowAlgorithmsStatementTestCase;
@@ -109,6 +112,8 @@ public final class ShowRulesStatementAssert {
             ShowShardingKeyGeneratorsStatementAssert.assertIs(assertContext, (ShowShardingKeyGeneratorsStatement) actual, (ShowShardingKeyGeneratorsStatementTestCase) expected);
         } else if (actual instanceof ShowTransactionRuleStatement) {
             ShowTransactionRuleStatementAssert.assertIs(assertContext, (ShowTransactionRuleStatement) actual, (ShowTransactionRuleStatementTestCase) expected);
+        } else if (actual instanceof ShowDefaultShardingStrategyStatement) {
+            ShowDefaultShardingStrategyStatementAssert.assertIs(assertContext, (ShowDefaultShardingStrategyStatement) actual, (ShowDefaultShardingStrategyStatementTestCase) 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/ShowDefaultShardingStrategyStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowDefaultShardingStrategyStatementAssert.java
new file mode 100644
index 0000000..cf097cc
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowDefaultShardingStrategyStatementAssert.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.ShowDefaultShardingStrategyStatement;
+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.ShowDefaultShardingStrategyStatementTestCase;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Show default sharding strategy statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ShowDefaultShardingStrategyStatementAssert {
+    
+    /**
+     * Assert show default sharding strategy statement is correct with expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual show default sharding strategy statement
+     * @param expected expected show default sharding strategy statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, final ShowDefaultShardingStrategyStatement actual, final ShowDefaultShardingStrategyStatementTestCase 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 5b9a7c0..faf7f9f 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
@@ -212,6 +212,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingKeyGeneratorStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.drop.DropShardingTableRuleStatementTestCase;
 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;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowEncryptRulesStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowReadwriteSplittingRulesStatementTestCase;
 import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShadowAlgorithmsStatementTestCase;
@@ -900,6 +901,9 @@ public final class SQLParserTestCases {
     @XmlElement(name = "show-sharding-key-generators")
     private final List<ShowShardingKeyGeneratorsStatementTestCase> showShardingKeyGeneratorsStatementTestCases = new LinkedList<>();
     
+    @XmlElement(name = "show-default-sharding-strategy")
+    private final List<ShowDefaultShardingStrategyStatementTestCase> showDefaultShardingStrategyStatementTestCases = new LinkedList<>();
+    
     @XmlElement(name = "delimiter")
     private final List<DelimiterStatementTestCase> delimiterStatementTestCases = new LinkedList<>();
     
@@ -1141,6 +1145,7 @@ public final class SQLParserTestCases {
         putAll(showCollationStatementTestCases, result);
         putAll(showVariablesStatementTestCases, result);
         putAll(showShardingKeyGeneratorsStatementTestCases,result);
+        putAll(showDefaultShardingStrategyStatementTestCases,result);
         putAll(dropShardingKeyGeneratorStatementTestCases, result);
         putAll(delimiterStatementTestCases, result);
         putAll(dropDomainStatementTestCases, result);
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/ShowDefaultShardingStrategyStatementTestCase.java
similarity index 53%
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/ShowDefaultShardingStrategyStatementTestCase.java
index ba56dcd..f8e4ce3 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/ShowDefaultShardingStrategyStatementTestCase.java
@@ -15,42 +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)?
-    ;
+/**
+ * Show default sharding strategy statement test case.
+ */
+@Getter
+@Setter
+public final class ShowDefaultShardingStrategyStatementTestCase 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 07fbcee..98d77dd 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
@@ -96,4 +96,8 @@
     </show-sharding-key-generators>
 
     <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>
 </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 3ad804d..cbdd825 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
@@ -37,4 +37,5 @@
     <distsql-case id="show-sharding-table-nodes" value="SHOW SHARDING TABLE NODES t_order FROM sharding_db" />
     <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" />
 </sql-cases>