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

panjuan 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 3404d7e  upgrade calcite version to fix group concat function 
exception (#11758)
3404d7e is described below

commit 3404d7e9f4855367f4fae62a53426f35694fe804
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Thu Aug 12 14:23:37 2021 +0800

    upgrade calcite version to fix group concat function exception (#11758)
---
 pom.xml                                            |  2 +-
 .../select_group_concat_function_with_federate.xml | 23 ++++++++++++++++++++++
 .../select_group_concat_function_with_federate.xml | 23 ++++++++++++++++++++++
 .../cases/dql/dql-integration-test-cases.xml       |  4 ++++
 .../config-dbtbl-with-readwrite-splitting.yaml     | 10 ++++++++++
 .../config-dbtbl-with-readwrite-splitting.yaml     | 10 ++++++++++
 .../config-dbtbl-with-readwrite-splitting.yaml     | 10 ++++++++++
 ...dbtbl-with-readwrite-splitting-and-encrypt.yaml | 10 ++++++++++
 ...dbtbl-with-readwrite-splitting-and-encrypt.yaml | 10 ++++++++++
 ...dbtbl-with-readwrite-splitting-and-encrypt.yaml | 10 ++++++++++
 .../env/dbtbl_with_readwrite_splitting/dataset.xml | 15 ++++++++++++++
 .../init-sql/h2/init-read_ds_1.sql                 |  4 ++++
 .../init-sql/h2/init-write_ds_1.sql                |  4 ++++
 .../init-sql/mysql/init.sql                        |  4 ++++
 .../init-sql/oracle/init.sql                       |  4 ++++
 .../init-sql/postgresql/init.sql                   |  8 ++++++++
 .../init-sql/sqlserver/init.sql                    |  4 ++++
 .../env/dbtbl_with_readwrite_splitting/rules.yaml  | 10 ++++++++++
 .../dataset.xml                                    | 15 ++++++++++++++
 .../init-sql/h2/init-encrypt_read_ds_1.sql         |  4 ++++
 .../init-sql/h2/init-encrypt_write_ds_1.sql        |  4 ++++
 .../init-sql/mysql/init.sql                        |  4 ++++
 .../init-sql/oracle/init.sql                       |  4 ++++
 .../init-sql/postgresql/init.sql                   |  8 ++++++++
 .../init-sql/sqlserver/init.sql                    |  4 ++++
 .../rules.yaml                                     | 10 ++++++++++
 26 files changed, 217 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 0a1efb3..f73a8cb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -102,7 +102,7 @@
         
         <elasticjob.version>3.0.0-beta</elasticjob.version>
         
-        <calcite.version>1.26.0</calcite.version>
+        <calcite.version>1.27.0</calcite.version>
         <embedded-mysql.version>4.6.1</embedded-mysql.version>
         <embedded-postgresql.version>2.10</embedded-postgresql.version>
         
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting/select_group_concat_function_with_federate.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting/select_group_concat_function_with_federate.xml
new file mode 100644
index 0000000..1df84d6
--- /dev/null
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting/select_group_concat_function_with_federate.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ 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.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="item_ids" />
+    </metadata>
+    <row values="1000;1001" />
+</dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/select_group_concat_function_with_federate.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/select_group_concat_function_with_federate.xml
new file mode 100644
index 0000000..1df84d6
--- /dev/null
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/select_group_concat_function_with_federate.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ 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.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="item_ids" />
+    </metadata>
+    <row values="1000;1001" />
+</dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
index 518cd7a..1eae0a4 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
@@ -539,4 +539,8 @@
     <test-case sql="SELECT user_id, CONCAT('SUM:', total, '.') content FROM 
(SELECT user_id, SUM(order_id_sharding) AS total FROM t_order_federate_sharding 
GROUP BY user_id HAVING SUM(order_id_sharding) > ?) AS temp" 
db-types="MySQL,PostgreSQL" scenario-types="tbl">
         <assertion parameters="1000:int" 
expected-data-file="select_dialect_function_with_federate.xml" />
     </test-case>
+
+    <test-case sql="SELECT GROUP_CONCAT(i.item_id SEPARATOR ';') AS item_ids 
FROM t_order_federate o INNER JOIN t_order_item_federate_sharding i ON 
o.order_id = i.item_id WHERE i.order_id >= ?" db-types="MySQL" 
scenario-types="dbtbl_with_readwrite_splitting,dbtbl_with_readwrite_splitting_and_encrypt">
+        <assertion parameters="10000:int" 
expected-data-file="select_group_concat_function_with_federate.xml" />
+    </test-case>
 </integration-test-cases>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/h2/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/h2/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
index 7fbcc05..8f7e24b 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/h2/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/h2/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
@@ -235,6 +235,12 @@ rules:
         standard:
           shardingColumn: order_id
           shardingAlgorithmName: standard_test
+    t_order_item_federate_sharding:
+      actualDataNodes: pr_ds_1.t_order_item_federate_sharding_${0..1}
+      tableStrategy:
+        standard:
+          shardingColumn: item_id
+          shardingAlgorithmName: table_inline_item_id
   bindingTables:
     - t_order,t_order_item,t_order_details
   broadcastTables:
@@ -243,6 +249,10 @@ rules:
   shardingAlgorithms:
     standard_test:
       type: STANDARD_TEST
+    table_inline_item_id:
+      type: INLINE
+      props:
+        algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
   
   keyGenerators:
     constant:
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/mysql/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/mysql/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
index 7fbcc05..8f7e24b 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/mysql/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/mysql/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
@@ -235,6 +235,12 @@ rules:
         standard:
           shardingColumn: order_id
           shardingAlgorithmName: standard_test
+    t_order_item_federate_sharding:
+      actualDataNodes: pr_ds_1.t_order_item_federate_sharding_${0..1}
+      tableStrategy:
+        standard:
+          shardingColumn: item_id
+          shardingAlgorithmName: table_inline_item_id
   bindingTables:
     - t_order,t_order_item,t_order_details
   broadcastTables:
@@ -243,6 +249,10 @@ rules:
   shardingAlgorithms:
     standard_test:
       type: STANDARD_TEST
+    table_inline_item_id:
+      type: INLINE
+      props:
+        algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
   
   keyGenerators:
     constant:
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/postgresql/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/postgresql/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
index acfdf42..80de964 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/postgresql/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting/postgresql/proxy/conf/config-dbtbl-with-readwrite-splitting.yaml
@@ -235,6 +235,12 @@ rules:
         standard:
           shardingColumn: order_id
           shardingAlgorithmName: standard_test
+    t_order_item_federate_sharding:
+      actualDataNodes: pr_ds_1.t_order_item_federate_sharding_${0..1}
+      tableStrategy:
+        standard:
+          shardingColumn: item_id
+          shardingAlgorithmName: table_inline_item_id
   bindingTables:
     - t_order,t_order_item,t_order_details
   broadcastTables:
@@ -243,6 +249,10 @@ rules:
   shardingAlgorithms:
     standard_test:
       type: STANDARD_TEST
+    table_inline_item_id:
+      type: INLINE
+      props:
+        algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
   
   keyGenerators:
     constant:
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/h2/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/h2/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
index 2a5e7e6..48e6d09 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/h2/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/h2/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
@@ -238,12 +238,22 @@ rules:
         standard:
           shardingColumn: user_id
           shardingAlgorithmName: standard_test
+    t_order_item_federate_sharding:
+      actualDataNodes: pr_ds_1.t_order_item_federate_sharding_${0..1}
+      tableStrategy:
+        standard:
+          shardingColumn: item_id
+          shardingAlgorithmName: table_inline_item_id
   bindingTables:
     - t_user,t_user_item,t_user_details
 
   shardingAlgorithms:
     standard_test:
       type: STANDARD_TEST
+    table_inline_item_id:
+      type: INLINE
+      props:
+        algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
 
   keyGenerators:
     constant:
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/mysql/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/mysql/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
index 2a5e7e6..48e6d09 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/mysql/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/mysql/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
@@ -238,12 +238,22 @@ rules:
         standard:
           shardingColumn: user_id
           shardingAlgorithmName: standard_test
+    t_order_item_federate_sharding:
+      actualDataNodes: pr_ds_1.t_order_item_federate_sharding_${0..1}
+      tableStrategy:
+        standard:
+          shardingColumn: item_id
+          shardingAlgorithmName: table_inline_item_id
   bindingTables:
     - t_user,t_user_item,t_user_details
 
   shardingAlgorithms:
     standard_test:
       type: STANDARD_TEST
+    table_inline_item_id:
+      type: INLINE
+      props:
+        algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
 
   keyGenerators:
     constant:
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/postgresql/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/postgresql/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
index 89237f6..5bd77d8 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/postgresql/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/dbtbl_with_readwrite_splitting_and_encrypt/postgresql/proxy/conf/config-dbtbl-with-readwrite-splitting-and-encrypt.yaml
@@ -238,12 +238,22 @@ rules:
         standard:
           shardingColumn: user_id
           shardingAlgorithmName: standard_test
+    t_order_item_federate_sharding:
+      actualDataNodes: pr_ds_1.t_order_item_federate_sharding_${0..1}
+      tableStrategy:
+        standard:
+          shardingColumn: item_id
+          shardingAlgorithmName: table_inline_item_id
   bindingTables:
     - t_user,t_user_item,t_user_details
 
   shardingAlgorithms:
     standard_test:
       type: STANDARD_TEST
+    table_inline_item_id:
+      type: INLINE
+      props:
+        algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
 
   keyGenerators:
     constant:
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/dataset.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/dataset.xml
index bfa9b5d..31abf42 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/dataset.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/dataset.xml
@@ -48,6 +48,13 @@
         <column name="user_id" type="numeric" />
         <column name="status" type="varchar" />
     </metadata>
+    <metadata 
data-nodes="write_ds_1.t_order_item_federate_sharding_${0..1},read_ds_1.t_order_item_federate_sharding_${0..1}">
+        <column name="item_id" type="numeric" />
+        <column name="order_id" type="numeric" />
+        <column name="user_id" type="numeric" />
+        <column name="status" type="varchar" />
+        <column name="remarks" type="varchar" />
+    </metadata>
     <row data-node="write_ds_0.t_single_table" values="1, 1000, init" />
     <row data-node="write_ds_0.t_single_table" values="2, 1101, init" />
     <row data-node="write_ds_0.t_single_table" values="3, 1202, init" />
@@ -368,6 +375,10 @@
     <row data-node="write_ds_1.t_order_item_federate" values="100001, 1000, 
10, init" />
     <row data-node="write_ds_1.t_order_item_federate" values="100100, 1001, 
10, init" />
     <row data-node="write_ds_1.t_order_item_federate" values="100101, 1001, 
10, init" />
+    <row data-node="write_ds_1.t_order_item_federate_sharding_0" values="1000, 
10000, 10, init, t_order_item_federate_sharding" />
+    <row data-node="write_ds_1.t_order_item_federate_sharding_0" values="1010, 
10001, 10, init, t_order_item_federate_sharding" />
+    <row data-node="write_ds_1.t_order_item_federate_sharding_1" values="1001, 
10001, 11, init, t_order_item_federate_sharding" />
+    <row data-node="write_ds_1.t_order_item_federate_sharding_1" values="1011, 
10001, 10, init, t_order_item_federate_sharding" />
     <row data-node="read_ds_0.t_single_table" values="1, 1000, init_read" />
     <row data-node="read_ds_0.t_single_table" values="2, 1101, init_read" />
     <row data-node="read_ds_0.t_single_table" values="3, 1202, init_read" />
@@ -688,4 +699,8 @@
     <row data-node="read_ds_1.t_order_item_federate" values="100001, 1000, 10, 
init" />
     <row data-node="read_ds_1.t_order_item_federate" values="100100, 1001, 10, 
init" />
     <row data-node="read_ds_1.t_order_item_federate" values="100101, 1001, 10, 
init" />
+    <row data-node="read_ds_1.t_order_item_federate_sharding_0" values="1000, 
10000, 10, init, t_order_item_federate_sharding" />
+    <row data-node="read_ds_1.t_order_item_federate_sharding_0" values="1010, 
10001, 10, init, t_order_item_federate_sharding" />
+    <row data-node="read_ds_1.t_order_item_federate_sharding_1" values="1001, 
10001, 11, init, t_order_item_federate_sharding" />
+    <row data-node="read_ds_1.t_order_item_federate_sharding_1" values="1011, 
10001, 10, init, t_order_item_federate_sharding" />
 </dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/h2/init-read_ds_1.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/h2/init-read_ds_1.sql
index 25dda09..ba2ae9a 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/h2/init-read_ds_1.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/h2/init-read_ds_1.sql
@@ -16,5 +16,9 @@
 --
 
 DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
 
 CREATE TABLE t_order_item_federate (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_0 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_1 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/h2/init-write_ds_1.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/h2/init-write_ds_1.sql
index 25dda09..ba2ae9a 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/h2/init-write_ds_1.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/h2/init-write_ds_1.sql
@@ -16,5 +16,9 @@
 --
 
 DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
 
 CREATE TABLE t_order_item_federate (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_0 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_1 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/mysql/init.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/mysql/init.sql
index 0a64048..ffae036 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/mysql/init.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/mysql/init.sql
@@ -119,6 +119,8 @@ CREATE TABLE write_ds_1.t_order_9 (order_id INT NOT NULL, 
user_id INT NOT NULL,
 CREATE TABLE write_ds_1.t_order_item_9 (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, 
PRIMARY KEY (item_id));
 CREATE TABLE write_ds_1.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (id));
 CREATE TABLE write_ds_1.t_order_item_federate (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY 
(item_id));
+CREATE TABLE write_ds_1.t_order_item_federate_sharding_0 (item_id INT NOT 
NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE write_ds_1.t_order_item_federate_sharding_1 (item_id INT NOT 
NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX order_index_t_order_0 ON write_ds_1.t_order_0 (order_id);
 CREATE INDEX order_index_t_order_1 ON write_ds_1.t_order_1 (order_id);
 CREATE INDEX order_index_t_order_2 ON write_ds_1.t_order_2 (order_id);
@@ -442,6 +444,8 @@ CREATE TABLE read_ds_1.t_order_9 (order_id INT NOT NULL, 
user_id INT NOT NULL, s
 CREATE TABLE read_ds_1.t_order_item_9 (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, 
PRIMARY KEY (item_id));
 CREATE TABLE read_ds_1.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (id));
 CREATE TABLE read_ds_1.t_order_item_federate (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY 
(item_id));
+CREATE TABLE read_ds_1.t_order_item_federate_sharding_0 (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE read_ds_1.t_order_item_federate_sharding_1 (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX order_index_t_order_0 ON read_ds_1.t_order_0 (order_id);
 CREATE INDEX order_index_t_order_1 ON read_ds_1.t_order_1 (order_id);
 CREATE INDEX order_index_t_order_2 ON read_ds_1.t_order_2 (order_id);
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/oracle/init.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/oracle/init.sql
index f1bb14d..ae75990 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/oracle/init.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/oracle/init.sql
@@ -116,6 +116,8 @@ CREATE TABLE write_ds_1.t_order_9 (order_id INT NOT NULL, 
user_id INT NOT NULL,
 CREATE TABLE write_ds_1.t_order_item_9 (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, 
PRIMARY KEY (item_id));
 CREATE TABLE write_ds_1.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (id));
 CREATE TABLE write_ds_1.t_order_item_federate (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY 
(item_id));
+CREATE TABLE write_ds_1.t_order_item_federate_sharding_0 (item_id INT NOT 
NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE write_ds_1.t_order_item_federate_sharding_1 (item_id INT NOT 
NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX order_index_t_order_0 ON write_ds_1.t_order_0 (order_id);
 CREATE INDEX order_index_t_order_1 ON write_ds_1.t_order_1 (order_id);
 CREATE INDEX order_index_t_order_2 ON write_ds_1.t_order_2 (order_id);
@@ -439,6 +441,8 @@ CREATE TABLE read_ds_1.t_order_9 (order_id INT NOT NULL, 
user_id INT NOT NULL, s
 CREATE TABLE read_ds_1.t_order_item_9 (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, 
PRIMARY KEY (item_id));
 CREATE TABLE read_ds_1.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (id));
 CREATE TABLE read_ds_1.t_order_item_federate (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY 
(item_id));
+CREATE TABLE read_ds_1.t_order_item_federate_sharding_0 (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE read_ds_1.t_order_item_federate_sharding_1 (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX order_index_t_order_0 ON read_ds_1.t_order_0 (order_id);
 CREATE INDEX order_index_t_order_1 ON read_ds_1.t_order_1 (order_id);
 CREATE INDEX order_index_t_order_2 ON read_ds_1.t_order_2 (order_id);
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/postgresql/init.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/postgresql/init.sql
index 6b7b543..0391463 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/postgresql/init.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/postgresql/init.sql
@@ -141,6 +141,8 @@ DROP TABLE IF EXISTS t_order_9;
 DROP TABLE IF EXISTS t_order_item_9;
 DROP TABLE IF EXISTS t_broadcast_table;
 DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
 
 CREATE TABLE t_order_0 (order_id INT NOT NULL, user_id INT NOT NULL, status 
VARCHAR(45) NULL, PRIMARY KEY (order_id));
 CREATE TABLE t_order_item_0 (item_id INT NOT NULL, order_id INT NOT NULL, 
user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
@@ -164,6 +166,8 @@ CREATE TABLE t_order_9 (order_id INT NOT NULL, user_id INT 
NOT NULL, status VARC
 CREATE TABLE t_order_item_9 (item_id INT NOT NULL, order_id INT NOT NULL, 
user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
 CREATE TABLE t_broadcast_table (id INT NOT NULL, status VARCHAR(45) NULL, 
PRIMARY KEY (id));
 CREATE TABLE t_order_item_federate (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_0 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_1 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX order_index_t_order_0 ON t_order_0 (order_id);
 CREATE INDEX order_index_t_order_1 ON t_order_1 (order_id);
 CREATE INDEX order_index_t_order_2 ON t_order_2 (order_id);
@@ -707,6 +711,8 @@ DROP TABLE IF EXISTS t_order_9;
 DROP TABLE IF EXISTS t_order_item_9;
 DROP TABLE IF EXISTS t_broadcast_table;
 DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
 
 CREATE TABLE t_order_0 (order_id INT NOT NULL, user_id INT NOT NULL, status 
VARCHAR(45) NULL, PRIMARY KEY (order_id));
 CREATE TABLE t_order_item_0 (item_id INT NOT NULL, order_id INT NOT NULL, 
user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
@@ -730,6 +736,8 @@ CREATE TABLE t_order_9 (order_id INT NOT NULL, user_id INT 
NOT NULL, status VARC
 CREATE TABLE t_order_item_9 (item_id INT NOT NULL, order_id INT NOT NULL, 
user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
 CREATE TABLE t_broadcast_table (id INT NOT NULL, status VARCHAR(45) NULL, 
PRIMARY KEY (id));
 CREATE TABLE t_order_item_federate (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_0 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_1 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX order_index_t_order_0 ON t_order_0 (order_id);
 CREATE INDEX order_index_t_order_1 ON t_order_1 (order_id);
 CREATE INDEX order_index_t_order_2 ON t_order_2 (order_id);
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/sqlserver/init.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/sqlserver/init.sql
index 0e47134..b62a3cc 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/sqlserver/init.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/init-sql/sqlserver/init.sql
@@ -116,6 +116,8 @@ CREATE TABLE write_ds_1.t_order_9 (order_id INT NOT NULL, 
user_id INT NOT NULL,
 CREATE TABLE write_ds_1.t_order_item_9 (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, 
PRIMARY KEY (item_id));
 CREATE TABLE write_ds_1.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (id));
 CREATE TABLE write_ds_1.t_order_item_federate (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY 
(item_id));
+CREATE TABLE write_ds_1.t_order_item_federate_sharding_0 (item_id INT NOT 
NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE write_ds_1.t_order_item_federate_sharding_1 (item_id INT NOT 
NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX order_index_t_order_0 ON write_ds_1.t_order_0 (order_id);
 CREATE INDEX order_index_t_order_1 ON write_ds_1.t_order_1 (order_id);
 CREATE INDEX order_index_t_order_2 ON write_ds_1.t_order_2 (order_id);
@@ -439,6 +441,8 @@ CREATE TABLE read_ds_1.t_order_9 (order_id INT NOT NULL, 
user_id INT NOT NULL, s
 CREATE TABLE read_ds_1.t_order_item_9 (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, 
PRIMARY KEY (item_id));
 CREATE TABLE read_ds_1.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (id));
 CREATE TABLE read_ds_1.t_order_item_federate (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY 
(item_id));
+CREATE TABLE read_ds_1.t_order_item_federate_sharding_0 (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE read_ds_1.t_order_item_federate_sharding_1 (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX order_index_t_order_0 ON read_ds_1.t_order_0 (order_id);
 CREATE INDEX order_index_t_order_1 ON read_ds_1.t_order_1 (order_id);
 CREATE INDEX order_index_t_order_2 ON read_ds_1.t_order_2 (order_id);
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/rules.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/rules.yaml
index a8cf353..845f7f8 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/rules.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting/rules.yaml
@@ -51,6 +51,12 @@ rules:
         standard:
           shardingColumn: order_id
           shardingAlgorithmName: standard_test
+    t_order_item_federate_sharding:
+      actualDataNodes: pr_ds_1.t_order_item_federate_sharding_${0..1}
+      tableStrategy:
+        standard:
+          shardingColumn: item_id
+          shardingAlgorithmName: table_inline_item_id
   bindingTables:
     - t_order,t_order_item,t_order_details
   broadcastTables:
@@ -60,6 +66,10 @@ rules:
   shardingAlgorithms:
     standard_test:
       type: STANDARD_TEST
+    table_inline_item_id:
+      type: INLINE
+      props:
+        algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
   
   keyGenerators:
     constant:
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/dataset.xml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/dataset.xml
index 2b70f61..193ff81 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/dataset.xml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/dataset.xml
@@ -45,6 +45,13 @@
         <column name="user_id" type="numeric" />
         <column name="status" type="varchar" />
     </metadata>
+    <metadata 
data-nodes="encrypt_write_ds_1.t_order_item_federate_sharding_${0..1},encrypt_read_ds_1.t_order_item_federate_sharding_${0..1}">
+        <column name="item_id" type="numeric" />
+        <column name="order_id" type="numeric" />
+        <column name="user_id" type="numeric" />
+        <column name="status" type="varchar" />
+        <column name="remarks" type="varchar" />
+    </metadata>
     <row data-node="encrypt_write_ds_0.t_single_table" values="1, 0, init" />
     <row data-node="encrypt_write_ds_0.t_single_table" values="2, 11, init" />
     <row data-node="encrypt_write_ds_0.t_single_table" values="3, 22, init" />
@@ -255,6 +262,10 @@
     <row data-node="encrypt_write_ds_1.t_order_item_federate" values="100001, 
1000, 10, init" />
     <row data-node="encrypt_write_ds_1.t_order_item_federate" values="100100, 
1001, 10, init" />
     <row data-node="encrypt_write_ds_1.t_order_item_federate" values="100101, 
1001, 10, init" />
+    <row data-node="encrypt_write_ds_1.t_order_item_federate_sharding_0" 
values="1000, 10000, 10, init, t_order_item_federate_sharding" />
+    <row data-node="encrypt_write_ds_1.t_order_item_federate_sharding_0" 
values="1010, 10001, 10, init, t_order_item_federate_sharding" />
+    <row data-node="encrypt_write_ds_1.t_order_item_federate_sharding_1" 
values="1001, 10001, 11, init, t_order_item_federate_sharding" />
+    <row data-node="encrypt_write_ds_1.t_order_item_federate_sharding_1" 
values="1011, 10001, 10, init, t_order_item_federate_sharding" />
     <row data-node="encrypt_read_ds_0.t_single_table" values="1, 0, init_read" 
/>
     <row data-node="encrypt_read_ds_0.t_single_table" values="2, 11, 
init_read" />
     <row data-node="encrypt_read_ds_0.t_single_table" values="3, 22, 
init_read" />
@@ -465,4 +476,8 @@
     <row data-node="encrypt_read_ds_1.t_order_item_federate" values="100001, 
1000, 10, init" />
     <row data-node="encrypt_read_ds_1.t_order_item_federate" values="100100, 
1001, 10, init" />
     <row data-node="encrypt_read_ds_1.t_order_item_federate" values="100101, 
1001, 10, init" />
+    <row data-node="encrypt_read_ds_1.t_order_item_federate_sharding_0" 
values="1000, 10000, 10, init, t_order_item_federate_sharding" />
+    <row data-node="encrypt_read_ds_1.t_order_item_federate_sharding_0" 
values="1010, 10001, 10, init, t_order_item_federate_sharding" />
+    <row data-node="encrypt_read_ds_1.t_order_item_federate_sharding_1" 
values="1001, 10001, 11, init, t_order_item_federate_sharding" />
+    <row data-node="encrypt_read_ds_1.t_order_item_federate_sharding_1" 
values="1011, 10001, 10, init, t_order_item_federate_sharding" />
 </dataset>
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/h2/init-encrypt_read_ds_1.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/h2/init-encrypt_read_ds_1.sql
index 25dda09..ba2ae9a 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/h2/init-encrypt_read_ds_1.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/h2/init-encrypt_read_ds_1.sql
@@ -16,5 +16,9 @@
 --
 
 DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
 
 CREATE TABLE t_order_item_federate (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_0 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_1 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/h2/init-encrypt_write_ds_1.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/h2/init-encrypt_write_ds_1.sql
index 25dda09..ba2ae9a 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/h2/init-encrypt_write_ds_1.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/h2/init-encrypt_write_ds_1.sql
@@ -16,5 +16,9 @@
 --
 
 DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
 
 CREATE TABLE t_order_item_federate (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_0 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_1 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/mysql/init.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/mysql/init.sql
index d585aae..48b3250 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/mysql/init.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/mysql/init.sql
@@ -117,6 +117,8 @@ CREATE TABLE encrypt_write_ds_1.t_user_item_8 (item_id INT 
NOT NULL, user_id INT
 CREATE TABLE encrypt_write_ds_1.t_user_9 (user_id INT NOT NULL, address_id INT 
NOT NULL, pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status 
VARCHAR(45) NULL, PRIMARY KEY (user_id));
 CREATE TABLE encrypt_write_ds_1.t_user_item_9 (item_id INT NOT NULL, user_id 
INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
 CREATE TABLE encrypt_write_ds_1.t_order_item_federate (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY 
KEY (item_id));
+CREATE TABLE encrypt_write_ds_1.t_order_item_federate_sharding_0 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE encrypt_write_ds_1.t_order_item_federate_sharding_1 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX user_index_t_user_0 ON encrypt_write_ds_1.t_user_0 (user_id);
 CREATE INDEX user_index_t_user_1 ON encrypt_write_ds_1.t_user_1 (user_id);
 CREATE INDEX user_index_t_user_2 ON encrypt_write_ds_1.t_user_2 (user_id);
@@ -430,6 +432,8 @@ CREATE TABLE encrypt_read_ds_1.t_user_item_8 (item_id INT 
NOT NULL, user_id INT
 CREATE TABLE encrypt_read_ds_1.t_user_9 (user_id INT NOT NULL, address_id INT 
NOT NULL, pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status 
VARCHAR(45) NULL, PRIMARY KEY (user_id));
 CREATE TABLE encrypt_read_ds_1.t_user_item_9 (item_id INT NOT NULL, user_id 
INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
 CREATE TABLE encrypt_read_ds_1.t_order_item_federate (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY 
KEY (item_id));
+CREATE TABLE encrypt_read_ds_1.t_order_item_federate_sharding_0 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE encrypt_read_ds_1.t_order_item_federate_sharding_1 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX user_index_t_user_0 ON encrypt_read_ds_1.t_user_0 (user_id);
 CREATE INDEX user_index_t_user_1 ON encrypt_read_ds_1.t_user_1 (user_id);
 CREATE INDEX user_index_t_user_2 ON encrypt_read_ds_1.t_user_2 (user_id);
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/oracle/init.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/oracle/init.sql
index 3789f48..e0e4354 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/oracle/init.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/oracle/init.sql
@@ -114,6 +114,8 @@ CREATE TABLE encrypt_write_ds_1.t_user_item_8 (item_id INT 
NOT NULL, user_id INT
 CREATE TABLE encrypt_write_ds_1.t_user_9 (user_id INT NOT NULL, address_id INT 
NOT NULL, pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status 
VARCHAR(45) NULL, PRIMARY KEY (user_id));
 CREATE TABLE encrypt_write_ds_1.t_user_item_9 (item_id INT NOT NULL, user_id 
INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
 CREATE TABLE encrypt_write_ds_1.t_order_item_federate (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY 
KEY (item_id));
+CREATE TABLE encrypt_write_ds_1.t_order_item_federate_sharding_0 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE encrypt_write_ds_1.t_order_item_federate_sharding_1 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX user_index_t_user_0 ON encrypt_write_ds_1.t_user_0 (user_id);
 CREATE INDEX user_index_t_user_1 ON encrypt_write_ds_1.t_user_1 (user_id);
 CREATE INDEX user_index_t_user_2 ON encrypt_write_ds_1.t_user_2 (user_id);
@@ -427,6 +429,8 @@ CREATE TABLE encrypt_read_ds_1.t_user_item_8 (item_id INT 
NOT NULL, user_id INT
 CREATE TABLE encrypt_read_ds_1.t_user_9 (user_id INT NOT NULL, address_id INT 
NOT NULL, pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status 
VARCHAR(45) NULL, PRIMARY KEY (user_id));
 CREATE TABLE encrypt_read_ds_1.t_user_item_9 (item_id INT NOT NULL, user_id 
INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
 CREATE TABLE encrypt_read_ds_1.t_order_item_federate (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY 
KEY (item_id));
+CREATE TABLE encrypt_read_ds_1.t_order_item_federate_sharding_0 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE encrypt_read_ds_1.t_order_item_federate_sharding_1 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX user_index_t_user_0 ON encrypt_read_ds_1.t_user_0 (user_id);
 CREATE INDEX user_index_t_user_1 ON encrypt_read_ds_1.t_user_1 (user_id);
 CREATE INDEX user_index_t_user_2 ON encrypt_read_ds_1.t_user_2 (user_id);
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/postgresql/init.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/postgresql/init.sql
index a2dfddb..52b0ea6 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/postgresql/init.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/postgresql/init.sql
@@ -138,6 +138,8 @@ DROP TABLE IF EXISTS t_user_item_8;
 DROP TABLE IF EXISTS t_user_9;
 DROP TABLE IF EXISTS t_user_item_9;
 DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
 
 CREATE TABLE t_user_0 (user_id INT NOT NULL, address_id INT NOT NULL, 
pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (user_id));
 CREATE TABLE t_user_item_0 (item_id INT NOT NULL, user_id INT NOT NULL, status 
VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY (item_id));
@@ -160,6 +162,8 @@ CREATE TABLE t_user_item_8 (item_id INT NOT NULL, user_id 
INT NOT NULL, status V
 CREATE TABLE t_user_9 (user_id INT NOT NULL, address_id INT NOT NULL, 
pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (user_id));
 CREATE TABLE t_user_item_9 (item_id INT NOT NULL, user_id INT NOT NULL, status 
VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY (item_id));
 CREATE TABLE t_order_item_federate (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_0 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_1 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX user_index_t_user_0 ON t_user_0 (user_id);
 CREATE INDEX user_index_t_user_1 ON t_user_1 (user_id);
 CREATE INDEX user_index_t_user_2 ON t_user_2 (user_id);
@@ -684,6 +688,8 @@ DROP TABLE IF EXISTS t_user_item_8;
 DROP TABLE IF EXISTS t_user_9;
 DROP TABLE IF EXISTS t_user_item_9;
 DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
 
 CREATE TABLE t_user_0 (user_id INT NOT NULL, address_id INT NOT NULL, 
pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (user_id));
 CREATE TABLE t_user_item_0 (item_id INT NOT NULL, user_id INT NOT NULL, status 
VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY (item_id));
@@ -706,6 +712,8 @@ CREATE TABLE t_user_item_8 (item_id INT NOT NULL, user_id 
INT NOT NULL, status V
 CREATE TABLE t_user_9 (user_id INT NOT NULL, address_id INT NOT NULL, 
pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status VARCHAR(45) 
NULL, PRIMARY KEY (user_id));
 CREATE TABLE t_user_item_9 (item_id INT NOT NULL, user_id INT NOT NULL, status 
VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY (item_id));
 CREATE TABLE t_order_item_federate (item_id INT NOT NULL, order_id INT NOT 
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_0 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE t_order_item_federate_sharding_1 (item_id INT NOT NULL, order_id 
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, remarks 
VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX user_index_t_user_0 ON t_user_0 (user_id);
 CREATE INDEX user_index_t_user_1 ON t_user_1 (user_id);
 CREATE INDEX user_index_t_user_2 ON t_user_2 (user_id);
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/sqlserver/init.sql
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/sqlserver/init.sql
index 5bbc0b3..8e2035d 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/sqlserver/init.sql
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/init-sql/sqlserver/init.sql
@@ -114,6 +114,8 @@ CREATE TABLE encrypt_write_ds_1.t_user_item_8 (item_id INT 
NOT NULL, user_id INT
 CREATE TABLE encrypt_write_ds_1.t_user_9 (user_id INT NOT NULL, address_id INT 
NOT NULL, pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status 
VARCHAR(45) NULL, PRIMARY KEY (user_id));
 CREATE TABLE encrypt_write_ds_1.t_user_item_9 (item_id INT NOT NULL, user_id 
INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
 CREATE TABLE encrypt_write_ds_1.t_order_item_federate (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY 
KEY (item_id));
+CREATE TABLE encrypt_write_ds_1.t_order_item_federate_sharding_0 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE encrypt_write_ds_1.t_order_item_federate_sharding_1 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX user_index_t_user_0 ON encrypt_write_ds_1.t_user_0 (user_id);
 CREATE INDEX user_index_t_user_1 ON encrypt_write_ds_1.t_user_1 (user_id);
 CREATE INDEX user_index_t_user_2 ON encrypt_write_ds_1.t_user_2 (user_id);
@@ -427,6 +429,8 @@ CREATE TABLE encrypt_read_ds_1.t_user_item_8 (item_id INT 
NOT NULL, user_id INT
 CREATE TABLE encrypt_read_ds_1.t_user_9 (user_id INT NOT NULL, address_id INT 
NOT NULL, pwd_plain VARCHAR(45) NULL, pwd_cipher VARCHAR(45) NULL, status 
VARCHAR(45) NULL, PRIMARY KEY (user_id));
 CREATE TABLE encrypt_read_ds_1.t_user_item_9 (item_id INT NOT NULL, user_id 
INT NOT NULL, status VARCHAR(45) NULL, creation_date DATE, PRIMARY KEY 
(item_id));
 CREATE TABLE encrypt_read_ds_1.t_order_item_federate (item_id INT NOT NULL, 
order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY 
KEY (item_id));
+CREATE TABLE encrypt_read_ds_1.t_order_item_federate_sharding_0 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
+CREATE TABLE encrypt_read_ds_1.t_order_item_federate_sharding_1 (item_id INT 
NOT NULL, order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, 
remarks VARCHAR(45) NULL, PRIMARY KEY (item_id));
 CREATE INDEX user_index_t_user_0 ON encrypt_read_ds_1.t_user_0 (user_id);
 CREATE INDEX user_index_t_user_1 ON encrypt_read_ds_1.t_user_1 (user_id);
 CREATE INDEX user_index_t_user_2 ON encrypt_read_ds_1.t_user_2 (user_id);
diff --git 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/rules.yaml
 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/rules.yaml
index be29b50..37e9fa6 100644
--- 
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/rules.yaml
+++ 
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/dbtbl_with_readwrite_splitting_and_encrypt/rules.yaml
@@ -54,12 +54,22 @@ rules:
         standard:
           shardingColumn: user_id
           shardingAlgorithmName: standard_test
+    t_order_item_federate_sharding:
+      actualDataNodes: pr_ds_1.t_order_item_federate_sharding_${0..1}
+      tableStrategy:
+        standard:
+          shardingColumn: item_id
+          shardingAlgorithmName: table_inline_item_id
   bindingTables:
     - t_user,t_user_item,t_user_details
 
   shardingAlgorithms:
     standard_test:
       type: STANDARD_TEST
+    table_inline_item_id:
+      type: INLINE
+      props:
+        algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
   
   keyGenerators:
     constant:

Reply via email to