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 c1f1b46 [DistSQL] Support show single table rule resource statement
(#13623)
c1f1b46 is described below
commit c1f1b46325c43475693fdb56acc61a33babdbda8
Author: lanchengx <[email protected]>
AuthorDate: Mon Nov 15 23:47:20 2021 -0600
[DistSQL] Support show single table rule resource statement (#13623)
* `show single table rule` is modified to `show single table`
* Move class
* Support `show single table rule` statement.
* Add document.
* Update document.
* Update document.
* Update document.
* Update comment.
* Update document.
* Update document.
* Update document.
---
.../distsql/syntax/rdl/rdl-shadow-rule.cn.md | 2 +-
.../distsql/syntax/rdl/rdl-shadow-rule.en.md | 2 +-
.../distsql/syntax/rdl/rdl-single-table.cn.md | 31 +++++++++++
.../distsql/syntax/rdl/rdl-single-table.en.md | 31 +++++++++++
.../distsql/syntax/rql/rql-single-table.cn.md | 33 +++++++++--
.../distsql/syntax/rql/rql-single-table.en.md | 33 +++++++++--
.../src/main/antlr4/imports/RQLStatement.g4 | 13 +++--
.../parser/autogen/CommonDistSQLStatement.g4 | 3 +-
.../core/common/CommonDistSQLStatementVisitor.java | 13 ++++-
.../rql/show/ShowSingleTableRulesStatement.java | 5 +-
...tatement.java => ShowSingleTableStatement.java} | 6 +-
.../{ => resource}/DataSourceQueryResultSet.java | 2 +-
.../DataSourceQueryResultSetConverter.java | 2 +-
.../SingleTableQueryResultSet.java} | 16 +++---
.../SingleTableRulesQueryResultSet.java} | 29 ++++------
...dingsphere.infra.distsql.query.DistSQLResultSet | 5 +-
.../rql/DataSourceQueryResultSetConverterTest.java | 1 +
.../distsql/rql/DataSourceQueryResultSetTest.java | 1 +
...est.java => SingleTableQueryResultSetTest.java} | 17 +++---
.../rql/SingleTableRulesQueryResultSetTest.java | 64 ++++++++++++++++++++++
.../distsql/rql/impl/ShowRulesStatementAssert.java | 5 ++
.../impl/rule/ShowSingleTableStatementAssert.java | 51 +++++++++++++++++
.../jaxb/cases/domain/SQLParserTestCases.java | 5 ++
.../rql/ShowSingleTableRulesStatementTestCase.java | 4 --
....java => ShowSingleTableStatementTestCase.java} | 4 +-
.../src/main/resources/case/rql/show.xml | 8 ++-
.../src/main/resources/sql/supported/rdl/drop.xml | 2 +-
.../src/main/resources/sql/supported/rql/show.xml | 3 +-
28 files changed, 316 insertions(+), 75 deletions(-)
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-shadow-rule.cn.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-shadow-rule.cn.md
index 6dd365d..b8bff65 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-shadow-rule.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-shadow-rule.cn.md
@@ -9,7 +9,7 @@ weight = 6
CREATE SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] ...
ALTER SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] ...
-``
+
CREATE SHADOW ALGORITHM shadowAlgorithm [, shadowAlgorithm] ...
ALTER SHADOW ALGORITHM shadowAlgorithm [, shadowAlgorithm] ...
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-shadow-rule.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-shadow-rule.en.md
index d730a41..138c724 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-shadow-rule.en.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-shadow-rule.en.md
@@ -9,7 +9,7 @@ weight = 6
CREATE SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] ...
ALTER SHADOW RULE shadowRuleDefinition [, shadowRuleDefinition] ...
-```
+
CREATE SHADOW ALGORITHM shadowAlgorithm [, shadowAlgorithm] ...
ALTER SHADOW ALGORITHM shadowAlgorithm [, shadowAlgorithm] ...
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-single-table.cn.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-single-table.cn.md
new file mode 100644
index 0000000..d704a88
--- /dev/null
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-single-table.cn.md
@@ -0,0 +1,31 @@
++++
+title = "单表"
+weight = 7
++++
+
+## 定义
+
+```sql
+CREATE DEFAULT SINGLE TABLE RULE singleTableRuleDefinition
+
+ALTER DEFAULT SINGLE TABLE RULE singleTableRuleDefinition
+
+DROP DEFAULT SINGLE TABLE RULE
+
+singleTableRuleDefinition:
+ RESOURCE = resourceName
+```
+- `RESOURCE` 需使用 RDL 管理的数据源资源
+
+
+## 示例
+
+### Single Table Rule
+
+```sql
+CREATE DEFAULT SINGLE TABLE RULE RESOURCE = ds_0
+
+ALTER DEFAULT SINGLE TABLE RULE RESOURCE = ds_1
+
+DROP DEFAULT SINGLE TABLE RULE
+```
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-single-table.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-single-table.en.md
new file mode 100644
index 0000000..e1be122
--- /dev/null
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/rdl-single-table.en.md
@@ -0,0 +1,31 @@
++++
+title = "Single Table"
+weight = 7
++++
+
+## Definition
+
+```sql
+CREATE DEFAULT SINGLE TABLE RULE singleTableRuleDefinition
+
+ALTER DEFAULT SINGLE TABLE RULE singleTableRuleDefinition
+
+DROP DEFAULT SINGLE TABLE RULE
+
+singleTableRuleDefinition:
+ RESOURCE = resourceName
+```
+- `RESOURCE` needs to use data source resource managed by RDL
+
+
+## Example
+
+### Single Table Rule
+
+```sql
+CREATE DEFAULT SINGLE TABLE RULE RESOURCE = ds_0
+
+ALTER DEFAULT SINGLE TABLE RULE RESOURCE = ds_1
+
+DROP DEFAULT SINGLE TABLE RULE
+```
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rql-single-table.cn.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rql-single-table.cn.md
index 36cac1c..00bf2f7 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rql-single-table.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rql-single-table.cn.md
@@ -6,23 +6,48 @@ weight = 7
## 定义
```sql
-SHOW SINGLE TABLE (tableRule | RULES) [FROM schemaName]
+SHOW SINGLE TABLE RULES [FROM schemaName]
-tableRule:
- RULE tableName
+SHOW SINGLE tableDefinition | TABLES [FROM schemaName]
+
+tableDefinition:
+ TABLE tableName
```
## 说明
+### Single Table Rule
+
| 列 | 说明 |
| ------------- | ------------ |
-| table_name | 单表名称 |
+| name | 规则名称 |
| resource_name | 数据源名称 |
+### Single Table
+
+| 列 | 说明 |
+| ------------- | ------------ |
+| table_name | 单表名称 |
+| resource_name | 数据源名称 |
+
## 示例
+### Single Table Rule
+
```sql
mysql> show single table rules;
++---------+---------------+
+| name | resource_name |
++---------+---------------+
+| default | ds_0 |
++---------+---------------+
+1 row in set (3.59 sec)
+```
+
+### Single Table
+
+```sql
+mysql> show single tables;
+--------------+---------------+
| table_name | resource_name |
+--------------+---------------+
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rql-single-table.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rql-single-table.en.md
index cfff1c2..db747d8 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rql-single-table.en.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rql-single-table.en.md
@@ -6,23 +6,48 @@ weight = 7
## Definition
```sql
-SHOW SINGLE TABLE (tableRule | RULES) [FROM schemaName]
+SHOW SINGLE TABLE RULES [FROM schemaName]
-tableRule:
- RULE tableName
+SHOW SINGLE tableDefinition | TABLES [FROM schemaName]
+
+tableDefinition:
+ TABLE tableName
```
## Description
+### Single Table Rule
+
+| Column | Description |
+| ------------- | ------------------|
+| name | Rule name |
+| resource_name | Data source name |
+
+### Single Table
+
| Column | Description |
-| ------------- | -------------------|
+| ------------- | ------------------ |
| table_name | Single table name |
| resource_name | Data source name |
## Example
+### Single Table Rule
+
```sql
mysql> show single table rules;
++---------+---------------+
+| name | resource_name |
++---------+---------------+
+| default | ds_0 |
++---------+---------------+
+1 row in set (3.59 sec)
+```
+
+### Single Table
+
+```sql
+mysql> show single tables;
+--------------+---------------+
| table_name | resource_name |
+--------------+---------------+
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/antlr4/imports/RQLStatement.g4
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/antlr4/imports/RQLStatement.g4
index aa8b09a..4f56b79 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/antlr4/imports/RQLStatement.g4
+++
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/antlr4/imports/RQLStatement.g4
@@ -23,16 +23,19 @@ showResources
: SHOW SCHEMA RESOURCES (FROM schemaName)?
;
-showSinglesTableRules
- : SHOW SINGLE TABLE (tableRule | RULES) (FROM schemaName)?
+showSingleTableRules
+ : SHOW SINGLE TABLE RULES (FROM schemaName)?
;
-
+
+showSingleTable
+ : SHOW SINGLE (table | TABLES) (FROM schemaName)?;
+
schemaName
: IDENTIFIER
;
-tableRule
- : RULE tableName
+table
+ : TABLE tableName
;
tableName
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/CommonDistSQLStatement.g4
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/CommonDistSQLStatement.g4
index 2a544f3..92b1e86 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/CommonDistSQLStatement.g4
+++
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/antlr4/org/apache/shardingsphere/distsql/parser/autogen/CommonDistSQLStatement.g4
@@ -31,7 +31,8 @@ execute
| enableInstance
| disableInstance
| showInstance
- | showSinglesTableRules
+ | showSingleTable
+ | showSingleTableRules
| createDefaultSingleTableRule
| alterDefaultSingleTableRule
| dropDefaultSingleTableRule
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/common/CommonDistSQLStatementVisitor.java
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/common/CommonDistSQLStatementVisitor.java
index 9fb2518..6687d31 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/common/CommonDistSQLStatementVisitor.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-parser/src/main/java/org/apache/shardingsphere/distsql/parser/core/common/CommonDistSQLStatementVisitor.java
@@ -37,7 +37,8 @@ import
org.apache.shardingsphere.distsql.parser.autogen.CommonDistSQLStatementPa
import
org.apache.shardingsphere.distsql.parser.autogen.CommonDistSQLStatementParser.ShowAllVariablesContext;
import
org.apache.shardingsphere.distsql.parser.autogen.CommonDistSQLStatementParser.ShowInstanceContext;
import
org.apache.shardingsphere.distsql.parser.autogen.CommonDistSQLStatementParser.ShowResourcesContext;
-import
org.apache.shardingsphere.distsql.parser.autogen.CommonDistSQLStatementParser.ShowSinglesTableRulesContext;
+import
org.apache.shardingsphere.distsql.parser.autogen.CommonDistSQLStatementParser.ShowSingleTableContext;
+import
org.apache.shardingsphere.distsql.parser.autogen.CommonDistSQLStatementParser.ShowSingleTableRulesContext;
import
org.apache.shardingsphere.distsql.parser.autogen.CommonDistSQLStatementParser.ShowVariableContext;
import org.apache.shardingsphere.distsql.parser.segment.DataSourceSegment;
import
org.apache.shardingsphere.distsql.parser.statement.ral.common.hint.ClearHintStatement;
@@ -54,6 +55,7 @@ import
org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropDefaultSi
import
org.apache.shardingsphere.distsql.parser.statement.rdl.drop.DropResourceStatement;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableRulesStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
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;
@@ -161,8 +163,13 @@ public final class CommonDistSQLStatementVisitor extends
CommonDistSQLStatementB
}
@Override
- public ASTNode visitShowSinglesTableRules(final
ShowSinglesTableRulesContext ctx) {
- return new ShowSingleTableRulesStatement(null == ctx.tableRule() ?
null : getIdentifierValue(ctx.tableRule().tableName()),
+ public ASTNode visitShowSingleTableRules(final ShowSingleTableRulesContext
ctx) {
+ return new ShowSingleTableRulesStatement(null == ctx.schemaName() ?
null : (SchemaSegment) visit(ctx.schemaName()));
+ }
+
+ @Override
+ public ASTNode visitShowSingleTable(final ShowSingleTableContext ctx) {
+ return new ShowSingleTableStatement(null == ctx.table() ? null :
getIdentifierValue(ctx.table().tableName()),
null == ctx.schemaName() ? null : (SchemaSegment)
visit(ctx.schemaName()));
}
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java
index 7a2a6df..41904c1 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java
@@ -26,10 +26,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSeg
@Getter
public final class ShowSingleTableRulesStatement extends ShowRulesStatement {
- private final String tableName;
-
- public ShowSingleTableRulesStatement(final String tableName, final
SchemaSegment schema) {
+ public ShowSingleTableRulesStatement(final SchemaSegment schema) {
super(schema);
- this.tableName = tableName;
}
}
diff --git
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableStatement.java
similarity index 84%
copy from
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java
copy to
shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableStatement.java
index 7a2a6df..f0b80b1 100644
---
a/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableRulesStatement.java
+++
b/shardingsphere-distsql/shardingsphere-distsql-statement/src/main/java/org/apache/shardingsphere/distsql/parser/statement/rql/show/ShowSingleTableStatement.java
@@ -21,14 +21,14 @@ import lombok.Getter;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
/**
- * Show single table rules statement.
+ * Show single table statement.
*/
@Getter
-public final class ShowSingleTableRulesStatement extends ShowRulesStatement {
+public final class ShowSingleTableStatement extends ShowRulesStatement {
private final String tableName;
- public ShowSingleTableRulesStatement(final String tableName, final
SchemaSegment schema) {
+ public ShowSingleTableStatement(final String tableName, final
SchemaSegment schema) {
super(schema);
this.tableName = tableName;
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSet.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/resource/DataSourceQueryResultSet.java
similarity index 99%
rename from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSet.java
rename to
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/resource/DataSourceQueryResultSet.java
index 3d0cbd5..d19b947 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSet.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/resource/DataSourceQueryResultSet.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.rql;
+package org.apache.shardingsphere.proxy.backend.text.distsql.rql.resource;
import com.google.gson.Gson;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowResourcesStatement;
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetConverter.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/resource/DataSourceQueryResultSetConverter.java
similarity index 99%
rename from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetConverter.java
rename to
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/resource/DataSourceQueryResultSetConverter.java
index 80b7e6e..958e487 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetConverter.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/resource/DataSourceQueryResultSetConverter.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.rql;
+package org.apache.shardingsphere.proxy.backend.text.distsql.rql.resource;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRuleQueryResultSet.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableQueryResultSet.java
similarity index 84%
copy from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRuleQueryResultSet.java
copy to
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableQueryResultSet.java
index c9be884..b7f5cc7 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRuleQueryResultSet.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableQueryResultSet.java
@@ -15,9 +15,9 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.rql;
+package org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule;
-import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableRulesStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.singletable.rule.SingleTableDataNode;
@@ -34,19 +34,19 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
- * Result set for show single table rules.
+ * Result set for show single table.
*/
-public final class SingleTableRuleQueryResultSet implements DistSQLResultSet {
+public final class SingleTableQueryResultSet implements DistSQLResultSet {
private Iterator<SingleTableDataNode> data = Collections.emptyIterator();
@Override
public void init(final ShardingSphereMetaData metaData, final SQLStatement
sqlStatement) {
- ShowSingleTableRulesStatement showSingleTableRulesStatement =
(ShowSingleTableRulesStatement) sqlStatement;
+ ShowSingleTableStatement showSingleTableStatement =
(ShowSingleTableStatement) sqlStatement;
Stream<SingleTableDataNode> singleTableRules =
metaData.getRuleMetaData().getRules().stream().filter(each -> each instanceof
SingleTableRule)
.map(each -> (SingleTableRule) each).map(each ->
each.getSingleTableDataNodes().entrySet()).flatMap(Collection::stream).map(Entry::getValue);
- if (null != showSingleTableRulesStatement.getTableName()) {
- singleTableRules = singleTableRules.filter(each ->
showSingleTableRulesStatement.getTableName().equals(each.getTableName()));
+ if (null != showSingleTableStatement.getTableName()) {
+ singleTableRules = singleTableRules.filter(each ->
showSingleTableStatement.getTableName().equals(each.getTableName()));
}
data =
singleTableRules.collect(Collectors.toCollection(LinkedList::new)).iterator();
}
@@ -69,6 +69,6 @@ public final class SingleTableRuleQueryResultSet implements
DistSQLResultSet {
@Override
public String getType() {
- return ShowSingleTableRulesStatement.class.getCanonicalName();
+ return ShowSingleTableStatement.class.getCanonicalName();
}
}
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRuleQueryResultSet.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableRulesQueryResultSet.java
similarity index 57%
rename from
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRuleQueryResultSet.java
rename to
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableRulesQueryResultSet.java
index c9be884..3f6cad7 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRuleQueryResultSet.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/rule/SingleTableRulesQueryResultSet.java
@@ -15,45 +15,37 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.proxy.backend.text.distsql.rql;
+package org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableRulesStatement;
import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.singletable.rule.SingleTableDataNode;
-import org.apache.shardingsphere.singletable.rule.SingleTableRule;
+import
org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration;
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.stream.Collectors;
-import java.util.stream.Stream;
+import java.util.Optional;
/**
* Result set for show single table rules.
*/
-public final class SingleTableRuleQueryResultSet implements DistSQLResultSet {
+public final class SingleTableRulesQueryResultSet implements DistSQLResultSet {
- private Iterator<SingleTableDataNode> data = Collections.emptyIterator();
+ private Iterator<String> data = Collections.emptyIterator();
@Override
public void init(final ShardingSphereMetaData metaData, final SQLStatement
sqlStatement) {
- ShowSingleTableRulesStatement showSingleTableRulesStatement =
(ShowSingleTableRulesStatement) sqlStatement;
- Stream<SingleTableDataNode> singleTableRules =
metaData.getRuleMetaData().getRules().stream().filter(each -> each instanceof
SingleTableRule)
- .map(each -> (SingleTableRule) each).map(each ->
each.getSingleTableDataNodes().entrySet()).flatMap(Collection::stream).map(Entry::getValue);
- if (null != showSingleTableRulesStatement.getTableName()) {
- singleTableRules = singleTableRules.filter(each ->
showSingleTableRulesStatement.getTableName().equals(each.getTableName()));
- }
- data =
singleTableRules.collect(Collectors.toCollection(LinkedList::new)).iterator();
+ Optional<SingleTableRuleConfiguration> ruleConfiguration =
metaData.getRuleMetaData().getConfigurations().stream()
+ .filter(each -> each instanceof
SingleTableRuleConfiguration).map(each -> (SingleTableRuleConfiguration)
each).findAny();
+
ruleConfiguration.flatMap(SingleTableRuleConfiguration::getDefaultDataSource).ifPresent(op
-> data = Collections.singletonList(op).iterator());
}
@Override
public Collection<String> getColumnNames() {
- return Arrays.asList("table_name", "resource_name");
+ return Arrays.asList("name", "resource_name");
}
@Override
@@ -63,8 +55,7 @@ public final class SingleTableRuleQueryResultSet implements
DistSQLResultSet {
@Override
public Collection<Object> getRowData() {
- SingleTableDataNode next = data.next();
- return Arrays.asList(next.getTableName(), next.getDataSourceName());
+ return Arrays.asList("default", data.next());
}
@Override
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
index 8693e4c..efdaef5 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet
@@ -15,5 +15,6 @@
# limitations under the License.
#
-org.apache.shardingsphere.proxy.backend.text.distsql.rql.DataSourceQueryResultSet
-org.apache.shardingsphere.proxy.backend.text.distsql.rql.SingleTableRuleQueryResultSet
+org.apache.shardingsphere.proxy.backend.text.distsql.rql.resource.DataSourceQueryResultSet
+org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule.SingleTableQueryResultSet
+org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule.SingleTableRulesQueryResultSet
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetConverterTest.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetConverterTest.java
index 6d59c47..cbe6ae6 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetConverterTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetConverterTest.java
@@ -20,6 +20,7 @@ package
org.apache.shardingsphere.proxy.backend.text.distsql.rql;
import com.zaxxer.hikari.HikariDataSource;
import
org.apache.shardingsphere.infra.config.datasource.DataSourceConfiguration;
import org.apache.shardingsphere.infra.config.datasource.DataSourceParameter;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.resource.DataSourceQueryResultSetConverter;
import org.junit.Test;
import java.util.HashMap;
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetTest.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetTest.java
index c8c47c3..ca25486 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/DataSourceQueryResultSetTest.java
@@ -30,6 +30,7 @@ import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.resource.DataSourceQueryResultSet;
import org.apache.shardingsphere.test.mock.MockedDataSource;
import org.junit.Before;
import org.junit.Test;
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRuleQueryResultSetTest.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableQueryResultSetTest.java
similarity index 92%
rename from
shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRuleQueryResultSetTest.java
rename to
shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableQueryResultSetTest.java
index d3ea3a2..7c00df0 100644
---
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRuleQueryResultSetTest.java
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableQueryResultSetTest.java
@@ -17,11 +17,12 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rql;
-import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableRulesStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule.SingleTableQueryResultSet;
import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
import org.apache.shardingsphere.shadow.rule.ShadowRule;
import org.apache.shardingsphere.singletable.rule.SingleTableDataNode;
@@ -45,7 +46,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
-public final class SingleTableRuleQueryResultSetTest {
+public final class SingleTableQueryResultSetTest {
@Mock
private ShardingSphereMetaData shardingSphereMetaData;
@@ -64,8 +65,8 @@ public final class SingleTableRuleQueryResultSetTest {
@Test
public void assertGetRowData() {
- DistSQLResultSet resultSet = new SingleTableRuleQueryResultSet();
- resultSet.init(shardingSphereMetaData,
mock(ShowSingleTableRulesStatement.class));
+ DistSQLResultSet resultSet = new SingleTableQueryResultSet();
+ resultSet.init(shardingSphereMetaData,
mock(ShowSingleTableStatement.class));
Collection<Object> actual = resultSet.getRowData();
assertThat(actual.size(), is(2));
Iterator<Object> rowData = actual.iterator();
@@ -84,8 +85,8 @@ public final class SingleTableRuleQueryResultSetTest {
singleTableDataNodeMap.put("t_order_multiple", new
SingleTableDataNode("t_order_multiple", "ds_1_multiple"));
singleTableDataNodeMap.put("t_order_item_multiple", new
SingleTableDataNode("t_order_item_multiple", "ds_2_multiple"));
addShardingSphereRule(mockSingleTableRule(singleTableDataNodeMap));
- DistSQLResultSet resultSet = new SingleTableRuleQueryResultSet();
- resultSet.init(shardingSphereMetaData,
mock(ShowSingleTableRulesStatement.class));
+ DistSQLResultSet resultSet = new SingleTableQueryResultSet();
+ resultSet.init(shardingSphereMetaData,
mock(ShowSingleTableStatement.class));
Collection<Object> actual = resultSet.getRowData();
assertThat(actual.size(), is(2));
Iterator<Object> rowData = actual.iterator();
@@ -111,8 +112,8 @@ public final class SingleTableRuleQueryResultSetTest {
@Test
public void assertGetRowDataWithOtherRules() {
addShardingSphereRule(new
ShadowRule(mock(ShadowRuleConfiguration.class)));
- DistSQLResultSet resultSet = new SingleTableRuleQueryResultSet();
- resultSet.init(shardingSphereMetaData,
mock(ShowSingleTableRulesStatement.class));
+ DistSQLResultSet resultSet = new SingleTableQueryResultSet();
+ resultSet.init(shardingSphereMetaData,
mock(ShowSingleTableStatement.class));
Collection<Object> actual = resultSet.getRowData();
assertThat(actual.size(), is(2));
Iterator<Object> rowData = actual.iterator();
diff --git
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRulesQueryResultSetTest.java
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRulesQueryResultSetTest.java
new file mode 100644
index 0000000..e152f9a
--- /dev/null
+++
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rql/SingleTableRulesQueryResultSetTest.java
@@ -0,0 +1,64 @@
+/*
+ * 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.proxy.backend.text.distsql.rql;
+
+import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
+import org.apache.shardingsphere.infra.distsql.query.DistSQLResultSet;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import
org.apache.shardingsphere.proxy.backend.text.distsql.rql.rule.SingleTableRulesQueryResultSet;
+import
org.apache.shardingsphere.singletable.config.SingleTableRuleConfiguration;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+@RunWith(MockitoJUnitRunner.class)
+public final class SingleTableRulesQueryResultSetTest {
+
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private ShardingSphereMetaData shardingSphereMetaData;
+
+ @Before
+ public void before() {
+ SingleTableRuleConfiguration configuration = new
SingleTableRuleConfiguration();
+ configuration.setDefaultDataSource("ds_0");
+
when(shardingSphereMetaData.getRuleMetaData().getConfigurations()).thenReturn(Collections.singletonList(configuration));
+ }
+
+ @Test
+ public void assertGetRowData() {
+ DistSQLResultSet resultSet = new SingleTableRulesQueryResultSet();
+ resultSet.init(shardingSphereMetaData,
mock(ShowSingleTableStatement.class));
+ Collection<Object> actual = resultSet.getRowData();
+ assertThat(actual.size(), is(2));
+ Iterator<Object> rowData = actual.iterator();
+ assertThat(rowData.next(), is("default"));
+ assertThat(rowData.next(), is("ds_0"));
+ }
+}
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 b45b1e4..84ace43 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
@@ -22,6 +22,7 @@ import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.ShowDatabaseDiscoveryRulesStatement;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowRulesStatement;
import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableRulesStatement;
+import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
import
org.apache.shardingsphere.encrypt.distsql.parser.statement.ShowEncryptRulesStatement;
import
org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingRulesStatement;
import
org.apache.shardingsphere.shadow.distsql.parser.statement.ShowShadowAlgorithmsStatement;
@@ -41,6 +42,7 @@ import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowShardingBroadcastTableRulesStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowShardingTableRulesStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowSingleTableRulesStatementAssert;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule.ShowSingleTableStatementAssert;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowDataBaseDiscoveryRulesStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowEncryptRulesStatementTestCase;
@@ -52,6 +54,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.ShowShardingBroadcastTableRulesStatementTestCase;
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;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowSingleTableStatementTestCase;
/**
* Show rule statement assert.
@@ -85,6 +88,8 @@ public final class ShowRulesStatementAssert {
ShowShadowRulesStatementAssert.assertIs(assertContext,
(ShowShadowRulesStatement) actual, (ShowShadowRulesStatementTestCase) expected);
} else if (actual instanceof ShowShadowAlgorithmsStatement) {
ShowShadowAlgorithmsStatementAssert.assertIs(assertContext,
(ShowShadowAlgorithmsStatement) actual, (ShowShadowAlgorithmsStatementTestCase)
expected);
+ } else if (actual instanceof ShowSingleTableStatement) {
+ ShowSingleTableStatementAssert.assertIs(assertContext,
(ShowSingleTableStatement) actual, (ShowSingleTableStatementTestCase) expected);
} else if (actual instanceof ShowSingleTableRulesStatement) {
ShowSingleTableRulesStatementAssert.assertIs(assertContext,
(ShowSingleTableRulesStatement) actual, (ShowSingleTableRulesStatementTestCase)
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/ShowSingleTableStatementAssert.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowSingleTableStatementAssert.java
new file mode 100644
index 0000000..01be9dd
--- /dev/null
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rql/impl/rule/ShowSingleTableStatementAssert.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rql.impl.rule;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import
org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowSingleTableStatement;
+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.ShowSingleTableStatementTestCase;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Show single table statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ShowSingleTableStatementAssert {
+
+ /**
+ * Assert show single table statement is correct with expected parser
result.
+ *
+ * @param assertContext assert context
+ * @param actual actual show single table statement
+ * @param expected expected show single table statement test case
+ */
+ public static void assertIs(final SQLCaseAssertContext assertContext,
final ShowSingleTableStatement actual, final ShowSingleTableStatementTestCase
expected) {
+ if (null != expected.getSchema()) {
+ assertTrue(assertContext.getText("Actual schema should exist."),
actual.getSchema().isPresent());
+ SchemaAssert.assertIs(assertContext, actual.getSchema().get(),
expected.getSchema());
+ } else {
+ assertFalse(assertContext.getText("Actual schema should not
exist."), actual.getSchema().isPresent());
+ }
+ }
+}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
index 58163af..d7b5a65 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
@@ -186,6 +186,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.ShowShardingBroadcastTableRulesStatementTestCase;
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;
+import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rql.ShowSingleTableStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dml.CallStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dml.DeleteStatementTestCase;
import
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.dml.InsertStatementTestCase;
@@ -700,6 +701,9 @@ public final class SQLParserTestCases {
@XmlElement(name = "uninstall-plugin")
private final List<UninstallPluginStatementTestCase>
uninstallPluginStatementTestCases = new LinkedList<>();
+ @XmlElement(name = "show-single-table")
+ private final List<ShowSingleTableStatementTestCase>
showSingleTableStatementTestCases = new LinkedList<>();
+
@XmlElement(name = "show-single-table-rules")
private final List<ShowSingleTableRulesStatementTestCase>
showSingleTableRulesStatementTestCases = new LinkedList<>();
@@ -926,6 +930,7 @@ public final class SQLParserTestCases {
putAll(createResourceGroupStatementTestCases, result);
putAll(binlogStatementTestCases, result);
putAll(uninstallPluginStatementTestCases, result);
+ putAll(showSingleTableStatementTestCases, result);
putAll(showSingleTableRulesStatementTestCases, result);
putAll(setResourceGroupStatementTestCases, result);
putAll(optimizeTableStatementTestCases, result);
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableRulesStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableRulesStatementTestCase.java
index 0445d98..3db6fd4 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableRulesStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableRulesStatementTestCase.java
@@ -22,7 +22,6 @@ 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;
-import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
/**
@@ -32,9 +31,6 @@ import javax.xml.bind.annotation.XmlElement;
@Setter
public final class ShowSingleTableRulesStatementTestCase extends
SQLParserTestCase {
- @XmlAttribute
- private String name;
-
@XmlElement
private ExpectedSchema schema;
}
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableRulesStatementTestCase.java
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableStatementTestCase.java
similarity index 91%
copy from
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableRulesStatementTestCase.java
copy to
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableStatementTestCase.java
index 0445d98..b219903 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableRulesStatementTestCase.java
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rql/ShowSingleTableStatementTestCase.java
@@ -26,11 +26,11 @@ import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
/**
- * Show single table rules statement test case.
+ * Show single table statement test case.
*/
@Getter
@Setter
-public final class ShowSingleTableRulesStatementTestCase extends
SQLParserTestCase {
+public final class ShowSingleTableStatementTestCase extends SQLParserTestCase {
@XmlAttribute
private String name;
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 271b0d2..592d754 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
@@ -70,8 +70,12 @@
<schema name="shadow_db" start-index="28" stop-index="36"/>
</show-shadow-algorithms>
+ <show-single-table sql-case-id="show-single-table">
+ <name name="t_order" start-index="19" stop-index="25"/>
+ <schema name="single_table_db" start-index="31" stop-index="45"/>
+ </show-single-table>
+
<show-single-table-rules sql-case-id="show-single-table-rules">
- <name name="t_order" start-index="23" stop-index="29"/>
- <schema name="single_table_db" start-index="36" stop-index="50"/>
+ <schema name="single_table_db" start-index="29" stop-index="43"/>
</show-single-table-rules>
</sql-parser-test-cases>
diff --git
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rdl/drop.xml
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rdl/drop.xml
index aa57516..34cfbe9 100644
---
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rdl/drop.xml
+++
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/rdl/drop.xml
@@ -29,5 +29,5 @@
<distsql-case id="drop-encrypt-rule" value="DROP ENCRYPT RULE
t_encrypt,t_encrypt_order" />
<distsql-case id="drop-shadow-rule" value="DROP SHADOW RULE
shadow_rule_1,shadow_rule_2" />
<distsql-case id="drop-shadow-algorithm" value="DROP SHADOW algorithm
shadow_algorithm_1,shadow_algorithm_2" />
- <distsql-case id="drop-default-single-table" value="DROP DEFAULT SINGLE
TABLE RULE RESOURCE" />
+ <distsql-case id="drop-default-single-table" value="DROP DEFAULT SINGLE
TABLE RULE" />
</sql-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 38a9263..7c4fc8f 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
@@ -30,5 +30,6 @@
<distsql-case id="show-shadow-rules" value="SHOW SHADOW RULE shadow_rule
FROM shadow_db" />
<distsql-case id="show-shadow-table-rules" value="SHOW SHADOW TABLE RULES
FROM shadow_db" />
<distsql-case id="show-shadow-algorithms" value="SHOW SHADOW ALGORITHMS
FROM shadow_db" />
- <distsql-case id="show-single-table-rules" value="SHOW SINGLE TABLE RULE
t_order FROM single_table_db" />
+ <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" />
</sql-cases>