You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2022/06/11 02:23:57 UTC

[shardingsphere] branch master updated: Refactor ParseDistSQLHandler (#18296)

This is an automated email from the ASF dual-hosted git repository.

menghaoran pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 750cfde85dc Refactor ParseDistSQLHandler (#18296)
750cfde85dc is described below

commit 750cfde85dc8eaf8f53b54b0039a0a9f6b2d1c53
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat Jun 11 10:23:50 2022 +0800

    Refactor ParseDistSQLHandler (#18296)
---
 .../distsql/syntax/ral/_index.cn.md                | 74 +++++++++++-----------
 .../distsql/syntax/ral/_index.en.md                | 62 +++++++++---------
 .../syntax/rql/rule-query/db-discovery.cn.md       | 10 +--
 .../syntax/rql/rule-query/db-discovery.en.md       |  2 +-
 .../distsql/syntax/rql/rule-query/encrypt.cn.md    |  4 +-
 .../distsql/syntax/rql/rule-query/encrypt.en.md    | 28 ++++----
 .../distsql/syntax/rql/rule-query/shadow.cn.md     | 26 ++++----
 .../distsql/syntax/rql/rule-query/shadow.en.md     |  8 +--
 .../distsql/ral/advanced/ParseDistSQLHandler.java  |  9 ++-
 9 files changed, 113 insertions(+), 110 deletions(-)

diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/_index.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/_index.cn.md
index 39f229d8ea6..e2aea4f95c8 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/_index.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/_index.cn.md
@@ -15,35 +15,35 @@ RAL (Resource & Rule Administration Language) 为 Apache ShardingSphere 的管
 | SET SHARDING HINT DATABASE_VALUE = yy                | 针对当前连接,设置 hint 仅对数据库分片有效,并添加分片值,yy:数据库分片值 | SET SHARDING HINT DATABASE_VALUE = 100         |
 | ADD SHARDING HINT DATABASE_VALUE xx = yy             | 针对当前连接,为表 xx 添加分片值 yy,xx:逻辑表名称,yy:数据库分片值     | ADD SHARDING HINT DATABASE_VALUE t_order= 100 |
 | ADD SHARDING HINT TABLE_VALUE xx = yy                | 针对当前连接,为表 xx 添加分片值 yy,xx:逻辑表名称,yy:表分片值        | ADD SHARDING HINT TABLE_VALUE t_order = 100   |
-| CLEAR HINT SETTINGS                                          | 针对当前连接,清除 hint 所有设置                                    | CLEAR HINT                                   |
+| CLEAR HINT SETTINGS                                  | 针对当前连接,清除 hint 所有设置                                    | CLEAR HINT                                    |
 | CLEAR [SHARDING HINT / READWRITE_SPLITTING HINT]     | 针对当前连接,清除 sharding 或 readwrite_splitting 的 hint 设置     | CLEAR READWRITE_SPLITTING HINT                |
 | SHOW [SHARDING / READWRITE_SPLITTING] HINT STATUS    | 针对当前连接,查询 sharding 或 readwrite_splitting 的 hint 设置     | SHOW READWRITE_SPLITTING HINT STATUS          |
 
 ## 弹性伸缩
 
-| 语句                                                 | 说明                                                           | 示例                                            |
-|:--------------------------------------------------- |:------------------------------------------------------------- |:----------------------------------------------- |
-| SHOW SCALING LIST                                   | 查询运行列表                                                    | SHOW SCALING LIST                               |
-| SHOW SCALING STATUS jobId                            | 查询任务状态,xx:任务 id                                         | SHOW SCALING STATUS 1234                        |
-| START SCALING jobId                                    | 开始运行任务,xx:任务 id                                         | START SCALING 1234                              |
-| STOP SCALING jobId                                     | 停止运行任务,xx:任务 id                                         | STOP SCALING 12345                              |
-| DROP SCALING jobId                                     | 移除任务,xx:任务 id                                            | DROP SCALING 1234                               |
-| RESET SCALING jobId                                    | 重置任务进度,xx:任务 id                                         | RESET SCALING 1234                              |
-| CHECK SCALING jobId                                    | 数据一致性校验,使用 `server.yaml` 里的校验算法,xx:任务 id         | CHECK SCALING 1234                              |
-| SHOW SCALING CHECK ALGORITHMS                       | 展示可用的一致性校验算法                                          | SHOW SCALING CHECK ALGORITHMS                   |
-| CHECK SCALING {jobId} by type(name={algorithmType}) | 数据一致性校验,使用指定的校验算法                                  | CHECK SCALING 1234 by type(name=DEFAULT)        |
-| STOP SCALING SOURCE WRITING jobId                      | 旧的 ShardingSphere 数据源停写,xx:任务 id                        | STOP SCALING SOURCE WRITING 1234                |
-| RESTORE SCALING SOURCE WRITING jobId                   | 旧的 ShardingSphere 数据源恢复写,xx:任务 id                      | RESTORE SCALING SOURCE WRITING 1234             |
-| APPLY SCALING jobId                                    | 切换至新的 ShardingSphere 元数据,xx:任务 id                      | APPLY SCALING 1234                              |
+| 语句                                                 | 说明                                                   | 示例                                     |
+|:--------------------------------------------------- |:----------------------------------------------------- |:--------------------------------------- |
+| SHOW SCALING LIST                                   | 查询运行列表                                            | SHOW SCALING LIST                        |
+| SHOW SCALING STATUS jobId                           | 查询任务状态,xx:任务 id                                | SHOW SCALING STATUS 1234                 |
+| START SCALING jobId                                 | 开始运行任务,xx:任务 id                                | START SCALING 1234                       |
+| STOP SCALING jobId                                  | 停止运行任务,xx:任务 id                                | STOP SCALING 12345                       |
+| DROP SCALING jobId                                  | 移除任务,xx:任务 id                                   | DROP SCALING 1234                        |
+| RESET SCALING jobId                                 | 重置任务进度,xx:任务 id                                | RESET SCALING 1234                       |
+| CHECK SCALING jobId                                 | 数据一致性校验,使用 `server.yaml` 里的校验算法,xx:任务 id | CHECK SCALING 1234                       |
+| SHOW SCALING CHECK ALGORITHMS                       | 展示可用的一致性校验算法                                  | SHOW SCALING CHECK ALGORITHMS            |
+| CHECK SCALING {jobId} by type(name={algorithmType}) | 数据一致性校验,使用指定的校验算法                          | CHECK SCALING 1234 by type(name=DEFAULT) |
+| STOP SCALING SOURCE WRITING jobId                   | 旧的 ShardingSphere 数据源停写,xx:任务 id               | STOP SCALING SOURCE WRITING 1234         |
+| RESTORE SCALING SOURCE WRITING jobId                | 旧的 ShardingSphere 数据源恢复写,xx:任务 id             | RESTORE SCALING SOURCE WRITING 1234      |
+| APPLY SCALING jobId                                 | 切换至新的 ShardingSphere 元数据,xx:任务 id             | APPLY SCALING 1234                       |
 
 ## 熔断
 
-| 语句                                                                              | 说明                                                | 示例                                         |
-|:--------------------------------------------------------------------------------|:-------------------------------------------------- |:-------------------------------------------|
-| [ENABLE / DISABLE] READWRITE_SPLITTING (READ)? resourceName [FROM databaseName] | 启用 / 禁用读库                                      | ENABLE READWRITE_SPLITTING READ resource_0 |
-| [ENABLE / DISABLE] INSTANCE instanceId                                          | 启用 / 禁用 proxy 实例                               | DISABLE INSTANCE instance_1                |
-| SHOW INSTANCE LIST                                                              | 查询 proxy 实例信息                                  | SHOW INSTANCE LIST                         |
-| SHOW READWRITE_SPLITTING (READ)? resourceName [FROM databaseName]               | 查询所有读库的状态                                    | SHOW READWRITE_SPLITTING READ RESOURCES    |
+| 语句                                                                             | 说明                  | 示例                                       |
+|:------------------------------------------------------------------------------- |:-------------------- |:------------------------------------------ |
+| [ENABLE / DISABLE] READWRITE_SPLITTING (READ)? resourceName [FROM databaseName] | 启用 / 禁用读库        | ENABLE READWRITE_SPLITTING READ resource_0 |
+| [ENABLE / DISABLE] INSTANCE instanceId                                          | 启用 / 禁用 proxy 实例 | DISABLE INSTANCE instance_1                |
+| SHOW INSTANCE LIST                                                              | 查询 proxy 实例信息    | SHOW INSTANCE LIST                         |
+| SHOW READWRITE_SPLITTING (READ)? resourceName [FROM databaseName]               | 查询所有读库的状态      | SHOW READWRITE_SPLITTING READ RESOURCES    |
 
 ## 全局规则
 
@@ -57,22 +57,22 @@ RAL (Resource & Rule Administration Language) 为 Apache ShardingSphere 的管
 
 ## 其他
 
-| 语句                                                                         | 说明                                                         | 示例                                            |
-|:--------------------------------------------------------------------------- |:----------------------------------------------------------- |:----------------------------------------------- |
-| SHOW INSTANCE MODE                                                          | 查询当前 proxy 的 mode 配置                                    | SHOW INSTANCE MODE                                |
-| COUNT DATABASE RULES [FROM database]                                          | 查询 database 中的规则数量                                     | COUNT DATABASE RULES                               |
-| SET VARIABLE proxy_property_name = xx                                       | proxy_property_name 为 proxy 的[属性配置](/cn/user-manual/shardingsphere-proxy/yaml-config/props/) ,需使用下划线命名 | SET VARIABLE sql_show = true            |
-| SET VARIABLE transaction_type = xx                                          | 修改当前连接的事务类型, 支持 LOCAL,XA,BASE                     | SET VARIABLE transaction_type = XA               |
-| SET VARIABLE agent_plugins_enabled = [TRUE / FALSE]                         | 设置 agent 插件的启用状态,默认值 false                         | SET VARIABLE agent_plugins_enabled = TRUE        |
-| SHOW ALL VARIABLES                                                          | 查询 proxy 所有的属性配置                                      | SHOW ALL VARIABLES                               |
-| SHOW VARIABLE variable_name                                                 | 查询 proxy 属性,需使用下划线命名                                | SHOW VARIABLE sql_show                           |
-| PREVIEW SQL                                                                 | 预览实际 SQL                                                  | PREVIEW SELECT * FROM t_order                    |
-| PARSE SQL                                                                   | 解析 SQL 并输出抽象语法树                                        PARSE SELECT * FROM t_order                      |
-| REFRESH TABLE METADATA                                                      | 刷新所有表的元数据                                              | REFRESH TABLE METADATA                          |
-| REFRESH TABLE METADATA [tableName / tableName FROM RESOURCE resourceName]   | 刷新指定表的元数据                                              | REFRESH TABLE METADATA t_order FROM RESOURCE ds_1 |
-| SHOW TABLE METADATA tableName [, tableName] ...                             | 查询表的元数据                                                 | SHOW TABLE METADATA t_order                       |
-| EXPORT DATABASE CONFIG [FROM database_name] [, file="file_path"]            | 查询 / 导出 database 中的资源和规则配置                          | EXPORT DATABASE CONFIG FROM readwrite_splitting_db |
-| SHOW RULES USED RESOURCE resourceName [from database]                       | 查询 database 中使用指定资源的规则                                 | SHOW RULES USED RESOURCE ds_0 FROM databaseName     |
+| 语句                                                                       | 说明                                                                                                            | 示例                                               |
+|:------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------- |:------------------------------------------------ |
+| SHOW INSTANCE MODE                                                        | 查询当前 proxy 的 mode 配置                                                                                       | SHOW INSTANCE MODE                                |
+| COUNT DATABASE RULES [FROM database]                                      | 查询 database 中的规则数量                                                                                         | COUNT DATABASE RULES                             |
+| SET VARIABLE proxy_property_name = xx                                     | proxy_property_name 为 proxy 的[属性配置](/cn/user-manual/shardingsphere-proxy/yaml-config/props/) ,需使用下划线命名 | SET VARIABLE sql_show = true                     |
+| SET VARIABLE transaction_type = xx                                        | 修改当前连接的事务类型, 支持 LOCAL,XA,BASE                                                                          | SET VARIABLE transaction_type = XA               |
+| SET VARIABLE agent_plugins_enabled = [TRUE / FALSE]                       | 设置 agent 插件的启用状态,默认值 false                                                                              | SET VARIABLE agent_plugins_enabled = TRUE        |
+| SHOW ALL VARIABLES                                                        | 查询 proxy 所有的属性配置                                                                                          | SHOW ALL VARIABLES                                |
+| SHOW VARIABLE variable_name                                               | 查询 proxy 属性,需使用下划线命名                                                                                    | SHOW VARIABLE sql_show                            |
+| PREVIEW SQL                                                               | 预览实际 SQL                                                                                                      | PREVIEW SELECT * FROM t_order                     |
+| PARSE SQL                                                                 | 解析 SQL 并输出抽象语法树                                                                                           | PARSE SELECT * FROM t_order                       |
+| REFRESH TABLE METADATA                                                    | 刷新所有表的元数据                                                                                                  | REFRESH TABLE METADATA                            |
+| REFRESH TABLE METADATA [tableName / tableName FROM RESOURCE resourceName] | 刷新指定表的元数据                                                                                                  | REFRESH TABLE METADATA t_order FROM RESOURCE ds_1 |
+| SHOW TABLE METADATA tableName [, tableName] ...                           | 查询表的元数据                                                                                                     | SHOW TABLE METADATA t_order                       |
+| EXPORT DATABASE CONFIG [FROM database_name] [, file="file_path"]          | 查询 / 导出 database 中的资源和规则配置                                                                              | EXPORT DATABASE CONFIG FROM readwrite_splitting_db |
+| SHOW RULES USED RESOURCE resourceName [from database]                     | 查询 database 中使用指定资源的规则                                                                                   | SHOW RULES USED RESOURCE ds_0 FROM databaseName    |
 
 ## 注意事项
 
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/_index.en.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/_index.en.md
index ead783d6934..aefdfba0a70 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/_index.en.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/_index.en.md
@@ -10,11 +10,11 @@ RAL (Resource & Rule Administration Language) responsible for the added-on featu
 
 | Statement                                            | Function                                                                                                    | Example                                        |
 |:---------------------------------------------------- |:----------------------------------------------------------------------------------------------------------- |:---------------------------------------------- |
-| SET READWRITE_SPLITTING HINT SOURCE = [auto / write] | For current connection, set readwrite splitting routing strategy (automatic or forced to write data source) | SET READWRITE_SPLITTINGHINT SOURCE = write    |
+| SET READWRITE_SPLITTING HINT SOURCE = [auto / write] | For current connection, set readwrite splitting routing strategy (automatic or forced to write data source) | SET READWRITE_SPLITTINGHINT SOURCE = write     |
 | SET SHARDING HINT DATABASE_VALUE = yy                | For current connection, set sharding value for database sharding only, yy: sharding value                   | SET SHARDING HINT DATABASE_VALUE = 100         |
-| ADD SHARDING HINT DATABASE_VALUE xx = yy              | For current connection, add sharding value for table, xx: logic table, yy: database sharding value          | ADD SHARDING HINT DATABASE_VALUE t_order = 100 |
+| ADD SHARDING HINT DATABASE_VALUE xx = yy             | For current connection, add sharding value for table, xx: logic table, yy: database sharding value          | ADD SHARDING HINT DATABASE_VALUE t_order = 100 |
 | ADD SHARDING HINT TABLE_VALUE xx = yy                | For current connection, add sharding value for table, xx: logic table, yy: table sharding value             | ADD SHARDING HINT TABLE_VALUE t_order = 100    |
-| CLEAR HINT SETTINGS                                            | For current connection, clear all hint settings                                                             | CLEAR HINT                                     |
+| CLEAR HINT SETTINGS                                  | For current connection, clear all hint settings                                                             | CLEAR HINT                                     |
 | CLEAR [SHARDING HINT / READWRITE_SPLITTING HINT]     | For current connection, clear hint settings of sharding or readwrite splitting                              | CLEAR READWRITE_SPLITTING HINT                 |
 | SHOW [SHARDING / READWRITE_SPLITTING] HINT STATUS    | For current connection, query hint settings of sharding or readwrite splitting                              | SHOW READWRITE_SPLITTING HINT STATUS           |
 
@@ -23,22 +23,22 @@ RAL (Resource & Rule Administration Language) responsible for the added-on featu
 | Statement                                            | Function                                                          | Example                                  |
 |:---------------------------------------------------- |:----------------------------------------------------------------- |:---------------------------------------- |
 | SHOW SCALING LIST                                    | Query running list                                                | SHOW SCALING LIST                        |
-| SHOW SCALING STATUS jobId                               | Query scaling status, xx: jobId                                   | SHOW SCALING STATUS 1234                 |
-| START SCALING jobId                                     | Start scaling, xx: jobId                                          | START SCALING 1234                       |
-| STOP SCALING jobId                                      | Stop scaling, xx: jobId                                           | STOP SCALING 1234                        |
-| DROP SCALING jobId                                      | Drop scaling, xx: jobId                                           | DROP SCALING 1234                        |
-| RESET SCALING jobId                                     | reset progress, xx: jobId                                         | RESET SCALING 1234                       |
-| CHECK SCALING jobId                                     | Data consistency check with algorithm in `server.yaml`, xx: jobId | CHECK SCALING 1234                       |
+| SHOW SCALING STATUS jobId                            | Query scaling status, xx: jobId                                   | SHOW SCALING STATUS 1234                 |
+| START SCALING jobId                                  | Start scaling, xx: jobId                                          | START SCALING 1234                       |
+| STOP SCALING jobId                                   | Stop scaling, xx: jobId                                           | STOP SCALING 1234                        |
+| DROP SCALING jobId                                   | Drop scaling, xx: jobId                                           | DROP SCALING 1234                        |
+| RESET SCALING jobId                                  | reset progress, xx: jobId                                         | RESET SCALING 1234                       |
+| CHECK SCALING jobId                                  | Data consistency check with algorithm in `server.yaml`, xx: jobId | CHECK SCALING 1234                       |
 | SHOW SCALING CHECK ALGORITHMS                        | Show available consistency check algorithms                       | SHOW SCALING CHECK ALGORITHMS            |
 | CHECK SCALING {jobId} by type(name={algorithmType})  | Data consistency check with defined algorithm                     | CHECK SCALING 1234 by type(name=DEFAULT) |
-| STOP SCALING SOURCE WRITING jobId                       | The source ShardingSphere data source is discontinued, xx: jobId  | STOP SCALING SOURCE WRITING 1234         |
-| RESTORE SCALING SOURCE WRITING jobId                    | Restore source data source writing, xx: jobId                     | RESTORE SCALING SOURCE WRITING 1234      |
-| APPLY SCALING jobId                                       | Switch to target ShardingSphere metadata, xx: jobId               | APPLY SCALING 1234                       |
+| STOP SCALING SOURCE WRITING jobId                    | The source ShardingSphere data source is discontinued, xx: jobId  | STOP SCALING SOURCE WRITING 1234         |
+| RESTORE SCALING SOURCE WRITING jobId                 | Restore source data source writing, xx: jobId                     | RESTORE SCALING SOURCE WRITING 1234      |
+| APPLY SCALING jobId                                  | Switch to target ShardingSphere metadata, xx: jobId               | APPLY SCALING 1234                       |
 
 ## Circuit Breaker
 
 | Statement                                                                       | Function                           | Example                                    |
-|:--------------------------------------------------------------------------------|:---------------------------------- |:-------------------------------------------|
+|:------------------------------------------------------------------------------- |:---------------------------------- |:------------------------------------------ |
 | [ENABLE / DISABLE] READWRITE_SPLITTING (READ)? resourceName [FROM databaseName] | Enable or disable read data source | ENABLE READWRITE_SPLITTING READ resource_0 |
 | [ENABLE / DISABLE] INSTANCE instanceId                                          | Enable or disable proxy instance   | DISABLE INSTANCE instance_1                |
 | SHOW INSTANCE LIST                                                              | Query proxy instance information   | SHOW INSTANCE LIST                         |
@@ -47,31 +47,31 @@ RAL (Resource & Rule Administration Language) responsible for the added-on featu
 ## Global Rule
 
 | Statement                                                                                                                                                                                                           | Function                                                                                                                                                                                                             | Example                                                       [...]
-|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:------------------------------------------------------------- [...]
+|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------- [...]
 | SHOW AUTHORITY RULE                                                                                                                                                                                                 | Query authority rule configuration                                                                                                                                                                                   | SHOW AUTHORITY RULE                                           [...]
 | SHOW TRANSACTION RULE                                                                                                                                                                                               | Query transaction rule configuration                                                                                                                                                                                 | SHOW TRANSACTION RULE                                         [...]
 | SHOW SQL_PARSER RULE                                                                                                                                                                                                | Query SQL parser rule configuration                                                                                                                                                                                  | SHOW SQL_PARSER RULE                                          [...]
-| ALTER TRANSACTION RULE(DEFAULT=xx,TYPE(NAME=xxx, PROPERTIES("key1"="value1","key2"="value2"...)))                                                                                                                   | Alter transaction rule configuration, `DEFAULT`: default transaction type, support LOCAL, XA, BASE; `NAME`: name of transaction manager, support Atomikos, Narayana and Bitronix                                      | ALTER TRANSACTION RULE(DEFAULT=XA,TYPE(NAME=Narayana, PROPER [...]
+| ALTER TRANSACTION RULE(DEFAULT=xx,TYPE(NAME=xxx, PROPERTIES("key1"="value1","key2"="value2"...)))                                                                                                                   | Alter transaction rule configuration, `DEFAULT`: default transaction type, support LOCAL, XA, BASE; `NAME`: name of transaction manager, support Atomikos, Narayana and Bitronix                                     | ALTER TRANSACTION RULE(DEFAULT=XA,TYPE(NAME=Narayana, PROPERT [...]
 | ALTER SQL_PARSER RULE SQL_COMMENT_PARSE_ENABLE=xx, PARSE_TREE_CACHE(INITIAL_CAPACITY=xx, MAXIMUM_SIZE=xx, CONCURRENCY_LEVEL=xx), SQL_STATEMENT_CACHE(INITIAL_CAPACITY=xxx, MAXIMUM_SIZE=xxx, CONCURRENCY_LEVEL=xxx) | Alter SQL parser rule configuration, `SQL_COMMENT_PARSE_ENABLE`: whether to parse the SQL comment, `PARSE_TREE_CACHE`: local cache configuration of syntax tree, `SQL_STATEMENT_CACHE`: local cache of SQL statement | ALTER SQL_PARSER RULE SQL_COMMENT_PARSE_ENABLE=false, PARSE_T [...]
 
 ## Other
 
-| Statement                                                                   | Function                                                                           | Example                                   |
-|:--------------------------------------------------------------------------- |:---------------------------------------------------------------------------------- |:----------------------------------------- |
-| SHOW INSTANCE MODE                                                          | Query the mode configuration of the proxy                                          | SHOW INSTANCE MODE                        |
-| COUNT DATABASE RULES [FROM database]                                        | Query the number of rules in a database                                            | COUNT DATABASE RULES                               |
-| SET VARIABLE proxy_property_name = xx                                       | proxy_property_name is one of [properties configuration](/en/user-manual/shardingsphere-proxy/yaml-config/props/) of proxy, name is split by underscore            | SET VARIABLE sql_show = true            |  
-| SET VARIABLE transaction_type = xx                                          | Modify transaction_type of the current connection, supports LOCAL, XA, BASE        | SET VARIABLE transaction_type = XA        |
-| SET VARIABLE agent_plugins_enabled = [TRUE / FALSE]                         | Set whether the agent plugins are enabled, the default value is false              | SET VARIABLE agent_plugins_enabled = TRUE |
-| SHOW ALL VARIABLES                                                          | Query proxy all properties configuration                                           | SHOW ALL VARIABLES                        |
-| SHOW VARIABLE variable_name                                                 | Query proxy variable, name is split by underscore                                  | SHOW VARIABLE sql_show                    |
-| PREVIEW SQL                                                                 | Preview the actual SQLs                                                            | PREVIEW SELECT * FROM t_order             |
-| PARSE SQL                                                                   | Parse SQL and output abstract syntax tree                                          | PARSE SELECT * FROM t_order               |
-| REFRESH TABLE METADATA                                                      | Refresh the metadata of all tables                                                 | REFRESH TABLE METADATA                    |
-| REFRESH TABLE METADATA [tableName / tableName FROM RESOURCE resourceName]   | Refresh the metadata of a table                                                    | REFRESH TABLE METADATA t_order FROM resource ds_1  |
-| SHOW TABLE METADATA tableName [, tableName] ...                             | Query table metadata                                                               | SHOW TABLE METADATA t_order                        |
-| EXPORT DATABASE CONFIG [FROM database_name] [, file="file_path"]            | Query / export resources and rule configuration in database                    | EXPORT DATABASE CONFIG FROM readwrite_splitting_db |
-| SHOW RULES USED RESOURCE resourceName [from database]                         | Query the rules for using the specified resource in database                         | SHOW RULES USED RESOURCE ds_0 FROM databaseName  |
+| Statement                                                                 | Function                                                                                                                                                | Example                                            |
+|:------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------- |:-------------------------------------------------- |
+| SHOW INSTANCE MODE                                                        | Query the mode configuration of the proxy                                                                                                               | SHOW INSTANCE MODE                                 |
+| COUNT DATABASE RULES [FROM database]                                      | Query the number of rules in a database                                                                                                                 | COUNT DATABASE RULES                               |
+| SET VARIABLE proxy_property_name = xx                                     | proxy_property_name is one of [properties configuration](/en/user-manual/shardingsphere-proxy/yaml-config/props/) of proxy, name is split by underscore | SET VARIABLE sql_show = true                       |  
+| SET VARIABLE transaction_type = xx                                        | Modify transaction_type of the current connection, supports LOCAL, XA, BASE                                                                             | SET VARIABLE transaction_type = XA                 |
+| SET VARIABLE agent_plugins_enabled = [TRUE / FALSE]                       | Set whether the agent plugins are enabled, the default value is false                                                                                   | SET VARIABLE agent_plugins_enabled = TRUE          |
+| SHOW ALL VARIABLES                                                        | Query proxy all properties configuration                                                                                                                | SHOW ALL VARIABLES                                 |
+| SHOW VARIABLE variable_name                                               | Query proxy variable, name is split by underscore                                                                                                       | SHOW VARIABLE sql_show                             |
+| PREVIEW SQL                                                               | Preview the actual SQLs                                                                                                                                 | PREVIEW SELECT * FROM t_order                      |
+| PARSE SQL                                                                 | Parse SQL and output abstract syntax tree                                                                                                               | PARSE SELECT * FROM t_order                        |
+| REFRESH TABLE METADATA                                                    | Refresh the metadata of all tables                                                                                                                      | REFRESH TABLE METADATA                             |
+| REFRESH TABLE METADATA [tableName / tableName FROM RESOURCE resourceName] | Refresh the metadata of a table                                                                                                                         | REFRESH TABLE METADATA t_order FROM resource ds_1  |
+| SHOW TABLE METADATA tableName [, tableName] ...                           | Query table metadata                                                                                                                                    | SHOW TABLE METADATA t_order                        |
+| EXPORT DATABASE CONFIG [FROM database_name] [, file="file_path"]          | Query / export resources and rule configuration in database                                                                                             | EXPORT DATABASE CONFIG FROM readwrite_splitting_db |
+| SHOW RULES USED RESOURCE resourceName [from database]                     | Query the rules for using the specified resource in database                                                                                            | SHOW RULES USED RESOURCE ds_0 FROM databaseName    |
 
 ## Notice
 
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/db-discovery.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/db-discovery.cn.md
index bce2a811828..86be4b37763 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/db-discovery.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/db-discovery.cn.md
@@ -18,7 +18,7 @@ SHOW DB_DISCOVERY HEARTBEATS [FROM databaseName]
 ### DB Discovery Rule
 
 | 列                       | 说明            |
-| ------------------------ | --------------- |
+| ------------------------ | -------------- |
 | group_name               | 规则名称         |
 | data_source_names        | 数据源名称列表    |
 | primary_data_source_name | 主数据源名称      |
@@ -28,15 +28,15 @@ SHOW DB_DISCOVERY HEARTBEATS [FROM databaseName]
 ### DB Discovery Type
 
 | 列                       | 说明            |
-| ------------------------ | ---------------|
+| ------------------------ | -------------- |
 | name                     | 类型名称        |
-| type                     | 类型种类         |
-| props                    | 类型参数         |
+| type                     | 类型种类        |
+| props                    | 类型参数        |
 
 ### DB Discovery Heartbeat
 
 | 列                       | 说明            |
-| ------------------------ | ---------------|
+| ------------------------ | -------------- |
 | name                     | 心跳名称        |
 | props                    | 心跳参数        |
 
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/db-discovery.en.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/db-discovery.en.md
index d45343cad12..2448d93dc22 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/db-discovery.en.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/db-discovery.en.md
@@ -36,7 +36,7 @@ SHOW DB_DISCOVERY HEARTBEATS [FROM databaseName]
 ### DB Discovery Heartbeat
 
 | Column                   | Description           |
-| ------------------------ | ----------------------|
+| ------------------------ | --------------------- |
 | name                     | Heartbeat name        |
 | props                    | Heartbeat properties  |
 
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/encrypt.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/encrypt.cn.md
index 3e9ac1a386b..b5f4b2c5ffd 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/encrypt.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/encrypt.cn.md
@@ -15,14 +15,14 @@ SHOW ENCRYPT TABLE RULE tableName [from databaseName]
 ## 返回值说明
 
 | 列                        | 说明                |
-| ---------------           | ----------         |
+| ------------------------- | ------------------ |
 | table                     | 逻辑表名             |
 | logic_column              | 逻辑列名             |
 | logic_data_type           | 逻辑列数据类型        |
 | cipher_column             | 密文列名             |
 | cipher_data_type          | 密文列数据类型        |
 | plain_column              | 明文列名             |
-| plain_data_type           | 明文列数据类型          |
+| plain_data_type           | 明文列数据类型        |
 | assisted_query_column     | 辅助查询列名          |
 | assisted_query_data_type  | 辅助查询列数据类型     |
 | encryptor_type            | 加密算法类型          |
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/encrypt.en.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/encrypt.en.md
index f041c23a5f7..d16dc460e5c 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/encrypt.en.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/encrypt.en.md
@@ -14,20 +14,20 @@ SHOW ENCRYPT TABLE RULE tableName [from databaseName]
 
 ## Return Value Description
 
-| Column                    | Description                                 |
-| ---------------           | -------------------------------             |
-| table                     | Logical table name                          |
-| logic_column              | Logical column name                         |
-| logic_data_type           | Logical column data type                    |
-| cipher_column             | Ciphertext column name                      |
-| cipher_data_type          | Ciphertext column data type                 |
-| plain_column              | Plaintext column name                       |
-| plain_data_type           | Plaintext column data type                  |
-| assisted_query_column     | Assisted query column name                  |
-| assisted_query_data_type  | Assisted query column data type             |
-| encryptor_type            | Encryption algorithm type                   |
-| encryptor_props           | Encryption algorithm parameter              |
-| query_with_cipher_column  | Whether to use encrypted column for query   |
+| Column                    | Description                               |
+| ------------------------- | ----------------------------------------  |
+| table                     | Logical table name                        |
+| logic_column              | Logical column name                       |
+| logic_data_type           | Logical column data type                  |
+| cipher_column             | Ciphertext column name                    |
+| cipher_data_type          | Ciphertext column data type               |
+| plain_column              | Plaintext column name                     |
+| plain_data_type           | Plaintext column data type                |
+| assisted_query_column     | Assisted query column name                |
+| assisted_query_data_type  | Assisted query column data type           |
+| encryptor_type            | Encryption algorithm type                 |
+| encryptor_props           | Encryption algorithm parameter            |
+| query_with_cipher_column  | Whether to use encrypted column for query |
 
 ## Example
 
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/shadow.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/shadow.cn.md
index 0c519b0a11a..f36c7afa213 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/shadow.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/shadow.cn.md
@@ -32,25 +32,25 @@ shadowRule:
 
 ### Shadow Table Rule
 
-| 列                     | 说明           |
-| ----------------------| ---------------|
-| shadow_table          | 影子表          |
-| shadow_algorithm_name | 影子算法名称     |
+| 列                     | 说明       |
+| --------------------- | ---------- |
+| shadow_table          | 影子表      |
+| shadow_algorithm_name | 影子算法名称 |
 
 ### Shadow Algorithms
 
-| 列                    | 说明          |
-| -------------------   | ------------ |
-| shadow_algorithm_name | 影子算法名称   |
-| type                  | 算法类型      |
-| props                 | 算法参数      |
-| is_default            | 是否默认      |
+| 列                    | 说明        |
+| -------------------   | ---------- |
+| shadow_algorithm_name | 影子算法名称 |
+| type                  | 算法类型    |
+| props                 | 算法参数    |
+| is_default            | 是否默认    |
 
 ### Shadow Rule status
 
-| 列                    | 说明          |
-| -------------------   | ------------ |
-| status                | 是否启用      |
+| 列                    | 说明     |
+| -------------------   | ------- |
+| status                | 是否启用 |
 
 ## 示例
 
diff --git a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/shadow.en.md b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/shadow.en.md
index 90a63c4bc52..f73d5325908 100644
--- a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/shadow.en.md
+++ b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/rql/rule-query/shadow.en.md
@@ -24,7 +24,7 @@ shadowRule:
 ### Shadow Rule
 
 | Column       | Description     |
-| ------------ | -----------     |
+| ------------ | --------------- |
 | rule_name    | Rule name       |
 | source_name  | Source database |
 | shadow_name  | Shadow database |
@@ -48,9 +48,9 @@ shadowRule:
 
 ### Shadow Rule status
 
-| Column                | Description  |
-| -------------------   | ------------ |
-| status                | Enable       |
+| Column                | Description |
+| --------------------- | ----------- |
+| status                | Enable      |
 
 ## Example
 
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLHandler.java
index 23c390d197b..325c384b177 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLHandler.java
@@ -51,15 +51,18 @@ public final class ParseDistSQLHandler extends QueryableRALBackendHandler<ParseS
     
     @Override
     protected Collection<List<Object>> getRows(final ContextManager contextManager) {
+        SQLStatement parsedSqlStatement = parseSQL(contextManager);
+        return Collections.singleton(Arrays.asList(parsedSqlStatement.getClass().getSimpleName(), new Gson().toJson(parsedSqlStatement)));
+    }
+    
+    private SQLStatement parseSQL(final ContextManager contextManager) {
         Optional<SQLParserRule> sqlParserRule = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRule(SQLParserRule.class);
         Preconditions.checkState(sqlParserRule.isPresent());
-        SQLStatement parsedSqlStatement;
         try {
-            parsedSqlStatement = sqlParserRule.get().getSQLParserEngine(getStorageType().getType()).parse(getSqlStatement().getSql(), false);
+            return sqlParserRule.get().getSQLParserEngine(getStorageType().getType()).parse(getSqlStatement().getSql(), false);
         } catch (final SQLParsingException ex) {
             throw new SQLParsingException("You have a syntax error in your parsed statement");
         }
-        return Collections.singleton(Arrays.asList(parsedSqlStatement.getClass().getSimpleName(), new Gson().toJson(parsedSqlStatement)));
     }
     
     private DatabaseType getStorageType() {