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 c1a1645 #13998 DistSQL to support `SHOW SHARDING KEY GENERATORS`
(#14102)
c1a1645 is described below
commit c1a16459dacfaadc5670dc80065f4ffb9ac1a685
Author: CrackerSuperior <[email protected]>
AuthorDate: Tue Dec 21 16:19:46 2021 +0800
#13998 DistSQL to support `SHOW SHARDING KEY GENERATORS` (#14102)
* #13998 DistSQL to support SHOW SHARDING KEY GENERATOR
* #13998 DistSQL to support `SHOW SHARDING KEY GENERATORS`
* #13998 DistSQL to support SHOW SHARDING KEY GENERATORS
* #13998 DistSQL to support SHOW SHARDING KEY GENERATORS
---
.../query/ShardingKeyGeneratorsQueryResultSet.java | 73 ++++++++++++++++++++++
...dingsphere.infra.distsql.query.DistSQLResultSet | 1 +
.../ShardingKeyGeneratorsQueryResultSetTest.java | 61 ++++++++++++++++++
.../src/main/antlr4/imports/sharding/Keyword.g4 | 4 ++
.../main/antlr4/imports/sharding/RQLStatement.g4 | 4 ++
.../parser/autogen/ShardingDistSQLStatement.g4 | 1 +
.../core/ShardingDistSQLStatementVisitor.java | 8 +++
.../ShowShardingKeyGeneratorsStatement.java} | 44 ++++---------
.../ShowShardingKeyGeneratorsStatementAssert.java | 43 +++++++++++++
.../jaxb/cases/domain/SQLParserTestCases.java | 5 ++
...ShowShardingKeyGeneratorsStatementTestCase.java | 46 +++++---------
.../src/main/resources/case/rql/show.xml | 5 ++
.../src/main/resources/sql/supported/rql/show.xml | 1 +
13 files changed, 232 insertions(+), 64 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShardingKeyGeneratorsQueryResultSet.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShardingKeyGeneratorsQueryResultSet.java
new file mode 100644
index 0000000..3309ba2
--- /dev/null
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/query/ShardingKeyGeneratorsQueryResultSet.java
@@ -0,0 +1,73 @@
+/*
+ * 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.distsql.parser.statement.ShowShardingKeyGeneratorsStatement;
+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.Map;
+import java.util.Map.Entry;
+
+/**
+ * Result set for show sharding key generators.
+ */
+public final class ShardingKeyGeneratorsQueryResultSet implements
DistSQLResultSet {
+
+ private static final String NAME = "name";
+
+ private static final String TYPE = "type";
+
+ private static final String PROPS = "props";
+
+ private Iterator<Entry<String, ShardingSphereAlgorithmConfiguration>> data
= Collections.emptyIterator();
+
+ @Override
+ public void init(final ShardingSphereMetaData metaData, final SQLStatement
sqlStatement) {
+
metaData.getRuleMetaData().findRuleConfiguration(ShardingRuleConfiguration.class)
+ .forEach(each -> data =
each.getKeyGenerators().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() {
+ Map.Entry<String, ShardingSphereAlgorithmConfiguration> entry =
data.next();
+ return Arrays.asList(entry.getKey(), entry.getValue().getType(),
entry.getValue().getProps());
+ }
+
+ @Override
+ public String getType() {
+ return ShowShardingKeyGeneratorsStatement.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 856ee45..6aae787 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
@@ -20,3 +20,4 @@
org.apache.shardingsphere.sharding.distsql.handler.query.ShardingBindingTableRul
org.apache.shardingsphere.sharding.distsql.handler.query.ShardingBroadcastTableRuleQueryResultSet
org.apache.shardingsphere.sharding.distsql.handler.query.ShardingAlgorithmQueryResultSet
org.apache.shardingsphere.sharding.distsql.handler.query.ShardingTableNodesQueryResultSet
+org.apache.shardingsphere.sharding.distsql.handler.query.ShardingKeyGeneratorsQueryResultSet
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShardingKeyGeneratorsQueryResultSetTest.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShardingKeyGeneratorsQueryResultSetTest.java
new file mode 100644
index 0000000..eb8562f
--- /dev/null
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShardingKeyGeneratorsQueryResultSetTest.java
@@ -0,0 +1,61 @@
+/*
+ * 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.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.ShardingKeyGeneratorsQueryResultSet;
+import
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingKeyGeneratorsStatement;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public final class ShardingKeyGeneratorsQueryResultSetTest {
+
+ @Test
+ public void assertGetRowData() {
+ ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class,
RETURNS_DEEP_STUBS);
+
when(metaData.getRuleMetaData().findRuleConfiguration(ShardingRuleConfiguration.class)).thenReturn(createRuleConfigurations());
+ ShardingKeyGeneratorsQueryResultSet resultSet = new
ShardingKeyGeneratorsQueryResultSet();
+ resultSet.init(metaData,
mock(ShowShardingKeyGeneratorsStatement.class));
+ List<Object> actual = new ArrayList<>(resultSet.getRowData());
+ assertThat(actual.size(), is(3));
+ assertThat(actual.get(0), is("snowflake"));
+ assertThat(actual.get(1), is("SNOWFLAKE"));
+ assertThat(actual.get(2).toString(), is("{work-id=123}"));
+ }
+
+ private Collection<ShardingRuleConfiguration> createRuleConfigurations() {
+ ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+ Properties props = new Properties();
+ props.put("work-id", 123);
+ result.getKeyGenerators().put("snowflake", new
ShardingSphereAlgorithmConfiguration("SNOWFLAKE", props));
+ return Collections.singleton(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 4395ee6..0bb4091 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
@@ -178,3 +178,7 @@ KEY
GENERATOR
: G E N E R A T O R
;
+
+GENERATORS
+ : G E N E R A T O R 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 8ba52a7..ba56dcd 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
@@ -38,6 +38,10 @@ showShardingAlgorithms
showShardingTableNodes
: SHOW SHARDING TABLE NODES tableName? (FROM schemaName)?
;
+
+showShardingKeyGenerators
+ : SHOW SHARDING KEY GENERATORS (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/ShardingDistSQLStatement.g4
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
index 458b212..67a014c 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/ShardingDistSQLStatement.g4
@@ -45,5 +45,6 @@ execute
| showShardingTableNodes
| createShardingKeyGenerator
| alterShardingKeyGenerator
+ | showShardingKeyGenerators
) 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 4c7c7dd..d0ce8e8 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
@@ -20,6 +20,7 @@ package
org.apache.shardingsphere.sharding.distsql.parser.core;
import com.google.common.base.Joiner;
import org.antlr.v4.runtime.tree.ParseTree;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementBaseVisitor;
+import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AddShardingHintDatabaseValueContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AddShardingHintTableValueContext;
import
org.apache.shardingsphere.distsql.parser.autogen.ShardingDistSQLStatementParser.AlgorithmDefinitionContext;
@@ -87,6 +88,7 @@ import
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingT
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.ShowShardingKeyGeneratorsStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableNodesStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.ShowShardingTableRulesStatement;
import
org.apache.shardingsphere.sharding.distsql.parser.statement.hint.AddShardingHintDatabaseValueStatement;
@@ -365,4 +367,10 @@ public final class ShardingDistSQLStatementVisitor extends
ShardingDistSQLStatem
private ShardingKeyGeneratorSegment buildShardingKeyGeneratorSegment(final
KeyGeneratorDefinationContext ctx) {
return new
ShardingKeyGeneratorSegment(getIdentifierValue(ctx.keyGeneratorName()),
(AlgorithmSegment) visitAlgorithmDefinition(ctx.algorithmDefinition()));
}
+
+ @Override
+ public ASTNode visitShowShardingKeyGenerators(final
ShardingDistSQLStatementParser.ShowShardingKeyGeneratorsContext ctx) {
+ return new
ShowShardingKeyGeneratorsStatement(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/ShowShardingKeyGeneratorsStatement.java
similarity index 56%
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/ShowShardingKeyGeneratorsStatement.java
index 8ba52a7..b4adfcf 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/ShowShardingKeyGeneratorsStatement.java
@@ -15,38 +15,16 @@
* 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)?
- ;
-
-tableRule
- : RULE tableName
- ;
-
-tableName
- : IDENTIFIER
- ;
-
-schemaName
- : IDENTIFIER
- ;
+/**
+ * Show sharding key generators statement.
+ */
+public final class ShowShardingKeyGeneratorsStatement extends
ShowRulesStatement {
+ public ShowShardingKeyGeneratorsStatement(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/rule/ShowShardingKeyGeneratorsStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingKeyGeneratorsStatementAssert.java
new file mode 100644
index 0000000..1708221
--- /dev/null
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowShardingKeyGeneratorsStatementAssert.java
@@ -0,0 +1,43 @@
+/*
+ * 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.ShowShardingKeyGeneratorsStatement;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.SchemaAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShardingKeyGeneratorsStatementTestCase;
+
+import static org.junit.Assert.assertTrue;
+
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ShowShardingKeyGeneratorsStatementAssert {
+
+ /**
+ * Assert show sharding key generators statement is correct with expected
parser result.
+ * @param assertContext assert context
+ * @param actual actual show sharding key generators statement
+ * @param expected expected show sharding key generators statement test
case
+ */
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final ShowShardingKeyGeneratorsStatement actual,
+ final
ShowShardingKeyGeneratorsStatementTestCase expected) {
+ 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/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 2ffe142..61fdd1e 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
@@ -209,6 +209,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.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.ShowShardingKeyGeneratorsStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowShardingTableNodesStatementTestCase;
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.ShowSingleTableRulesStatementTestCase;
@@ -868,6 +869,9 @@ public final class SQLParserTestCases {
@XmlElement(name = "show-variables")
private final List<ShowVariablesStatementTestCase>
showVariablesStatementTestCases = new LinkedList<>();
+
+ @XmlElement(name = "show-sharding-key-generators")
+ private final List<ShowShardingKeyGeneratorsStatementTestCase>
showShardingKeyGeneratorsStatementTestCases = new LinkedList<>();
@XmlElement(name = "delimiter")
private final List<DelimiterStatementTestCase> delimiterStatementTestCases
= new LinkedList<>();
@@ -1088,6 +1092,7 @@ public final class SQLParserTestCases {
putAll(showCharacterSetStatementTestCases, result);
putAll(showCollationStatementTestCases, result);
putAll(showVariablesStatementTestCases, result);
+ putAll(showShardingKeyGeneratorsStatementTestCases,result);
putAll(delimiterStatementTestCases, result);
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-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowShardingKeyGeneratorsStatementTestCase.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/ShowShardingKeyGeneratorsStatementTestCase.java
index 8ba52a7..7084d09 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/ShowShardingKeyGeneratorsStatementTestCase.java
@@ -15,38 +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)?
- ;
-
-tableRule
- : RULE tableName
- ;
-
-tableName
- : IDENTIFIER
- ;
+/**
+ * Show sharding key generators statement test case.
+ */
+@Getter
+@Setter
+public final class ShowShardingKeyGeneratorsStatementTestCase extends
SQLParserTestCase {
-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 2dcae0e..5050ac7 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
@@ -90,4 +90,9 @@
<show-sharding-table-nodes sql-case-id="show-sharding-table-nodes"
table="t_order">
<schema name="sharding_db" start-index="39" stop-index="49"/>
</show-sharding-table-nodes>
+
+ <show-sharding-key-generators sql-case-id="show-sharding-key-generators">
+ <schema name="sharding_db" start-index="34" stop-index="44"/>
+ </show-sharding-key-generators>
+
</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 5782f0c..794a9e3 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
@@ -35,4 +35,5 @@
<distsql-case id="show-single-table" value="SHOW SINGLE TABLE t_order FROM
single_table_db" />
<distsql-case id="show-single-table-rules" value="SHOW SINGLE TABLE RULES
FROM single_table_db" />
<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"/>
</sql-cases>