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>