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

zhangliang 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 cee279847bd Add document and test cases on DistSQL of manage 
SQL_TRANSLATOR rule (#37383)
cee279847bd is described below

commit cee279847bdc373a49f3727c4451623b92f821f4
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Dec 14 19:52:21 2025 +0800

    Add document and test cases on DistSQL of manage SQL_TRANSLATOR rule 
(#37383)
    
    * Add document and test cases on DistSQL of manage SQL_TRANSLATOR rule
    
    * Add document and test cases on DistSQL of manage SQL_TRANSLATOR rule
    
    * Add document and test cases on DistSQL of manage SQL_TRANSLATOR rule
    
    * Add document and test cases on DistSQL of manage SQL_TRANSLATOR rule
---
 .../global-rule/alter-sql-translator-rule.cn.md    | 75 ++++++++++++++++++++++
 .../global-rule/alter-sql-translator-rule.en.md    | 75 ++++++++++++++++++++++
 .../ral/global-rule/show-sql-translator-rule.cn.md | 38 +++++++++++
 .../ral/global-rule/show-sql-translator-rule.en.md | 38 +++++++++++
 .../distsql/syntax/reserved-word.cn.md             |  6 +-
 .../distsql/syntax/reserved-word.en.md             |  6 +-
 .../AlterSQLTranslatorRuleStatementAssert.java     | 61 ++++++++++++++++++
 .../asserts/statement/rdl/RDLStatementAssert.java  |  5 ++
 .../cases/parser/jaxb/RootSQLParserTestCases.java  |  4 ++
 .../AlterSQLTranslatorRuleStatementTestCase.java   | 39 +++++++++++
 .../src/main/resources/case/ral/updatable.xml      | 11 ++++
 .../main/resources/sql/supported/ral/updatable.xml |  2 +
 12 files changed, 354 insertions(+), 6 deletions(-)

diff --git 
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/alter-sql-translator-rule.cn.md
 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/alter-sql-translator-rule.cn.md
new file mode 100644
index 00000000000..a2856a72eda
--- /dev/null
+++ 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/alter-sql-translator-rule.cn.md
@@ -0,0 +1,75 @@
++++
+title = "ALTER SQL_TRANSLATOR RULE"
+weight = 6
++++
+
+### 描述
+
+`ALTER SQL_TRANSLATOR RULE` 语法用于修改 SQL 翻译器规则配置。
+
+### 语法
+
+{{< tabs >}}
+{{% tab name="语法" %}}
+```sql
+AlterSQLTranslatorRule ::=
+  'ALTER' 'SQL_TRANSLATOR' 'RULE' '(' sqlTranslatorRuleDefinition ')'
+
+sqlTranslatorRuleDefinition ::=
+  algorithmDefinition (',' useOriginalSQLWhenTranslatingFailedClause)?
+
+algorithmDefinition ::=
+  'TYPE' '(' 'NAME' '=' translatorType (',' 'PROPERTIES' '(' 
propertiesDefinition ')' )? ')'
+
+useOriginalSQLWhenTranslatingFailedClause ::=
+  'USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED' '=' booleanLiteral
+
+translatorType ::=
+  identifier
+
+propertiesDefinition ::=
+  property (',' property)*
+
+property ::=
+  key '=' value
+
+booleanLiteral ::=
+  'TRUE' | 'FALSE'
+```
+{{% /tab %}}
+{{% tab name="Railroad diagram" %}}
+<iframe frameborder="0" name="diagram" id="diagram" width="100%" 
height="100%"></iframe>
+{{% /tab %}}
+{{< /tabs >}}
+
+### 说明
+
+- `TYPE` 用于声明 SQL 翻译器实现及其 `PROPERTIES`。
+- `USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED` 用于控制翻译失败时是否回退到原始 SQL。
+
+### 示例
+
+- 在翻译失败时回退到原始 SQL
+
+```sql
+ALTER SQL_TRANSLATOR RULE (
+  TYPE(NAME='NATIVE', PROPERTIES('key'='value')),
+  USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED=TRUE
+);
+```
+
+- 不指定回退配置
+
+```sql
+ALTER SQL_TRANSLATOR RULE (
+  TYPE(NAME='NATIVE', PROPERTIES('key'='value'))
+);
+```
+
+### 保留字
+
+`ALTER`、`SQL_TRANSLATOR`、`RULE`、`TYPE`、`NAME`、`PROPERTIES`、`USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED`、`TRUE`、`FALSE`
+
+### 相关链接
+
+- [保留字](/cn/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word/)
diff --git 
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/alter-sql-translator-rule.en.md
 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/alter-sql-translator-rule.en.md
new file mode 100644
index 00000000000..8dd232d5bc6
--- /dev/null
+++ 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/alter-sql-translator-rule.en.md
@@ -0,0 +1,75 @@
++++
+title = "ALTER SQL_TRANSLATOR RULE"
+weight = 6
++++
+
+### Description
+
+The `ALTER SQL_TRANSLATOR RULE` syntax is used to alter the SQL translator 
rule configuration.
+
+### Syntax
+
+{{< tabs >}}
+{{% tab name="Grammar" %}}
+```sql
+AlterSQLTranslatorRule ::=
+  'ALTER' 'SQL_TRANSLATOR' 'RULE' '(' sqlTranslatorRuleDefinition ')'
+
+sqlTranslatorRuleDefinition ::=
+  algorithmDefinition (',' useOriginalSQLWhenTranslatingFailedClause)?
+
+algorithmDefinition ::=
+  'TYPE' '(' 'NAME' '=' translatorType (',' 'PROPERTIES' '(' 
propertiesDefinition ')' )? ')'
+
+useOriginalSQLWhenTranslatingFailedClause ::=
+  'USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED' '=' booleanLiteral
+
+translatorType ::=
+  identifier
+
+propertiesDefinition ::=
+  property (',' property)*
+
+property ::=
+  key '=' value
+
+booleanLiteral ::=
+  'TRUE' | 'FALSE'
+```
+{{% /tab %}}
+{{% tab name="Railroad diagram" %}}
+<iframe frameborder="0" name="diagram" id="diagram" width="100%" 
height="100%"></iframe>
+{{% /tab %}}
+{{< /tabs >}}
+
+### Note
+
+- `TYPE` declares the SQL translator implementation and its `PROPERTIES`.
+- `USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED` controls whether the original SQL 
should be used when translation fails.
+
+### Example
+
+- Alter SQL translator rule with fallback on translation failure
+
+```sql
+ALTER SQL_TRANSLATOR RULE (
+  TYPE(NAME='NATIVE', PROPERTIES('key'='value')),
+  USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED=TRUE
+);
+```
+
+- Alter SQL translator rule without specifying fallback
+
+```sql
+ALTER SQL_TRANSLATOR RULE (
+  TYPE(NAME='NATIVE', PROPERTIES('key'='value'))
+);
+```
+
+### Reserved word
+
+`ALTER`, `SQL_TRANSLATOR`, `RULE`, `TYPE`, `NAME`, `PROPERTIES`, 
`USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED`, `TRUE`, `FALSE`
+
+### Related links
+
+- [Reserved 
word](/en/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word/)
diff --git 
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/show-sql-translator-rule.cn.md
 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/show-sql-translator-rule.cn.md
new file mode 100644
index 00000000000..1e668b381ef
--- /dev/null
+++ 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/show-sql-translator-rule.cn.md
@@ -0,0 +1,38 @@
++++
+title = "SHOW SQL_TRANSLATOR RULE"
+weight = 5
++++
+
+### 描述
+
+`SHOW SQL_TRANSLATOR RULE` 语法用于查询 SQL 翻译器规则配置。
+
+### 语法
+
+{{< tabs >}}
+{{% tab name="语法" %}}
+```sql
+ShowSQLTranslatorRule ::=
+  'SHOW' 'SQL_TRANSLATOR' 'RULE'
+```
+{{% /tab %}}
+{{% tab name="Railroad diagram" %}}
+<iframe frameborder="0" name="diagram" id="diagram" width="100%" 
height="100%"></iframe>
+{{% /tab %}}
+{{< /tabs >}}
+
+### 示例
+
+- 查询 SQL 翻译器规则
+
+```sql
+SHOW SQL_TRANSLATOR RULE;
+```
+
+### 保留字
+
+`SHOW`、`SQL_TRANSLATOR`、`RULE`
+
+### 相关链接
+
+- [保留字](/cn/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word/)
diff --git 
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/show-sql-translator-rule.en.md
 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/show-sql-translator-rule.en.md
new file mode 100644
index 00000000000..34948e17591
--- /dev/null
+++ 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/ral/global-rule/show-sql-translator-rule.en.md
@@ -0,0 +1,38 @@
++++
+title = "SHOW SQL_TRANSLATOR RULE"
+weight = 5
++++
+
+### Description
+
+The `SHOW SQL_TRANSLATOR RULE` syntax is used to query SQL translator rule 
configuration.
+
+### Syntax
+
+{{< tabs >}}
+{{% tab name="Grammar" %}}
+```sql
+ShowSQLTranslatorRule ::=
+  'SHOW' 'SQL_TRANSLATOR' 'RULE'
+```
+{{% /tab %}}
+{{% tab name="Railroad diagram" %}}
+<iframe frameborder="0" name="diagram" id="diagram" width="100%" 
height="100%"></iframe>
+{{% /tab %}}
+{{< /tabs >}}
+
+### Example
+
+- Show SQL translator rule
+
+```sql
+SHOW SQL_TRANSLATOR RULE;
+```
+
+### Reserved word
+
+`SHOW`, `SQL_TRANSLATOR`, `RULE`
+
+### Related links
+
+- [Reserved 
word](/en/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word/)
diff --git 
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word.cn.md
 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word.cn.md
index 3a1b4207022..e78a30a9533 100644
--- 
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word.cn.md
+++ 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word.cn.md
@@ -95,8 +95,8 @@ weight = 5
 ## RAL
 
 
`ALTER`、`READWRITE_SPLITTING`、`RULE`、`RULES`、`FROM`、`ENABLE`、`DISABLE`、`SHOW`、`COMPUTE`、`NODES`、`NODE`
-、`STATUS`、`LABEL`、`RELABEL`、`WITH`、`UNLABEL`、`AUTHORITY`、`TRANSACTION`、`SQL_PARSER`、`DEFAULT`、`TYPE`
-、`NAME`、`PROPERTIES`、`PARSE_TREE_CACHE`、`INITIAL_CAPACITY`、`MAXIMUM_SIZE`
+、`STATUS`、`LABEL`、`RELABEL`、`WITH`、`UNLABEL`、`AUTHORITY`、`TRANSACTION`、`SQL_PARSER`、`SQL_TRANSLATOR`、`DEFAULT`、`TYPE`
+、`NAME`、`PROPERTIES`、`USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED`、`PARSE_TREE_CACHE`、`INITIAL_CAPACITY`、`MAXIMUM_SIZE`
 
、`CONCURRENCY_LEVEL`、`SQL_STATEMENT_CACHE`、`TRAFFIC`、`TRAFFIC_ALGORITHM`、`LOAD_BALANCER`、`CREATE`
 
、`DATABASE_VALUE`、`TABLE_VALUE`、`CLEAR`、`MIGRATION`、`READ`、`WRITE`、`WORKER_THREAD`、`BATCH_SIZE`、`SHARDING_SIZE`
 
、`STREAM_CHANNEL`、`REGISTER`、`URL`、`UNREGISTER`、`UNITS`、`INTO`、`LIST`、`CHECK`、`BY`、`STOP`、`START`、`ROLLBACK`
@@ -112,4 +112,4 @@ weight = 5
 
 ## 补充说明
 
-- 上述保留字大小写不敏感
\ No newline at end of file
+- 上述保留字大小写不敏感
diff --git 
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word.en.md
 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word.en.md
index 33e661e16f9..3d20784cb6b 100644
--- 
a/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word.en.md
+++ 
b/docs/document/content/user-manual/shardingsphere-proxy/distsql/syntax/reserved-word.en.md
@@ -96,8 +96,8 @@ weight = 5
 ## RAL
 
 `ALTER`, `READWRITE_SPLITTING`, `RULE`, `RULES`, `FROM`, `ENABLE`, `DISABLE`, 
`SHOW`, `COMPUTE`, `NODES`, `NODE`
-, `STATUS`, `LABEL`, `RELABEL`, `WITH`, `UNLABEL`, `AUTHORITY`, `TRANSACTION`, 
`SQL_PARSER`, `DEFAULT`, `TYPE`
-, `NAME`, `PROPERTIES`, `PARSE_TREE_CACHE`, `INITIAL_CAPACITY`, `MAXIMUM_SIZE`
+, `STATUS`, `LABEL`, `RELABEL`, `WITH`, `UNLABEL`, `AUTHORITY`, `TRANSACTION`, 
`SQL_PARSER`, `SQL_TRANSLATOR`, `DEFAULT`, `TYPE`
+, `NAME`, `PROPERTIES`, `USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED`, 
`PARSE_TREE_CACHE`, `INITIAL_CAPACITY`, `MAXIMUM_SIZE`
 , `CONCURRENCY_LEVEL`, `SQL_STATEMENT_CACHE`, `TRAFFIC`, `TRAFFIC_ALGORITHM`, 
`LOAD_BALANCER`, `CREATE`
 , `DATABASE_VALUE`, `TABLE_VALUE`, `CLEAR`, `MIGRATION`, `READ`, `WRITE`, 
`WORKER_THREAD`, `BATCH_SIZE`
 , `SHARDING_SIZE`, `STREAM_CHANNEL`, `REGISTER`, `URL`, `UNREGISTER`, `UNITS`, 
`INTO`, `LIST`, `CHECK`, `BY`
@@ -113,4 +113,4 @@ weight = 5
 
 ## Supplement
 
-- The above reserved words are not case-sensitive
\ No newline at end of file
+- The above reserved words are not case-sensitive
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/type/updatable/AlterSQLTranslatorRuleStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/type/updatable/AlterSQLTranslatorRuleStatementAssert.java
new file mode 100644
index 00000000000..479021e0903
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/type/updatable/AlterSQLTranslatorRuleStatementAssert.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ral.type.updatable;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.sqltranslator.distsql.statement.updateable.AlterSQLTranslatorRuleStatement;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.distsql.AlgorithmAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ExistingAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterSQLTranslatorRuleStatementTestCase;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+/**
+ * Alter SQL translator rule statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class AlterSQLTranslatorRuleStatementAssert {
+    
+    /**
+     * Assert alter SQL translator rule statement is correct with expected 
parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual alter SQL translator rule statement
+     * @param expected expected alter SQL translator rule statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final AlterSQLTranslatorRuleStatement actual, final 
AlterSQLTranslatorRuleStatementTestCase expected) {
+        if (ExistingAssert.assertIs(assertContext, actual, expected)) {
+            AlgorithmAssert.assertIs(assertContext, actual.getProvider(), 
expected.getProvider());
+            assertUseOriginalSQL(assertContext, 
actual.getUseOriginalSQLWhenTranslatingFailed(), 
expected.getUseOriginalSQLWhenTranslatingFailed());
+        }
+    }
+    
+    private static void assertUseOriginalSQL(final SQLCaseAssertContext 
assertContext, final Boolean actual, final Boolean expected) {
+        if (null == expected) {
+            assertNull(actual, assertContext.getText("Actual 
useOriginalSQLWhenTranslatingFailed should not exist."));
+        } else {
+            assertNotNull(actual, assertContext.getText("Actual 
useOriginalSQLWhenTranslatingFailed should exist."));
+            
assertThat(assertContext.getText(String.format("`useOriginalSQLWhenTranslatingFailed`
 assertion error: %s", expected)), actual, is(expected));
+        }
+    }
+}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/RDLStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/RDLStatementAssert.java
index 4ad1749b8ac..e474bddfa2d 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/RDLStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rdl/RDLStatementAssert.java
@@ -28,10 +28,12 @@ import 
org.apache.shardingsphere.distsql.statement.type.rdl.rule.database.type.C
 import 
org.apache.shardingsphere.distsql.statement.type.rdl.rule.database.type.DropRuleStatement;
 import 
org.apache.shardingsphere.globalclock.distsql.statement.updatable.AlterGlobalClockRuleStatement;
 import 
org.apache.shardingsphere.parser.distsql.statement.updatable.AlterSQLParserRuleStatement;
+import 
org.apache.shardingsphere.sqltranslator.distsql.statement.updateable.AlterSQLTranslatorRuleStatement;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ExistingAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ral.type.updatable.AlterGlobalClockRuleStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ral.type.updatable.AlterSQLParserRuleStatementAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ral.type.updatable.AlterSQLTranslatorRuleStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rdl.alter.AlterRuleStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rdl.alter.AlterStorageUnitStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.rdl.create.CreateRuleStatementAssert;
@@ -41,6 +43,7 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.r
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterGlobalClockRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterSQLParserRuleStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterSQLTranslatorRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rdl.resource.AlterStorageUnitStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rdl.resource.RegisterStorageUnitStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.rdl.resource.UnregisterStorageUnitStatementTestCase;
@@ -74,6 +77,8 @@ public final class RDLStatementAssert {
             UnregisterStorageUnitStatementAssert.assertIs(assertContext, 
(UnregisterStorageUnitStatement) actual, 
(UnregisterStorageUnitStatementTestCase) expected);
         } else if (actual instanceof AlterSQLParserRuleStatement) {
             AlterSQLParserRuleStatementAssert.assertIs(assertContext, 
(AlterSQLParserRuleStatement) actual, (AlterSQLParserRuleStatementTestCase) 
expected);
+        } else if (actual instanceof AlterSQLTranslatorRuleStatement) {
+            AlterSQLTranslatorRuleStatementAssert.assertIs(assertContext, 
(AlterSQLTranslatorRuleStatement) actual, 
(AlterSQLTranslatorRuleStatementTestCase) expected);
         } else if (actual instanceof AlterTransactionRuleStatement) {
             ExistingAssert.assertIs(assertContext, actual, expected);
         } else if (actual instanceof AlterGlobalClockRuleStatement) {
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
index 275f4a1a0f4..acbe5468e9d 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
@@ -319,6 +319,7 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterLocalTransactionRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterReadwriteSplittingStorageUnitStatusStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterSQLParserRuleStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterSQLTranslatorRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterTransmissionRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.AlterXATransactionRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ral.ApplyDistSQLStatementTestCase;
@@ -1302,6 +1303,9 @@ public final class RootSQLParserTestCases {
     @XmlElement(name = "alter-sql-parser-rule")
     private final List<AlterSQLParserRuleStatementTestCase> 
alterSQLParserRuleTestCases = new LinkedList<>();
     
+    @XmlElement(name = "alter-sql-translator-rule")
+    private final List<AlterSQLTranslatorRuleStatementTestCase> 
alterSQLTranslatorRuleTestCases = new LinkedList<>();
+    
     @XmlElement(name = "alter-local-transaction-rule")
     private final List<AlterLocalTransactionRuleStatementTestCase> 
alterLocalTransactionRuleTestCases = new LinkedList<>();
     
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ral/AlterSQLTranslatorRuleStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ral/AlterSQLTranslatorRuleStatementTestCase.java
new file mode 100644
index 00000000000..b7e37181195
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ral/AlterSQLTranslatorRuleStatementTestCase.java
@@ -0,0 +1,39 @@
+/*
+ * 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.it.sql.parser.internal.cases.parser.jaxb.statement.ral;
+
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.distsql.ExpectedAlgorithm;
+
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * Alter SQL translator rule statement test case.
+ */
+@Getter
+@Setter
+public final class AlterSQLTranslatorRuleStatementTestCase extends 
SQLParserTestCase {
+    
+    @XmlElement(name = "provider")
+    private final ExpectedAlgorithm provider = new ExpectedAlgorithm();
+    
+    @XmlElement(name = "use-original-sql-when-translating-failed")
+    private Boolean useOriginalSQLWhenTranslatingFailed;
+}
diff --git a/test/it/parser/src/main/resources/case/ral/updatable.xml 
b/test/it/parser/src/main/resources/case/ral/updatable.xml
index 73dd65f3aaa..adb26d38174 100644
--- a/test/it/parser/src/main/resources/case/ral/updatable.xml
+++ b/test/it/parser/src/main/resources/case/ral/updatable.xml
@@ -31,6 +31,17 @@
             <sql-statement-cache initial-capacity="11" maximum-size="11" />
         </sql-parser>
     </alter-sql-parser-rule>
+    <alter-sql-translator-rule sql-case-id="alter-sql-translator-rule">
+        <provider algorithm-name="DISTSQL:FIXTURE">
+            <property key="foo" value="bar" />
+        </provider>
+        
<use-original-sql-when-translating-failed>true</use-original-sql-when-translating-failed>
+    </alter-sql-translator-rule>
+    <alter-sql-translator-rule 
sql-case-id="alter-sql-translator-rule-without-use-original">
+        <provider algorithm-name="DISTSQL:FIXTURE">
+            <property key="foo" value="bar" />
+        </provider>
+    </alter-sql-translator-rule>
     <alter-local-transaction-rule sql-case-id="alter-local-transaction-rule" />
     <alter-xa-transaction-rule sql-case-id="alter-xa-transaction-rule" />
     <alter-xa-transaction-rule 
sql-case-id="alter-xa-transaction-rule-without-quote-on-build-in-default-type-name-and-provider-type-name"
 />
diff --git a/test/it/parser/src/main/resources/sql/supported/ral/updatable.xml 
b/test/it/parser/src/main/resources/sql/supported/ral/updatable.xml
index f5362926b3e..a14384f544e 100644
--- a/test/it/parser/src/main/resources/sql/supported/ral/updatable.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ral/updatable.xml
@@ -26,6 +26,8 @@
     <sql-case id="refresh-table-metadata-table-with-schema" value="REFRESH 
TABLE METADATA t_order FROM STORAGE UNIT ds_0 SCHEMA public" 
db-types="ShardingSphere" />
 
     <sql-case id="alter-sql-parser-rule" value="ALTER SQL_PARSER RULE 
(PARSE_TREE_CACHE(INITIAL_CAPACITY=10, MAXIMUM_SIZE=11), 
SQL_STATEMENT_CACHE(INITIAL_CAPACITY=11, MAXIMUM_SIZE=11));" 
db-types="ShardingSphere" />
+    <sql-case id="alter-sql-translator-rule" value="ALTER SQL_TRANSLATOR RULE 
(TYPE(NAME='DISTSQL:FIXTURE', PROPERTIES('foo'='bar')), 
USE_ORIGINAL_SQL_WHEN_TRANSLATING_FAILED=TRUE)" db-types="ShardingSphere" />
+    <sql-case id="alter-sql-translator-rule-without-use-original" value="ALTER 
SQL_TRANSLATOR RULE (TYPE(NAME='DISTSQL:FIXTURE', PROPERTIES('foo'='bar')))" 
db-types="ShardingSphere" />
     <sql-case id="alter-local-transaction-rule" value="ALTER TRANSACTION RULE 
(DEFAULT='LOCAL')" db-types="ShardingSphere" />
     <sql-case id="alter-xa-transaction-rule" value="ALTER TRANSACTION 
RULE(DEFAULT='XA', TYPE(NAME='Atomikos'))" db-types="ShardingSphere" />
     <sql-case 
id="alter-xa-transaction-rule-without-quote-on-build-in-default-type-name-and-provider-type-name"
 value="ALTER TRANSACTION RULE(DEFAULT=XA, TYPE(NAME=Atomikos))" 
db-types="ShardingSphere" />

Reply via email to