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>

Reply via email to