You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2021/08/09 05:38:55 UTC
[shardingsphere] branch master updated: feature : #11603 Add
distSQL syntax:'show sharding algorithms' (#11609)
This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 74860db feature : #11603 Add distSQL syntax:'show sharding algorithms' (#11609)
74860db is described below
commit 74860db6815ae7a5f58e8c60cd581c74e3e9472f
Author: lanchengx <52...@users.noreply.github.com>
AuthorDate: Mon Aug 9 13:38:21 2021 +0800
feature : #11603 Add distSQL syntax:'show sharding algorithms' (#11609)
* feature : #11603 Add distSQL syntax:'show sharding algorithms'
* feature : Restore indentation
* feature : Restore indentation
* Restore indentation
* Restore indentation
* Restore indentation
* Add show algorithms document
* update show algorithms document
* update comments & use PropertiesConverter.java
---
.../dist-sql/syntax/rql/rql-sharding-rule.cn.md | 23 ++++++
.../dist-sql/syntax/rql/rql-sharding-rule.en.md | 24 +++++++
.../query/ShardingAlgorithmQueryResultSet.java | 83 ++++++++++++++++++++++
...dingsphere.infra.distsql.query.DistSQLResultSet | 1 +
.../query/ShardingAlgorithmQueryResultSetTest.java | 65 +++++++++++++++++
.../src/main/antlr4/imports/sharding/Keyword.g4 | 4 ++
.../main/antlr4/imports/sharding/RQLStatement.g4 | 4 ++
.../parser/autogen/ShardingRuleStatement.g4 | 1 +
.../core/ShardingRuleSQLStatementVisitor.java | 13 +++-
.../ShowShardingAlgorithmsStatement.java} | 37 ++++------
.../distsql/rql/impl/ShowRulesStatementAssert.java | 5 ++
.../ShowDatabaseDiscoveryRulesStatementAssert.java | 4 +-
.../impl/rule/ShowEncryptRulesStatementAssert.java | 4 +-
...ShowReadwriteSplittingRulesStatementAssert.java | 4 +-
... => ShowShardingAlgorithmsStatementAssert.java} | 16 ++---
...owShardingBindingTableRulesStatementAssert.java | 4 +-
...ShardingBroadcastTableRulesStatementAssert.java | 4 +-
.../ShowShardingTableRulesStatementAssert.java | 4 +-
.../jaxb/cases/domain/SQLParserTestCases.java | 5 ++
.../ShowShardingAlgorithmsStatementTestCase.java | 40 +++++------
.../src/main/resources/case/rql/show.xml | 8 ++-
.../src/main/resources/sql/supported/rql/show.xml | 1 +
22 files changed, 280 insertions(+), 74 deletions(-)
diff --git a/docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.cn.md b/docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.cn.md
index aea29ad..8f5b404 100644
--- a/docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.cn.md
+++ b/docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.cn.md
@@ -10,10 +10,13 @@ weight = 2
```sql
SHOW SHARDING TABLE tableRule | RULES [FROM schemaName]
+SHOW SHARDING ALGORITHMS [FROM schemaName]
+
tableRule:
RULE tableName
```
- 支持查询所有数据分片规则和指定表查询
+- 支持查询所有分片算法
### Sharding Binding Table Rule
@@ -48,6 +51,14 @@ SHOW SHARDING BROADCAST TABLE RULES [FROM schemaName]
| keyGeneratorType | 分布式主键生成器类型 |
| keyGeneratorProps | 分布式主键生成器参数 |
+### Sharding Algorithms
+
+| 列 | 说明 |
+| ------| --------------|
+| name | 分片算法名称 |
+| type | 分片算法类型 |
+| props | 分片算法参数 |
+
### Sharding Binding Table Rule
| 列 | 说明 |
@@ -88,6 +99,18 @@ mysql> show sharding table rule t_order;
1 row in set (0.01 sec)
```
+*SHOW SHARDING ALGORITHMS*
+```sql
+mysql> show sharding algorithms;
++-------------------------+--------+-----------------------------------------------------+
+| name | type | props |
++-------------------------+--------------------------------------------------------------+
+| t_order_inline | INLINE | algorithm-expression=t_order_${order_id % 2} |
+| t_order_item_inline | INLINE | algorithm-expression=t_order_item_${order_id % 2} |
++-------------------------+--------+-----------------------------------------------------+
+2 row in set (0.01 sec)
+```
+
### Sharding Binding Table Rule
```sql
diff --git a/docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.en.md b/docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.en.md
index 5095ebc..ada7d4c 100644
--- a/docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.en.md
+++ b/docs/document/content/features/dist-sql/syntax/rql/rql-sharding-rule.en.md
@@ -10,10 +10,13 @@ weight = 2
```sql
SHOW SHARDING TABLE tableRule | RULES [FROM schemaName]
+SHOW SHARDING ALGORITHMS [FROM schemaName]
+
tableRule:
RULE tableName
```
- Support query all data fragmentation rules and specified table query
+- Support query all sharding algorithms
### Sharding Binding Table Rule
@@ -48,6 +51,15 @@ SHOW SHARDING BROADCAST TABLE RULES [FROM schemaName]
| keyGeneratorType | Distributed primary key generation type |
| keyGeneratorProps | Distributed primary key generation parameter |
+### Sharding Algorithms
+
+| Column | Description |
+| -------| -----------------------------|
+| name | Sharding algorithm name |
+| type | Sharding algorithm type |
+| props | Sharding algorithm parameters|
+
+
### Sharding Binding Table Rule
| Column | Description |
@@ -88,6 +100,18 @@ mysql> show sharding table rule t_order;
1 row in set (0.01 sec)
```
+*SHOW SHARDING ALGORITHMS*
+```sql
+mysql> show sharding algorithms;
++-------------------------+--------+-----------------------------------------------------+
+| name | type | props |
++-------------------------+--------------------------------------------------------------+
+| t_order_inline | INLINE | algorithm-expression=t_order_${order_id % 2} |
+| t_order_item_inline | INLINE | algorithm-expression=t_order_item_${order_id % 2} |
++-------------------------+--------+-----------------------------------------------------+
+2 row in set (0.01 sec)
+```
+
### Sharding Binding Table Rule
```sql
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShardingAlgorithmQueryResultSet.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShardingAlgorithmQueryResultSet.java
new file mode 100644
index 0000000..fc3416e
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShardingAlgorithmQueryResultSet.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sharding.distsql.handler.query;
+
+import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
+import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.properties.PropertiesConverter;
+import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingAlgorithmsStatement;
+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.LinkedList;
+import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Properties;
+
+/**
+ * Result set for show sharding algorithm.
+ */
+public final class ShardingAlgorithmQueryResultSet implements DistSQLResultSet {
+
+ private Iterator<Entry<String, ShardingSphereAlgorithmConfiguration>> data;
+
+ @Override
+ public void init(final ShardingSphereMetaData metaData, final SQLStatement sqlStatement) {
+ Optional<ShardingRuleConfiguration> ruleConfig = metaData.getRuleMetaData().getConfigurations()
+ .stream().filter(each -> each instanceof ShardingRuleConfiguration).map(each -> (ShardingRuleConfiguration) each).findAny();
+ data = ruleConfig.map(option -> option.getShardingAlgorithms()).orElse(Collections.emptyMap()).entrySet().iterator();
+ }
+
+ @Override
+ public Collection<String> getColumnNames() {
+ return Arrays.asList("name", "type", "props");
+ }
+
+ @Override
+ public boolean next() {
+ return data.hasNext();
+ }
+
+ @Override
+ public Collection<Object> getRowData() {
+ return buildTableRowData(data.next());
+ }
+
+ private Collection<Object> buildTableRowData(final Entry<String, ShardingSphereAlgorithmConfiguration> data) {
+ Collection<Object> result = new LinkedList<>();
+ result.add(data.getKey());
+ result.add(data.getValue().getType());
+ result.add(buildProps(data.getValue().getProps()));
+ return result;
+ }
+
+ private Object buildProps(final Properties props) {
+ return Objects.nonNull(props) ? PropertiesConverter.convert(props) : "";
+ }
+
+ @Override
+ public String getType() {
+ return ShowShardingAlgorithmsStatement.class.getCanonicalName();
+ }
+}
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 188d27e..b412594 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
@@ -18,3 +18,4 @@
org.apache.shardingsphere.sharding.distsql.handler.query.ShardingTableRuleQueryResultSet
org.apache.shardingsphere.sharding.distsql.handler.query.ShardingBindingTableRuleQueryResultSet
org.apache.shardingsphere.sharding.distsql.handler.query.ShardingBroadcastTableRuleQueryResultSet
+org.apache.shardingsphere.sharding.distsql.handler.query.ShardingAlgorithmQueryResultSet
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShardingAlgorithmQueryResultSetTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShardingAlgorithmQueryResultSetTest.java
new file mode 100644
index 0000000..ff4e0df
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShardingAlgorithmQueryResultSetTest.java
@@ -0,0 +1,65 @@
+/*
+ * 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.distsql.handler.query.ShardingAlgorithmQueryResultSet;
+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.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public final class ShardingAlgorithmQueryResultSetTest {
+
+ @Test
+ public void assertGetRowData() {
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
+ when(metaData.getRuleMetaData().getConfigurations()).thenReturn(Collections.singleton(createRuleConfiguration()));
+ ShardingAlgorithmQueryResultSet resultSet = new ShardingAlgorithmQueryResultSet();
+ resultSet.init(metaData, mock(ShowShardingAlgorithmsStatement.class));
+ List<Object> actual = new ArrayList<>(resultSet.getRowData());
+ assertThat(actual.size(), is(3));
+ assertThat(actual.get(0), is("database_inline"));
+ assertThat(actual.get(1), is("INLINE"));
+ assertThat(actual.get(2), is("algorithm-expression=ds_${user_id % 2}"));
+ }
+
+ private RuleConfiguration createRuleConfiguration() {
+ ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+ Properties properties1 = new Properties();
+ properties1.put("algorithm-expression", "ds_${user_id % 2}");
+ Map<String, ShardingSphereAlgorithmConfiguration> map = new LinkedHashMap<>(1);
+ map.put("database_inline", new ShardingSphereAlgorithmConfiguration("INLINE", properties1));
+ result.setShardingAlgorithms(map);
+ return result;
+ }
+}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/Keyword.g4 b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/Keyword.g4
index 64dcd4a..b602ae4 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/Keyword.g4
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/imports/sharding/Keyword.g4
@@ -106,3 +106,7 @@ COLUMNS
ALGORITHM
: A L G O R I T H M
;
+
+ALGORITHMS
+ : A L G O R I T H M S
+ ;
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 aa3e22f..1622951 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
@@ -31,6 +31,10 @@ showShardingBroadcastTableRules
: SHOW SHARDING BROADCAST TABLE RULES (FROM schemaName)?
;
+showShardingAlgorithms
+ : SHOW SHARDING ALGORITHMS (FROM schemaName)?
+ ;
+
tableRule
: RULE tableName
;
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShardingRuleStatement.g4 b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShardingRuleStatement.g4
index 6800dcc..c8b7f73 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShardingRuleStatement.g4
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShardingRuleStatement.g4
@@ -33,5 +33,6 @@ execute
| showShardingTableRules
| showShardingBindingTableRules
| showShardingBroadcastTableRules
+ | showShardingAlgorithms
) 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/ShardingRuleSQLStatementVisitor.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleSQLStatementVisitor.java
index 3ef40f8..95673aa 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleSQLStatementVisitor.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/java/org/apache/shardingsphere/sharding/distsql/parser/core/ShardingRuleSQLStatementVisitor.java
@@ -21,6 +21,7 @@ import com.google.common.base.Joiner;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementBaseVisitor;
+import org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser;
import org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.AlgorithmDefinitionContext;
import org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.AlgorithmPropertyContext;
import org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.AlterShardingBindingTableRulesContext;
@@ -41,21 +42,22 @@ import org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementPar
import org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.ShowShardingTableRulesContext;
import org.apache.shardingsphere.distsql.parser.autogen.ShardingRuleStatementParser.TableNameContext;
import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
+import org.apache.shardingsphere.sharding.distsql.parser.segment.BindingTableRuleSegment;
+import org.apache.shardingsphere.sharding.distsql.parser.segment.TableRuleSegment;
import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBindingTableRulesStatement;
import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
import org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingTableRuleStatement;
import org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingBindingTableRulesStatement;
import org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingBroadcastTableRulesStatement;
import org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingAlgorithmStatement;
import org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingBindingTableRulesStatement;
import org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingBroadcastTableRulesStatement;
import org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingTableRuleStatement;
-import org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingAlgorithmStatement;
+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;
import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesStatement;
-import org.apache.shardingsphere.sharding.distsql.parser.segment.BindingTableRuleSegment;
-import org.apache.shardingsphere.sharding.distsql.parser.segment.TableRuleSegment;
import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
@@ -142,6 +144,11 @@ public final class ShardingRuleSQLStatementVisitor extends ShardingRuleStatement
}
@Override
+ public ASTNode visitShowShardingAlgorithms(final ShardingRuleStatementParser.ShowShardingAlgorithmsContext ctx) {
+ return new ShowShardingAlgorithmsStatement(Objects.nonNull(ctx.schemaName()) ? (SchemaSegment) visit(ctx.schemaName()) : null);
+ }
+
+ @Override
public ASTNode visitShardingTableRuleDefinition(final ShardingTableRuleDefinitionContext ctx) {
Collection<String> dataSources = new LinkedList<>();
if (null != ctx.resources()) {
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/ShowShardingAlgorithmsStatement.java
similarity index 62%
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/ShowShardingAlgorithmsStatement.java
index aa3e22f..3258d4d 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/ShowShardingAlgorithmsStatement.java
@@ -15,30 +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)?
- ;
-
-tableRule
- : RULE tableName
- ;
-
-tableName
- : IDENTIFIER
- ;
-
-schemaName
- : IDENTIFIER
- ;
+/**
+ * Show sharding algorithms statement.
+ */
+public final class ShowShardingAlgorithmsStatement extends ShowRulesStatement {
+
+ public ShowShardingAlgorithmsStatement(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 a5e1825..df2117a 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
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.ShowDataba
import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRulesStatement;
import org.apache.shardingsphere.encrypt.distsql.parser.statement.ShowEncryptRulesStatement;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingRulesStatement;
+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;
import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesStatement;
@@ -30,6 +31,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAs
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.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.ShowShardingAlgorithmsStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowShardingBindingTableRulesStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowShardingBroadcastTableRulesStatementAssert;
import org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowShardingTableRulesStatementAssert;
@@ -37,6 +39,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowDataBaseDiscoveryRulesStatementTestCase;
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.ShowShardingAlgorithmsStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShardingBindingTableRulesStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShardingBroadcastTableRulesStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShardingTableRulesStatementTestCase;
@@ -65,6 +68,8 @@ public final class ShowRulesStatementAssert {
ShowShardingBindingTableRulesStatementAssert.assertIs(assertContext, (ShowShardingBindingTableRulesStatement) actual, (ShowShardingBindingTableRulesStatementTestCase) expected);
} else if (actual instanceof ShowShardingBroadcastTableRulesStatement) {
ShowShardingBroadcastTableRulesStatementAssert.assertIs(assertContext, (ShowShardingBroadcastTableRulesStatement) actual, (ShowShardingBroadcastTableRulesStatementTestCase) expected);
+ } else if (actual instanceof ShowShardingAlgorithmsStatement) {
+ ShowShardingAlgorithmsStatementAssert.assertIs(assertContext, (ShowShardingAlgorithmsStatement) actual, (ShowShardingAlgorithmsStatementTestCase) expected);
} else if (actual instanceof ShowShardingTableRulesStatement) {
ShowShardingTableRulesStatementAssert.assertIs(assertContext, (ShowShardingTableRulesStatement) actual, (ShowShardingTableRulesStatementTestCase) 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/ShowDatabaseDiscoveryRulesStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowDatabaseDiscoveryRulesStatementAssert.java
index 91f8fbf..c84b9c8 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowDatabaseDiscoveryRulesStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowDatabaseDiscoveryRulesStatementAssert.java
@@ -37,8 +37,8 @@ public final class ShowDatabaseDiscoveryRulesStatementAssert {
* Assert show database discovery rule statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual show database discovery rules statement
- * @param expected expected show database discovery rules statement test case
+ * @param actual actual show database discovery rules statement
+ * @param expected expected show database discovery rules statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext, final ShowDatabaseDiscoveryRulesStatement actual, final ShowDataBaseDiscoveryRulesStatementTestCase expected) {
if (null != expected.getSchema()) {
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowEncryptRulesStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowEncryptRulesStatementAssert.java
index 2f28eab..7a2347f 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowEncryptRulesStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowEncryptRulesStatementAssert.java
@@ -37,8 +37,8 @@ public final class ShowEncryptRulesStatementAssert {
* Assert Show encrypt rule statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual show encrypt rules statement
- * @param expected expected show encrypt rules statement test case
+ * @param actual actual show encrypt rules statement
+ * @param expected expected show encrypt rules statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext, final ShowEncryptRulesStatement actual, final ShowEncryptRulesStatementTestCase expected) {
if (null != expected.getSchema()) {
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowReadwriteSplittingRulesStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowReadwriteSplittingRulesStatementAssert.java
index 95570a9..25fca47 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowReadwriteSplittingRulesStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowReadwriteSplittingRulesStatementAssert.java
@@ -37,8 +37,8 @@ public final class ShowReadwriteSplittingRulesStatementAssert {
* Assert show readwrite splitting rule statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual show readwrite splitting rules statement
- * @param expected expected show readwrite splitting rules statement test case
+ * @param actual actual show readwrite splitting rules statement
+ * @param expected expected show readwrite splitting rules statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext, final ShowReadwriteSplittingRulesStatement actual, final ShowReadWriteSplittingRulesStatementTestCase expected) {
if (null != expected.getSchema()) {
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingTableRulesStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingAlgorithmsStatementAssert.java
similarity index 77%
copy from shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingTableRulesStatementAssert.java
copy to shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingAlgorithmsStatementAssert.java
index 10a7553..7ddbbc2 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingTableRulesStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingAlgorithmsStatementAssert.java
@@ -19,28 +19,28 @@ package org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statemen
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesStatement;
+import org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingAlgorithmsStatement;
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.ShowShardingTableRulesStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShardingAlgorithmsStatementTestCase;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
- * Show sharding table rules statement assert.
+ * Show sharding algorithms statement assert.
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class ShowShardingTableRulesStatementAssert {
+public final class ShowShardingAlgorithmsStatementAssert {
/**
- * Assert show database discovery rule statement is correct with expected parser result.
+ * Assert show sharding algorithms statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual show database discovery rules statement
- * @param expected expected show database discovery rules statement test case
+ * @param actual actual show sharding algorithms statement
+ * @param expected expected show sharding algorithms statement test case
*/
- public static void assertIs(final SQLCaseAssertContext assertContext, final ShowShardingTableRulesStatement actual, final ShowShardingTableRulesStatementTestCase expected) {
+ public static void assertIs(final SQLCaseAssertContext assertContext, final ShowShardingAlgorithmsStatement actual, final ShowShardingAlgorithmsStatementTestCase expected) {
if (null != expected.getSchema()) {
assertTrue(assertContext.getText("Actual schema should exist."), actual.getSchema().isPresent());
SchemaAssert.assertIs(assertContext, actual.getSchema().get(), expected.getSchema());
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingBindingTableRulesStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingBindingTableRulesStatementAssert.java
index 62954e0..beee004 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingBindingTableRulesStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingBindingTableRulesStatementAssert.java
@@ -37,8 +37,8 @@ public final class ShowShardingBindingTableRulesStatementAssert {
* Assert show sharding binding table statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual show sharding binding table rules statement
- * @param expected expected show sharding binding table rules statement test case
+ * @param actual actual show sharding binding table rules statement
+ * @param expected expected show sharding binding table rules statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext, final ShowShardingBindingTableRulesStatement actual, final ShowShardingBindingTableRulesStatementTestCase expected) {
if (null != expected.getSchema()) {
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingBroadcastTableRulesStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingBroadcastTableRulesStatementAssert.java
index f33f51f..14b183c 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingBroadcastTableRulesStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingBroadcastTableRulesStatementAssert.java
@@ -37,8 +37,8 @@ public final class ShowShardingBroadcastTableRulesStatementAssert {
* Assert show sharding broadcast table rule statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual show sharding broadcast table rules statement
- * @param expected expected show sharding broadcast table rules statement test case
+ * @param actual actual show sharding broadcast table rules statement
+ * @param expected expected show sharding broadcast table rules statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext, final ShowShardingBroadcastTableRulesStatement actual, final ShowShardingBroadcastTableRulesStatementTestCase expected) {
if (null != expected.getSchema()) {
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingTableRulesStatementAssert.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingTableRulesStatementAssert.java
index 10a7553..bad2e98 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingTableRulesStatementAssert.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingTableRulesStatementAssert.java
@@ -37,8 +37,8 @@ public final class ShowShardingTableRulesStatementAssert {
* Assert show database discovery rule statement is correct with expected parser result.
*
* @param assertContext assert context
- * @param actual actual show database discovery rules statement
- * @param expected expected show database discovery rules statement test case
+ * @param actual actual show database discovery rules statement
+ * @param expected expected show database discovery rules statement test case
*/
public static void assertIs(final SQLCaseAssertContext assertContext, final ShowShardingTableRulesStatement actual, final ShowShardingTableRulesStatementTestCase expected) {
if (null != expected.getSchema()) {
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 593a62c..5866a5b 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
@@ -107,6 +107,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowDataBaseDiscoveryRulesStatementTestCase;
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.ShowShardingAlgorithmsStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShardingBindingTableRulesStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShardingBroadcastTableRulesStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShardingTableRulesStatementTestCase;
@@ -447,6 +448,9 @@ public final class SQLParserTestCases {
@XmlElement(name = "show-sharding-broadcast-table-rules")
private final List<ShowShardingBroadcastTableRulesStatementTestCase> showShardingBroadcastTableRulesTestCase = new LinkedList<>();
+ @XmlElement(name = "show-sharding-algorithms")
+ private final List<ShowShardingAlgorithmsStatementTestCase> showShardingAlgorithmsTestCase = new LinkedList<>();
+
@XmlElement(name = "show-sharding-table-rules")
private final List<ShowShardingTableRulesStatementTestCase> showShardingTableRulesTestCase = new LinkedList<>();
@@ -565,6 +569,7 @@ public final class SQLParserTestCases {
putAll(showReadWriteSplittingRulesTestCase, result);
putAll(showShardingBindingTableRulesTestCase, result);
putAll(showShardingBroadcastTableRulesTestCase, result);
+ putAll(showShardingAlgorithmsTestCase, result);
putAll(showShardingTableRulesTestCase, result);
putAll(showShardingTableRuleTestCase, result);
putAll(showScalingJobListStatementTestCase, 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/ShowShardingAlgorithmsStatementTestCase.java
similarity index 55%
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/ShowShardingAlgorithmsStatementTestCase.java
index aa3e22f..ac17adc 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/ShowShardingAlgorithmsStatementTestCase.java
@@ -15,30 +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)?
- ;
-
-tableRule
- : RULE tableName
- ;
-
-tableName
- : IDENTIFIER
- ;
-
-schemaName
- : IDENTIFIER
- ;
+/**
+ * Show sharding algorithms statement test case.
+ */
+@Getter
+@Setter
+public final class ShowShardingAlgorithmsStatementTestCase extends SQLParserTestCase {
+
+ @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 feb0932..c789677 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
@@ -30,14 +30,18 @@
</show-sharding-table-rules>
<show-sharding-table-rules sql-case-id="show-sharding-table-rule">
- <table name="t_order" />
+ <table name="t_order"/>
</show-sharding-table-rules>
<show-sharding-table-rules sql-case-id="show-sharding-table-rule-from">
- <table name="t_order" />
+ <table name="t_order"/>
<schema name="schemaName" start-index="38" stop-index="47"/>
</show-sharding-table-rules>
+ <show-sharding-algorithms sql-case-id="show-sharding-algorithms-from">
+ <schema name="schemaName" start-index="30" stop-index="39"/>
+ </show-sharding-algorithms>
+
<show-readwrite-splitting-rules sql-case-id="show-readwrite-splitting-rules">
<schema name="readwrite_splitting_db" start-index="36" stop-index="57"/>
</show-readwrite-splitting-rules>
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 5da501e..922648e 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
@@ -22,6 +22,7 @@
<distsql-case id="show-sharding-table-rules" value="SHOW SHARDING TABLE RULES FROM schemaName" />
<distsql-case id="show-sharding-table-rule" value="SHOW SHARDING TABLE RULE t_order" />
<distsql-case id="show-sharding-table-rule-from" value="SHOW SHARDING TABLE RULE t_order FROM schemaName" />
+ <distsql-case id="show-sharding-algorithms-from" value="SHOW SHARDING ALGORITHMS FROM schemaName" />
<distsql-case id="show-readwrite-splitting-rules" value="SHOW READWRITE_SPLITTING RULES FROM readwrite_splitting_db" />
<distsql-case id="show-db-discovery-rules" value="SHOW DB_DISCOVERY RULES FROM db_discovery_db" />
<distsql-case id="show-encrypt-rules" value="SHOW ENCRYPT RULES FROM encrypt_db" />