This is an automated email from the ASF dual-hosted git repository.
sunnianjun 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 da496acca5c Update docs for storage unit RDL (#33203)
da496acca5c is described below
commit da496acca5cba9edfb70ffa007765b02ee06d93e
Author: Raigor <[email protected]>
AuthorDate: Thu Oct 10 16:59:11 2024 +0800
Update docs for storage unit RDL (#33203)
* Update docs for storage unit RDL
* Update RELEASE-NOTES
---
RELEASE-NOTES.md | 1 +
.../alter-storage-unit.cn.md | 28 ++++++++++--
.../alter-storage-unit.en.md | 53 +++++++++++++++-------
.../register-storage-unit.cn.md | 28 ++++++++++--
.../register-storage-unit.en.md | 31 +++++++++++--
.../unregister-storage-unit.cn.md | 16 ++-----
.../unregister-storage-unit.en.md | 28 ++++++------
7 files changed, 131 insertions(+), 54 deletions(-)
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index 0d570ccdebf..0d801677fe2 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -13,6 +13,7 @@
1. DistSQL: Support running DistSQL under Proxy Native in the form of GraalVM
Native Image - [#33095](https://github.com/apache/shardingsphere/pull/33095)
1. DistSQL: Support connecting to Postgres via DistSQL in Proxy Native -
[#33124](https://github.com/apache/shardingsphere/pull/33124)
1. DistSQL: Check duplicate actual data nodes when creating or altering
sharding table rule -
[#33138](https://github.com/apache/shardingsphere/pull/33138)
+1. DistSQL: Check user privilege when registering or altering storage unit -
[#32172](https://github.com/apache/shardingsphere/pull/32172)
### Bug Fix
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/alter-storage-unit.cn.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/alter-storage-unit.cn.md
index efd493917c4..68a1ddcc01d 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/alter-storage-unit.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/alter-storage-unit.cn.md
@@ -13,7 +13,10 @@ weight = 2
{{% tab name="语法" %}}
```sql
AlterStorageUnit ::=
- 'ALTER' 'STORAGE' 'UNIT' storageUnitDefinition (',' storageUnitDefinition)*
+ 'ALTER' 'STORAGE' 'UNIT' storageUnitsDefinition (',' checkPrivileges)?
+
+storageUnitsDefinition ::=
+ storageUnitDefinition (',' storageUnitDefinition)*
storageUnitDefinition ::=
storageUnitName '(' ('HOST' '=' hostName ',' 'PORT' '=' port ',' 'DB' '='
dbName | 'URL' '=' url) ',' 'USER' '=' user (',' 'PASSWORD' '=' password)? (','
propertiesDefinition)?')'
@@ -47,6 +50,12 @@ key ::=
value ::=
literal
+
+checkPrivileges ::=
+ 'CHECK_PRIVILEGES' '=' privilegeType (',' privilegeType)*
+
+privilegeType ::=
+ identifier
```
{{% /tab %}}
{{% tab name="铁路图" %}}
@@ -60,7 +69,8 @@ value ::=
- `ALTER STORAGE UNIT`不允许改变该存储单元关联的真实数据源(通过 host、port 和 db 判断);
- `ALTER STORAGE UNIT`会发生连接池的切换,这个操作可能对进行中的业务造成影响,请谨慎使用;
- 请确认修改的存储单元是可以正常连接的, 否则将不能修改成功;
-- `PROPERTIES` 为可选参数,用于自定义连接池属性,`key` 必须和连接池参数名一致。
+- `PROPERTIES` 为可选参数,用于自定义连接池属性,`key` 必须和连接池参数名一致;
+- 可通过 `CHECK_PRIVILEGES` 指定注册时校验存储单元用户的权限,`privilegeType` 支持的类型有
`SELECT`、`XA`、`PIPELINE`、`NONE`,缺省值为 `SELECT`,当类型列表中包含 `NONE` 时,跳过权限校验。
### 示例
@@ -100,9 +110,21 @@ ALTER STORAGE UNIT ds_2 (
);
```
+- 修改存储单元时检查 `SELECT`、`XA` 和 `PIPELINE` 权限
+
+```sql
+ALTER STORAGE UNIT ds_2 (
+
URL="jdbc:mysql://127.0.0.1:3306/db_2?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true",
+ USER=root,
+ PASSWORD=root,
+ PROPERTIES("maximumPoolSize"=10,"idleTimeout"="30000"),
+ CHECK_PRIVILEGES=SELECT,XA,PIPELINE
+);
+```
+
### 保留字
-`ALTER`、`STORAGE`、`UNIT`、`HOST`、`PORT`、`DB`、`USER`、`PASSWORD`、`PROPERTIES`、`URL`
+`ALTER`、`STORAGE`、`UNIT`、`HOST`、`PORT`、`DB`、`USER`、`PASSWORD`、`PROPERTIES`、`URL`、`CHECK_PRIVILEGES`
### 相关链接
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/alter-storage-unit.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/alter-storage-unit.en.md
index 6c7aee224e4..e05cc4aefeb 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/alter-storage-unit.en.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/alter-storage-unit.en.md
@@ -13,7 +13,10 @@ The `ALTER STORAGE UNIT` syntax is used to alter storage
units for the currently
{{% tab name="Grammar" %}}
```sql
AlterStorageUnit ::=
- 'ALTER' 'STORAGE' 'UNIT' storageUnitDefinition (',' storageUnitDefinition)*
+ 'ALTER' 'STORAGE' 'UNIT' storageUnitsDefinition (',' checkPrivileges)?
+
+storageUnitsDefinition ::=
+ storageUnitDefinition (',' storageUnitDefinition)*
storageUnitDefinition ::=
storageUnitName '(' ('HOST' '=' hostName ',' 'PORT' '=' port ',' 'DB' '='
dbName | 'URL' '=' url) ',' 'USER' '=' user (',' 'PASSWORD' '=' password)? (','
propertiesDefinition)?')'
@@ -47,6 +50,12 @@ key ::=
value ::=
literal
+
+checkPrivileges ::=
+ 'CHECK_PRIVILEGES' '=' privilegeType (',' privilegeType)*
+
+privilegeType ::=
+ identifier
```
{{% /tab %}}
{{% tab name="Railroad diagram" %}}
@@ -56,14 +65,12 @@ value ::=
### Supplement
-- Before altering the storage units, please confirm that a database exists in
Proxy, and execute the `use` command to
- select a database;
+- Before altering the storage units, please confirm that a database exists in
Proxy, and execute the `use` command to select a database;
- `ALTER STORAGE UNIT` is not allowed to change the real data source
associated with this storageUnit (determined by host, port and db);
-- `ALTER STORAGE UNIT` will switch the connection pool. This operation may
affect the ongoing business, please use it with
- caution;
+- `ALTER STORAGE UNIT` will switch the connection pool. This operation may
affect the ongoing business, please use it with caution;
- Please confirm that the storage unit to be altered can be connected
successfully, otherwise the altering will fail;
-- `PROPERTIES` is optional, used to customize connection pool properties,
`key` must be the same as the connection pool
- property name.
+- `PROPERTIES` is optional, used to customize connection pool properties,
`key` must be the same as the connection pool property name;
+- `CHECK_PRIVILEGES` can be specified to check privileges of the storage unit
user. The supported types of `privilegeType` are `SELECT`, `XA`, `PIPELINE`,
and `NONE`. The default value is `SELECT`. When `NONE` is included in the type
list, the privilege check is skipped.
### Example
@@ -71,11 +78,11 @@ value ::=
```sql
ALTER STORAGE UNIT ds_0 (
- HOST=127.0.0.1,
+ HOST="127.0.0.1",
PORT=3306,
- DB=db_0,
- USER=root,
- PASSWORD=root
+ DB="db_0",
+ USER="root",
+ PASSWORD="root"
);
```
@@ -83,29 +90,41 @@ ALTER STORAGE UNIT ds_0 (
```sql
ALTER STORAGE UNIT ds_1 (
- HOST=127.0.0.1,
+ HOST="127.0.0.1",
PORT=3306,
- DB=db_1,
- USER=root,
- PASSWORD=root
+ DB="db_1",
+ USER="root",
+ PASSWORD="root",
PROPERTIES("maximumPoolSize"=10)
);
```
- Alter storage unit and set connection pool properties using URL method
+```sql
+ALTER STORAGE UNIT ds_2 (
+
URL="jdbc:mysql://127.0.0.1:3306/db_2?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true",
+ USER="root",
+ PASSWORD="root",
+ PROPERTIES("maximumPoolSize"=10,"idleTimeout"="30000")
+);
+```
+
+- Check `SELECT`, `XA` and `PIPELINE` privileges when altering
+
```sql
ALTER STORAGE UNIT ds_2 (
URL="jdbc:mysql://127.0.0.1:3306/db_2?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true",
USER=root,
PASSWORD=root,
- PROPERTIES("maximumPoolSize"=10,"idleTimeout"="30000")
+ PROPERTIES("maximumPoolSize"=10,"idleTimeout"="30000"),
+ CHECK_PRIVILEGES=SELECT,XA,PIPELINE
);
```
### Reserved word
-`ALTER`, `STORAGE`, `UNIT`, `HOST`, `PORT`, `DB`, `USER`, `PASSWORD`,
`PROPERTIES`, `URL`
+`ALTER`, `STORAGE`, `UNIT`, `HOST`, `PORT`, `DB`, `USER`, `PASSWORD`,
`PROPERTIES`, `URL`, `CHECK_PRIVILEGES`
### Related links
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/register-storage-unit.cn.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/register-storage-unit.cn.md
index 85723ee7ef7..9b66100eac6 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/register-storage-unit.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/register-storage-unit.cn.md
@@ -13,7 +13,10 @@ weight = 1
{{% tab name="语法" %}}
```sql
RegisterStorageUnit ::=
- 'REGISTER' 'STORAGE' 'UNIT' ifNotExists? storageUnitDefinition (','
storageUnitDefinition)*
+ 'REGISTER' 'STORAGE' 'UNIT' ifNotExists? storageUnitsDefinition (','
checkPrivileges)?
+
+storageUnitsDefinition ::=
+ storageUnitDefinition (',' storageUnitDefinition)*
storageUnitDefinition ::=
storageUnitName '(' ('HOST' '=' hostName ',' 'PORT' '=' port ',' 'DB' '='
dbName | 'URL' '=' url) ',' 'USER' '=' user (',' 'PASSWORD' '=' password)? (','
propertiesDefinition)?')'
@@ -50,6 +53,12 @@ key ::=
value ::=
literal
+
+checkPrivileges ::=
+ 'CHECK_PRIVILEGES' '=' privilegeType (',' privilegeType)*
+
+privilegeType ::=
+ identifier
```
{{% /tab %}}
{{% tab name="铁路图" %}}
@@ -64,7 +73,8 @@ value ::=
- `storageUnitName` 区分大小写;
- `storageUnitName` 在当前逻辑库中需要唯一;
- `storageUnitName` 命名只允许使用字母、数字以及 `_` ,且必须以字母开头;
-- `PROPERTIES` 为可选参数,用于自定义连接池属性,`key` 必须和连接池参数名一致。
+- `PROPERTIES` 为可选参数,用于自定义连接池属性,`key` 必须和连接池参数名一致;
+- 可通过 `CHECK_PRIVILEGES` 指定注册时校验存储单元用户的权限,`privilegeType` 支持的类型有
`SELECT`、`XA`、`PIPELINE`、`NONE`,缺省值为 `SELECT`,当类型列表中包含 `NONE` 时,跳过权限校验。
### 示例
@@ -116,9 +126,21 @@ REGISTER STORAGE UNIT IF NOT EXISTS ds_0 (
);
```
+- 注册时校验 `SELECT`、`XA` 和 `PIPELINE` 权限
+
+```sql
+REGISTER STORAGE UNIT ds_3 (
+
URL="jdbc:mysql://127.0.0.1:3306/db_3?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true",
+ USER="root",
+ PASSWORD="root",
+ PROPERTIES("maximumPoolSize"=10,"idleTimeout"="30000"),
+ CHECK_PRIVILEGES=SELECT,XA,PIPELINE
+);
+```
+
### 保留字
-`REGISTER`、`STORAGE`、`UNIT`、`HOST`、`PORT`、`DB`、`USER`、`PASSWORD`、`PROPERTIES`、`URL`
+`REGISTER`、`STORAGE`、`UNIT`、`HOST`、`PORT`、`DB`、`USER`、`PASSWORD`、`PROPERTIES`、`URL`、`CHECK_PRIVILEGES`
### 相关链接
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/register-storage-unit.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/register-storage-unit.en.md
index 369ac975566..44992f1e4cd 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/register-storage-unit.en.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/register-storage-unit.en.md
@@ -13,7 +13,10 @@ The `REGISTER STORAGE UNIT` syntax is used to register
storage unit for the curr
{{% tab name="Grammar" %}}
```sql
RegisterStorageUnit ::=
- 'REGISTER' 'STORAGE' 'UNIT' ifNotExists? storageUnitDefinition (','
storageUnitDefinition)*
+ 'REGISTER' 'STORAGE' 'UNIT' ifNotExists? storageUnitsDefinition (','
checkPrivileges)?
+
+storageUnitsDefinition ::=
+ storageUnitDefinition (',' storageUnitDefinition)*
storageUnitDefinition ::=
storageUnitName '(' ('HOST' '=' hostName ',' 'PORT' '=' port ',' 'DB' '='
dbName | 'URL' '=' url) ',' 'USER' '=' user (',' 'PASSWORD' '=' password)? (','
propertiesDefinition)?')'
@@ -50,6 +53,12 @@ key ::=
value ::=
literal
+
+checkPrivileges ::=
+ 'CHECK_PRIVILEGES' '=' privilegeType (',' privilegeType)*
+
+privilegeType ::=
+ identifier
```
{{% /tab %}}
{{% tab name="Railroad diagram" %}}
@@ -59,14 +68,14 @@ value ::=
### Supplement
-- Before register storage units, please confirm that a database has been
created in Proxy, and execute the `use` command to
- successfully select a database;
+- Before register storage units, please confirm that a database has been
created in Proxy, and execute the `use` command to successfully select a
database;
- Confirm that the registered storage unit can be connected normally,
otherwise it will not be added successfully;
- `storageUnitName` is case-sensitive;
- `storageUnitName` needs to be unique within the current database;
- `storageUnitName` name only allows letters, numbers and `_`, and must start
with a letter;
- `PROPERTIES` is optional, used to customize connection pool properties,
`key` must be the same as the connection pool
- property name.
+ property name;
+- `CHECK_PRIVILEGES` can be specified to check privileges of the storage unit
user. The supported types of `privilegeType` are `SELECT`, `XA`, `PIPELINE`,
and `NONE`. The default value is `SELECT`. When `NONE` is included in the type
list, the privilege check is skipped.
### Example
@@ -118,9 +127,21 @@ REGISTER STORAGE UNIT IF NOT EXISTS ds_0 (
);
```
+- Check `SELECT`, `XA` and `PIPELINE` privileges when registering
+
+```sql
+REGISTER STORAGE UNIT ds_3 (
+
URL="jdbc:mysql://127.0.0.1:3306/db_3?serverTimezone=UTC&useSSL=false&allowPublicKeyRetrieval=true",
+ USER="root",
+ PASSWORD="root",
+ PROPERTIES("maximumPoolSize"=10,"idleTimeout"="30000"),
+ CHECK_PRIVILEGES=SELECT,XA,PIPELINE
+);
+```
+
### Reserved word
-`REGISTER`, `STORAGE`, `UNIT`, `HOST`, `PORT`, `DB`, `USER`, `PASSWORD`,
`PROPERTIES`, `URL`
+`REGISTER`, `STORAGE`, `UNIT`, `HOST`, `PORT`, `DB`, `USER`, `PASSWORD`,
`PROPERTIES`, `URL`, `CHECK_PRIVILEGES`
### Related links
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/unregister-storage-unit.cn.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/unregister-storage-unit.cn.md
index cdef6a5b472..d6b556ac095 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/unregister-storage-unit.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/unregister-storage-unit.cn.md
@@ -13,22 +13,16 @@ weight = 3
{{% tab name="语法" %}}
```sql
UnregisterStorageUnit ::=
- 'UNREGISTER' 'STORAGE' 'UNIT' ifExists? storageUnitName (','
storageUnitName)* (ignoreSingleTables | ignoreBroadcastTables |
ignoreSingleAndBroadcastTables)?
-
-ignoreSingleTables ::=
- 'IGNORE' 'SINGLE' 'TABLES'
-
-ignoreBroadcastTables ::=
- 'IGNORE' 'BROADCAST' 'TABLES'
-
-ignoreSingleAndBroadcastTables ::=
- 'IGNORE' ('SINGLE' ',' 'BROADCAST' | 'BROADCAST' ',' 'SINGLE') 'TABLES'
+ 'UNREGISTER' 'STORAGE' 'UNIT' ifExists? storageUnitName (','
storageUnitName)* ignoreTables?
ifExists ::=
'IF' 'EXISTS'
storageUnitName ::=
identifier
+
+ignoreTables ::=
+ 'IGNORE' ('SINGLE')? (',')? ('BROADCAST')? 'TABLES'
```
{{% /tab %}}
{{% tab name="铁路图" %}}
@@ -83,7 +77,7 @@ UNREGISTER STORAGE UNIT IF EXISTS ds_0;
### 保留字
-`DROP`、`STORAGE`、`UNIT`、`IF`、`EXISTS`、`IGNORE`、`SINGLE`、`BROADCAST`、`TABLES`
+`UNREGISTER`、`STORAGE`、`UNIT`、`IF`、`EXISTS`、`IGNORE`、`SINGLE`、`BROADCAST`、`TABLES`
### 相关链接
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/unregister-storage-unit.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/unregister-storage-unit.en.md
index 88805066ca8..bf2d12112e9 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/unregister-storage-unit.en.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rdl/storage-unit-definition/unregister-storage-unit.en.md
@@ -13,22 +13,16 @@ The `UNREGISTER STORAGE UNIT` syntax is used to unregister
storage unit from the
{{% tab name="Grammar" %}}
```sql
UnregisterStorageUnit ::=
- 'UNREGISTER' 'STORAGE' 'UNIT' ifExists? storageUnitName (','
storageUnitName)* (ignoreSingleTables | ignoreBroadcastTables |
ignoreSingleAndBroadcastTables)?
-
-ignoreSingleTables ::=
- 'IGNORE' 'SINGLE' 'TABLES'
-
-ignoreBroadcastTables ::=
- 'IGNORE' 'BROADCAST' 'TABLES'
-
-ignoreSingleAndBroadcastTables ::=
- 'IGNORE' ('SINGLE' ',' 'BROADCAST' | 'BROADCAST' ',' 'SINGLE') 'TABLES'
+ 'UNREGISTER' 'STORAGE' 'UNIT' ifExists? storageUnitName (','
storageUnitName)* ignoreTables?
ifExists ::=
'IF' 'EXISTS'
storageUnitName ::=
identifier
+
+ignoreTables ::=
+ 'IGNORE' ('SINGLE')? (',')? ('BROADCAST')? 'TABLES'
```
{{% /tab %}}
{{% tab name="Railroad diagram" %}}
@@ -48,33 +42,37 @@ storageUnitName ::=
### Example
-- Drop a storage unit
+- Unregister a storage unit
```sql
UNREGISTER STORAGE UNIT ds_0;
```
-- Drop multiple storage units
+- Unregister multiple storage units
```sql
UNREGISTER STORAGE UNIT ds_0, ds_1;
```
-- Ignore single rule remove storage unit
+- Unregister storage unit and ignore single tables
```sql
UNREGISTER STORAGE UNIT ds_0 IGNORE SINGLE TABLES;
```
+- Unregister storage unit and ignore broadcast tables
+
```sql
UNREGISTER STORAGE UNIT ds_0 IGNORE BROADCAST TABLES;
```
+- Unregister storage unit, ignore single and broadcast tables
+
```sql
UNREGISTER STORAGE UNIT ds_0 IGNORE SINGLE, BROADCAST TABLES;
```
-- Drop the storage unit with `ifExists` clause
+- Unregister storage unit with `ifExists` clause
```sql
UNREGISTER STORAGE UNIT IF EXISTS ds_0;
@@ -82,7 +80,7 @@ UNREGISTER STORAGE UNIT IF EXISTS ds_0;
### Reserved word
-`DROP`, `STORAGE`, `UNIT`, `IF`, `EXISTS`, `IGNORE`, `SINGLE`, `BROADCAST`,
`TABLES`
+`UNREGISTER`, `STORAGE`, `UNIT`, `IF`, `EXISTS`, `IGNORE`, `SINGLE`,
`BROADCAST`, `TABLES`
### Related links