This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 c8485e2 Refactor SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES
statement with shardingsphere-integration-test (#11999)
c8485e2 is described below
commit c8485e2ae8c775911b9d3f07cb9b503e9312984b
Author: liguoping <[email protected]>
AuthorDate: Thu Aug 26 07:57:54 2021 +0800
Refactor SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES statement with
shardingsphere-integration-test (#11999)
* Refactor SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES statement with
shardingsphere-integration-test in env db
* Refactor SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES statement with
shardingsphere-integration-test in env dbtbl_with_readwrite_splitting
* Refactor SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES statement with
shardingsphere-integration-test in env
dbtbl_with_readwrite_splitting_and_encrypt
* Refactor SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES statement with
shardingsphere-integration-test in env tbl
* remove SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES l
* docker
---
.../statement/FederatePrepareStatementTest.java | 29 ----------------------
.../jdbc/core/statement/FederateStatementTest.java | 27 --------------------
...select_sql_by_id_across_two_sharding_tables.xml | 25 +++++++++++++++++++
...select_sql_by_id_across_two_sharding_tables.xml | 25 +++++++++++++++++++
...select_sql_by_id_across_two_sharding_tables.xml | 25 +++++++++++++++++++
...select_sql_by_id_across_two_sharding_tables.xml | 25 +++++++++++++++++++
.../cases/dql/dql-integration-test-cases.xml | 8 ++++++
.../docker/db/h2/proxy/conf/config-db.yaml | 20 +++++++++++++++
.../docker/db/mysql/proxy/conf/config-db.yaml | 20 +++++++++++++++
.../docker/db/postgresql/proxy/conf/config-db.yaml | 20 +++++++++++++++
.../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 ++++++++
.../docker/tbl/h2/proxy/conf/config-tbl.yaml | 10 ++++++++
.../docker/tbl/mysql/proxy/conf/config-tbl.yaml | 10 ++++++++
.../tbl/postgresql/proxy/conf/config-tbl.yaml | 10 ++++++++
.../src/test/resources/env/db/dataset.xml | 20 +++++++++++++++
.../resources/env/db/init-sql/h2/init-db_0.sql | 4 +++
.../resources/env/db/init-sql/h2/init-db_1.sql | 4 +++
.../test/resources/env/db/init-sql/mysql/init.sql | 4 +++
.../test/resources/env/db/init-sql/oracle/init.sql | 4 +++
.../resources/env/db/init-sql/postgresql/init.sql | 8 ++++++
.../resources/env/db/init-sql/sqlserver/init.sql | 4 +++
.../src/test/resources/env/db/rules.yaml | 21 ++++++++++++++++
.../env/dbtbl_with_readwrite_splitting/dataset.xml | 13 ++++++++++
.../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 | 13 ++++++++++
.../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 | 12 ++++++++-
.../src/test/resources/env/tbl/dataset.xml | 11 ++++++++
.../test/resources/env/tbl/init-sql/h2/init.sql | 4 +++
.../test/resources/env/tbl/init-sql/mysql/init.sql | 2 ++
.../resources/env/tbl/init-sql/oracle/init.sql | 2 ++
.../resources/env/tbl/init-sql/postgresql/init.sql | 6 +++++
.../resources/env/tbl/init-sql/sqlserver/init.sql | 2 ++
.../src/test/resources/env/tbl/rules.yaml | 10 ++++++++
50 files changed, 467 insertions(+), 57 deletions(-)
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/FederatePrepareStatementTest.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/FederatePrepareStatementTest.java
index 48dfec9..4a1a74a 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/FederatePrepareStatementTest.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/FederatePrepareStatementTest.java
@@ -50,10 +50,6 @@ public final class FederatePrepareStatementTest extends
AbstractShardingSphereDa
"select t_user_encrypt_federate_sharding.user_id,
t_user_encrypt_federate_sharding.pwd, t_user_info.information from
t_user_encrypt_federate_sharding, t_user_info "
+ "where t_user_encrypt_federate_sharding.user_id =
t_user_info.user_id and t_user_encrypt_federate_sharding.user_id > ? ";
- private static final String SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES =
- "select o.order_id_sharding, i.order_id from
t_order_federate_sharding o, t_order_item_federate_sharding i "
- + "where o.order_id_sharding = i.item_id and i.order_id >
?";
-
@Test
public void
assertQueryWithFederateInSingleAndShardingTableWithAliasByExecuteQuery() throws
SQLException {
assertQueryWithFederateInSingleAndShardingTableWithAlias(true);
@@ -167,30 +163,5 @@ public final class FederatePrepareStatementTest extends
AbstractShardingSphereDa
assertThat(resultSet.getString(3), is("description3"));
assertFalse(resultSet.next());
}
-
- @Test
- public void
assertQueryWithFederateBetweenTwoShardingTablesByExecuteQuery() throws
SQLException {
- assertQueryWithFederateBetweenTwoShardingTables(true);
- }
-
- @Test
- public void assertQueryWithFederateBetweenTwoShardingTablesByExecute()
throws SQLException {
- assertQueryWithFederateBetweenTwoShardingTables(false);
- }
-
- private void assertQueryWithFederateBetweenTwoShardingTables(final boolean
executeQuery) throws SQLException {
- ShardingSpherePreparedStatement preparedStatement =
(ShardingSpherePreparedStatement) getShardingSphereDataSource()
-
.getConnection().prepareStatement(SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES);
- preparedStatement.setInt(1, 10000);
- ResultSet resultSet = getResultSet(preparedStatement, executeQuery);
- assertNotNull(resultSet);
- assertTrue(resultSet.next());
- assertThat(resultSet.getInt(1), is(1010));
- assertThat(resultSet.getInt(2), is(10001));
- assertTrue(resultSet.next());
- assertThat(resultSet.getInt(1), is(1011));
- assertThat(resultSet.getInt(2), is(10001));
- assertFalse(resultSet.next());
- }
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/FederateStatementTest.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/FederateStatementTest.java
index cb66889..905f98a 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/FederateStatementTest.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/test/java/org/apache/shardingsphere/driver/jdbc/core/statement/FederateStatementTest.java
@@ -53,10 +53,6 @@ public final class FederateStatementTest extends
AbstractShardingSphereDataSourc
"select t_user_encrypt_federate_sharding.user_id,
t_user_encrypt_federate_sharding.pwd, t_user_info.information from
t_user_encrypt_federate_sharding, t_user_info "
+ "where t_user_encrypt_federate_sharding.user_id =
t_user_info.user_id ";
- private static final String SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES =
- "select o.order_id_sharding, i.order_id from
t_order_federate_sharding o, t_order_item_federate_sharding i "
- + "where o.order_id_sharding = i.item_id";
-
@Test
public void
assertQueryWithFederateInSingleAndShardingTableWithAliasByExecuteQuery() throws
SQLException {
assertQueryWithFederateInSingleAndShardingTableWithAlias(true);
@@ -205,28 +201,5 @@ public final class FederateStatementTest extends
AbstractShardingSphereDataSourc
assertThat(resultSet.getString(3), is("description3"));
assertFalse(resultSet.next());
}
-
- @Test
- public void
assertQueryWithFederateBetweenTwoShardingTablesByExecuteQuery() throws
SQLException {
- assertQueryWithFederateBetweenTwoShardingTables(true);
- }
-
- @Test
- public void assertQueryWithFederateBetweenTwoShardingTablesByExecute()
throws SQLException {
- assertQueryWithFederateBetweenTwoShardingTables(false);
- }
-
- private void assertQueryWithFederateBetweenTwoShardingTables(final boolean
executeQuery) throws SQLException {
- ShardingSphereStatement statement = (ShardingSphereStatement)
getShardingSphereDataSource().getConnection().createStatement();
- ResultSet resultSet = getResultSet(statement,
SELECT_SQL_BY_ID_ACROSS_TWO_SHARDING_TABLES, executeQuery);
- assertNotNull(resultSet);
- assertTrue(resultSet.next());
- assertThat(resultSet.getInt(1), is(1010));
- assertThat(resultSet.getInt(2), is(10001));
- assertTrue(resultSet.next());
- assertThat(resultSet.getInt(1), is(1011));
- assertThat(resultSet.getInt(2), is(10001));
- assertFalse(resultSet.next());
- }
}
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/db/select_sql_by_id_across_two_sharding_tables.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/db/select_sql_by_id_across_two_sharding_tables.xml
new file mode 100644
index 0000000..7adca2d
--- /dev/null
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/db/select_sql_by_id_across_two_sharding_tables.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ 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="order_id_sharding" />
+ <column name="order_id" />
+ </metadata>
+ <row values="1010, 10001" />
+ <row values="1011, 10001" />
+</dataset>
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting/select_sql_by_id_across_two_sharding_tables.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting/select_sql_by_id_across_two_sharding_tables.xml
new file mode 100644
index 0000000..7adca2d
--- /dev/null
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting/select_sql_by_id_across_two_sharding_tables.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ 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="order_id_sharding" />
+ <column name="order_id" />
+ </metadata>
+ <row values="1010, 10001" />
+ <row values="1011, 10001" />
+</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_sql_by_id_across_two_sharding_tables.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/dbtbl_with_readwrite_splitting_and_encrypt/select_sql_by_id_across_two_sharding_tables.xml
new file mode 100644
index 0000000..7adca2d
--- /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_sql_by_id_across_two_sharding_tables.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ 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="order_id_sharding" />
+ <column name="order_id" />
+ </metadata>
+ <row values="1010, 10001" />
+ <row values="1011, 10001" />
+</dataset>
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/tbl/select_sql_by_id_across_two_sharding_tables.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/tbl/select_sql_by_id_across_two_sharding_tables.xml
new file mode 100644
index 0000000..7adca2d
--- /dev/null
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/tbl/select_sql_by_id_across_two_sharding_tables.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ 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="order_id_sharding" />
+ <column name="order_id" />
+ </metadata>
+ <row values="1010, 10001" />
+ <row values="1011, 10001" />
+</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 baffa9e..23f1445 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
@@ -571,5 +571,13 @@
<test-case sql="SELECT SUM(CRC32(`order_id`)) FROM t_order WHERE order_id
= ?" db-types="MySQL" scenario-types="db,tbl">
<assertion parameters="1000:int"
expected-data-file="select_with_aggregation_function_and_back_quote_for_mysql.xml"
/>
</test-case>
+
+ <test-case sql="select o.order_id_sharding, i.order_id from
t_order_federate_sharding o, t_order_item_federate_sharding i where
o.order_id_sharding = i.item_id"
scenario-types="db,tbl,dbtbl_with_readwrite_splitting,dbtbl_with_readwrite_splitting_and_encrypt">
+ <assertion
expected-data-file="select_sql_by_id_across_two_sharding_tables.xml" />
+ </test-case>
+
+ <test-case sql="select o.order_id_sharding, i.order_id from
t_order_federate_sharding o, t_order_item_federate_sharding i where
o.order_id_sharding = i.item_id and i.order_id > ?"
scenario-types="db,tbl,dbtbl_with_readwrite_splitting,dbtbl_with_readwrite_splitting_and_encrypt">
+ <assertion parameters="10000:int"
expected-data-file="select_sql_by_id_across_two_sharding_tables.xml" />
+ </test-case>
</integration-test-cases>
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/h2/proxy/conf/config-db.yaml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/h2/proxy/conf/config-db.yaml
index fcf38f4..542ca75 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/h2/proxy/conf/config-db.yaml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/h2/proxy/conf/config-db.yaml
@@ -133,6 +133,18 @@ rules:
standard:
shardingColumn: user_id
shardingAlgorithmName: standard_test
+ t_order_federate_sharding:
+ actualDataNodes: ds_${0..1}.t_order_federate_sharding
+ databaseStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: db_inline_order_id
+ t_order_item_federate_sharding:
+ actualDataNodes: ds_${0..1}.t_order_item_federate_sharding
+ databaseStrategy:
+ standard:
+ shardingColumn: item_id
+ shardingAlgorithmName: db_inline_item_id
bindingTables:
- t_order,t_order_item,t_order_details
broadcastTables:
@@ -141,6 +153,14 @@ rules:
shardingAlgorithms:
standard_test:
type: STANDARD_TEST
+ db_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: db_${order_id_sharding %
2}.t_order_federate_sharding
+ db_inline_item_id:
+ type: INLINE
+ props:
+ algorithm-expression: db_${db_inline_item_id %
2}.t_order_item_federate_sharding
keyGenerators:
constant:
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/mysql/proxy/conf/config-db.yaml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/mysql/proxy/conf/config-db.yaml
index 7c33a8d..ea2d9a5 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/mysql/proxy/conf/config-db.yaml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/mysql/proxy/conf/config-db.yaml
@@ -133,6 +133,18 @@ rules:
standard:
shardingColumn: user_id
shardingAlgorithmName: standard_test
+ t_order_federate_sharding:
+ actualDataNodes: ds_${0..1}.t_order_federate_sharding
+ databaseStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: db_inline_order_id
+ t_order_item_federate_sharding:
+ actualDataNodes: ds_${0..1}.t_order_item_federate_sharding
+ databaseStrategy:
+ standard:
+ shardingColumn: item_id
+ shardingAlgorithmName: db_inline_item_id
bindingTables:
- t_order,t_order_item,t_order_details
broadcastTables:
@@ -141,6 +153,14 @@ rules:
shardingAlgorithms:
standard_test:
type: STANDARD_TEST
+ db_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: db_${order_id_sharding %
2}.t_order_federate_sharding
+ db_inline_item_id:
+ type: INLINE
+ props:
+ algorithm-expression: db_${db_inline_item_id %
2}.t_order_item_federate_sharding
keyGenerators:
constant:
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/postgresql/proxy/conf/config-db.yaml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/postgresql/proxy/conf/config-db.yaml
index 69d3c56..670ac60 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/postgresql/proxy/conf/config-db.yaml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/db/postgresql/proxy/conf/config-db.yaml
@@ -133,6 +133,18 @@ rules:
standard:
shardingColumn: user_id
shardingAlgorithmName: standard_test
+ t_order_federate_sharding:
+ actualDataNodes: ds_${0..1}.t_order_federate_sharding
+ databaseStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: db_inline_order_id
+ t_order_item_federate_sharding:
+ actualDataNodes: ds_${0..1}.t_order_item_federate_sharding
+ databaseStrategy:
+ standard:
+ shardingColumn: item_id
+ shardingAlgorithmName: db_inline_item_id
bindingTables:
- t_order,t_order_item,t_order_details
broadcastTables:
@@ -141,6 +153,14 @@ rules:
shardingAlgorithms:
standard_test:
type: STANDARD_TEST
+ db_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: db_${order_id_sharding %
2}.t_order_federate_sharding
+ db_inline_item_id:
+ type: INLINE
+ props:
+ algorithm-expression: db_${db_inline_item_id %
2}.t_order_item_federate_sharding
keyGenerators:
constant:
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 f1847e5..9f7e176 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
@@ -241,6 +241,12 @@ rules:
standard:
shardingColumn: item_id
shardingAlgorithmName: table_inline_item_id
+ t_order_federate_sharding:
+ actualDataNodes: pr_ds_1.t_order_federate_sharding_${0..1}
+ tableStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: table_inline_order_id
bindingTables:
- t_order,t_order_item,t_order_details
broadcastTables:
@@ -253,6 +259,10 @@ rules:
type: INLINE
props:
algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
+ table_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_federate_sharding_${order_id_sharding %
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 f1847e5..9f7e176 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
@@ -241,6 +241,12 @@ rules:
standard:
shardingColumn: item_id
shardingAlgorithmName: table_inline_item_id
+ t_order_federate_sharding:
+ actualDataNodes: pr_ds_1.t_order_federate_sharding_${0..1}
+ tableStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: table_inline_order_id
bindingTables:
- t_order,t_order_item,t_order_details
broadcastTables:
@@ -253,6 +259,10 @@ rules:
type: INLINE
props:
algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
+ table_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_federate_sharding_${order_id_sharding %
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 035d21c..44c5e32 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
@@ -241,6 +241,12 @@ rules:
standard:
shardingColumn: item_id
shardingAlgorithmName: table_inline_item_id
+ t_order_federate_sharding:
+ actualDataNodes: pr_ds_1.t_order_federate_sharding_${0..1}
+ tableStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: table_inline_order_id
bindingTables:
- t_order,t_order_item,t_order_details
broadcastTables:
@@ -253,6 +259,10 @@ rules:
type: INLINE
props:
algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
+ table_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_federate_sharding_${order_id_sharding %
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 48e6d09..284a4a5 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
@@ -244,6 +244,12 @@ rules:
standard:
shardingColumn: item_id
shardingAlgorithmName: table_inline_item_id
+ t_order_federate_sharding:
+ actualDataNodes: pr_ds_1.t_order_federate_sharding_${0..1}
+ tableStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: table_inline_order_id
bindingTables:
- t_user,t_user_item,t_user_details
@@ -254,6 +260,10 @@ rules:
type: INLINE
props:
algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
+ table_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_federate_sharding_${order_id_sharding %
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 48e6d09..284a4a5 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
@@ -244,6 +244,12 @@ rules:
standard:
shardingColumn: item_id
shardingAlgorithmName: table_inline_item_id
+ t_order_federate_sharding:
+ actualDataNodes: pr_ds_1.t_order_federate_sharding_${0..1}
+ tableStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: table_inline_order_id
bindingTables:
- t_user,t_user_item,t_user_details
@@ -254,6 +260,10 @@ rules:
type: INLINE
props:
algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
+ table_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_federate_sharding_${order_id_sharding %
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 5bd77d8..81adb51 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
@@ -244,6 +244,12 @@ rules:
standard:
shardingColumn: item_id
shardingAlgorithmName: table_inline_item_id
+ t_order_federate_sharding:
+ actualDataNodes: pr_ds_1.t_order_federate_sharding_${0..1}
+ tableStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: table_inline_order_id
bindingTables:
- t_user,t_user_item,t_user_details
@@ -254,6 +260,10 @@ rules:
type: INLINE
props:
algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
+ table_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_federate_sharding_${order_id_sharding %
2}
keyGenerators:
constant:
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/h2/proxy/conf/config-tbl.yaml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/h2/proxy/conf/config-tbl.yaml
index 7092aa5..3341fa8 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/h2/proxy/conf/config-tbl.yaml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/h2/proxy/conf/config-tbl.yaml
@@ -58,6 +58,12 @@ rules:
standard:
shardingColumn: order_id_sharding
shardingAlgorithmName: table_inline_order_id
+ t_order_item_federate_sharding:
+ actualDataNodes: tbl.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:
@@ -67,6 +73,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}
table_inline_order_id:
type: INLINE
props:
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/mysql/proxy/conf/config-tbl.yaml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/mysql/proxy/conf/config-tbl.yaml
index 7092aa5..3341fa8 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/mysql/proxy/conf/config-tbl.yaml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/mysql/proxy/conf/config-tbl.yaml
@@ -58,6 +58,12 @@ rules:
standard:
shardingColumn: order_id_sharding
shardingAlgorithmName: table_inline_order_id
+ t_order_item_federate_sharding:
+ actualDataNodes: tbl.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:
@@ -67,6 +73,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}
table_inline_order_id:
type: INLINE
props:
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/postgresql/proxy/conf/config-tbl.yaml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/postgresql/proxy/conf/config-tbl.yaml
index ae808ac..e21cff1 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/postgresql/proxy/conf/config-tbl.yaml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/docker/tbl/postgresql/proxy/conf/config-tbl.yaml
@@ -58,6 +58,12 @@ rules:
standard:
shardingColumn: order_id_sharding
shardingAlgorithmName: table_inline_order_id
+ t_order_item_federate_sharding:
+ actualDataNodes: tbl.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:
@@ -67,6 +73,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}
table_inline_order_id:
type: INLINE
props:
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/dataset.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/dataset.xml
index 600d1cc..ad2e787 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/dataset.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/dataset.xml
@@ -48,6 +48,18 @@
<column name="user_id" type="numeric" />
<column name="status" type="varchar" />
</metadata>
+ <metadata data-nodes="db_${0..1}.t_order_federate_sharding">
+ <column name="order_id_sharding" type="numeric" />
+ <column name="user_id" type="numeric" />
+ <column name="status" type="varchar" />
+ </metadata>
+ <metadata data-nodes="db_${0..1}.t_order_item_federate_sharding">
+ <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="db_0.t_single_table" values="1, 1000, init" />
<row data-node="db_0.t_single_table" values="2, 1101, init" />
<row data-node="db_0.t_single_table" values="3, 2300, init" />
@@ -188,4 +200,12 @@
<row data-node="db_1.t_order_item_federate" values="100001, 1000, 10,
init" />
<row data-node="db_1.t_order_item_federate" values="100100, 1001, 10,
init" />
<row data-node="db_1.t_order_item_federate" values="100101, 1001, 10,
init" />
+ <row data-node="db_0.t_order_federate_sharding" values="1010, 10, init" />
+ <row data-node="db_0.t_order_federate_sharding" values="1100, 10, init" />
+ <row data-node="db_1.t_order_federate_sharding" values="1011, 11, init" />
+ <row data-node="db_1.t_order_federate_sharding" values="1101, 11, init" />
+ <row data-node="db_0.t_order_item_federate_sharding" values="1000, 10000,
10, init, t_order_item_federate_sharding" />
+ <row data-node="db_0.t_order_item_federate_sharding" values="1010, 10001,
10, init, t_order_item_federate_sharding" />
+ <row data-node="db_1.t_order_item_federate_sharding" values="1001, 10001,
11, init, t_order_item_federate_sharding" />
+ <row data-node="db_1.t_order_item_federate_sharding" 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/db/init-sql/h2/init-db_0.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/h2/init-db_0.sql
index 6b4bc7b..3c33df4 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/h2/init-db_0.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/h2/init-db_0.sql
@@ -16,7 +16,11 @@
--
DROP TABLE IF EXISTS t_order_federate;
+DROP TABLE IF EXISTS t_order_federate_sharding;
+DROP TABLE IF EXISTS t_order_item_federate_sharding;
DROP TABLE IF EXISTS t_single_table;
CREATE TABLE t_order_federate (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
+CREATE TABLE t_order_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_item_federate_sharding (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_single_table (single_id INT NOT NULL, id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (single_id));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/h2/init-db_1.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/h2/init-db_1.sql
index 25dda09..eea3635 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/h2/init-db_1.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/h2/init-db_1.sql
@@ -16,5 +16,9 @@
--
DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_federate_sharding;
+DROP TABLE IF EXISTS t_order_item_federate_sharding;
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_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_item_federate_sharding (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/db/init-sql/mysql/init.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/mysql/init.sql
index 35d2459..2ea630e 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/mysql/init.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/mysql/init.sql
@@ -48,12 +48,16 @@ CREATE TABLE db_0.t_order_item (item_id INT NOT NULL,
order_id INT NOT NULL, use
CREATE TABLE db_0.t_single_table (single_id INT NOT NULL, id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (single_id));
CREATE TABLE db_0.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) NULL,
PRIMARY KEY (id));
CREATE TABLE db_0.t_order_federate (order_id INT NOT NULL, user_id INT NOT
NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id));
+CREATE TABLE db_0.t_order_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE db_0.t_order_item_federate_sharding (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 ON db_0.t_order (order_id);
CREATE TABLE db_1.t_order (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE db_1.t_order_item (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 db_1.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) NULL,
PRIMARY KEY (id));
CREATE TABLE db_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 db_1.t_order_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE db_1.t_order_item_federate_sharding (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 ON db_1.t_order (order_id);
CREATE TABLE db_2.t_order (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/oracle/init.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/oracle/init.sql
index 1c76c15..c18fcc2 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/oracle/init.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/oracle/init.sql
@@ -45,12 +45,16 @@ CREATE TABLE db_0.t_order_item (item_id INT NOT NULL,
order_id INT NOT NULL, use
CREATE TABLE db_0.t_single_table (single_id INT NOT NULL, id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (single_id));
CREATE TABLE db_0.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) NULL,
PRIMARY KEY (id));
CREATE TABLE db_0.t_order_federate (order_id INT NOT NULL, user_id INT NOT
NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id));
+CREATE TABLE db_0.t_order_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE db_0.t_order_item_federate_sharding (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 ON db_0.t_order (order_id);
CREATE TABLE db_1.t_order (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE db_1.t_order_item (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 db_1.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) NULL,
PRIMARY KEY (id));
CREATE TABLE db_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 db_1.t_order_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE db_1.t_order_item_federate_sharding (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 ON db_1.t_order (order_id);
CREATE TABLE db_2.t_order (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/postgresql/init.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/postgresql/init.sql
index 1ac1ae6..e5cf48d 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/postgresql/init.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/postgresql/init.sql
@@ -44,12 +44,16 @@ DROP TABLE IF EXISTS t_order_item;
DROP TABLE IF EXISTS t_single_table;
DROP TABLE IF EXISTS t_broadcast_table;
DROP TABLE IF EXISTS t_order_federate;
+DROP TABLE IF EXISTS t_order_federate_sharding;
+DROP TABLE IF EXISTS t_order_item_federate_sharding;
CREATE TABLE t_order (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE t_order_item (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_single_table (single_id INT NOT NULL, id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (single_id));
CREATE TABLE t_broadcast_table (id INT NOT NULL, status VARCHAR(45) NULL,
PRIMARY KEY (id));
CREATE TABLE t_order_federate (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
+CREATE TABLE t_order_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_item_federate_sharding (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 ON t_order (order_id);
\c db_1;
@@ -58,11 +62,15 @@ DROP TABLE IF EXISTS t_order;
DROP TABLE IF EXISTS t_order_item;
DROP TABLE IF EXISTS t_broadcast_table;
DROP TABLE IF EXISTS t_order_item_federate;
+DROP TABLE IF EXISTS t_order_federate_sharding;
+DROP TABLE IF EXISTS t_order_item_federate_sharding;
CREATE TABLE t_order (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE t_order_item (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_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_item_federate_sharding (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 ON t_order (order_id);
\c db_2;
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/sqlserver/init.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/sqlserver/init.sql
index 8067df1..e9d222d 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/sqlserver/init.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/init-sql/sqlserver/init.sql
@@ -45,12 +45,16 @@ CREATE TABLE db_0.t_order_item (item_id INT NOT NULL,
order_id INT NOT NULL, use
CREATE TABLE db_0.t_single_table (single_id INT NOT NULL, id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (single_id));
CREATE TABLE db_0.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) NULL,
PRIMARY KEY (id));
CREATE TABLE db_0.t_order_federate (order_id INT NOT NULL, user_id INT NOT
NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id));
+CREATE TABLE db_0.t_order_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE db_0.t_order_item_federate_sharding (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 ON db_0.t_order (order_id);
CREATE TABLE db_1.t_order (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE db_1.t_order_item (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 db_1.t_broadcast_table (id INT NOT NULL, status VARCHAR(45) NULL,
PRIMARY KEY (id));
CREATE TABLE db_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 db_1.t_order_federate_sharding (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE db_1.t_order_item_federate_sharding (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 ON db_1.t_order (order_id);
CREATE TABLE db_2.t_order (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/rules.yaml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/rules.yaml
index 90162f1..e8465d6 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/rules.yaml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/db/rules.yaml
@@ -39,6 +39,19 @@ rules:
standard:
shardingColumn: user_id
shardingAlgorithmName: standard_test
+ t_order_federate_sharding:
+ actualDataNodes: db_${0..1}.t_order_federate_sharding
+ databaseStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: db_inline_order_id
+ t_order_item_federate_sharding:
+ actualDataNodes: db_${0..1}.t_order_item_federate_sharding
+ databaseStrategy:
+ standard:
+ shardingColumn: item_id
+ shardingAlgorithmName: db_inline_item_id
+
bindingTables:
- t_order,t_order_item,t_order_details
broadcastTables:
@@ -48,6 +61,14 @@ rules:
shardingAlgorithms:
standard_test:
type: STANDARD_TEST
+ db_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: db_${order_id_sharding %
2}.t_order_federate_sharding
+ db_inline_item_id:
+ type: INLINE
+ props:
+ algorithm-expression: db_${db_inline_item_id %
2}.t_order_item_federate_sharding
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 31abf42..07246cb 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
@@ -55,6 +55,11 @@
<column name="status" type="varchar" />
<column name="remarks" type="varchar" />
</metadata>
+ <metadata
data-nodes="write_ds_1.t_order_federate_sharding_${0..1},read_ds_1.t_order_federate_sharding_${0..1}">
+ <column name="order_id_sharding" type="numeric" />
+ <column name="user_id" type="numeric" />
+ <column name="status" 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" />
@@ -379,6 +384,10 @@
<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="write_ds_1.t_order_federate_sharding_0" values="1010, 10,
init" />
+ <row data-node="write_ds_1.t_order_federate_sharding_0" values="1100, 10,
init" />
+ <row data-node="write_ds_1.t_order_federate_sharding_1" values="1011, 11,
init" />
+ <row data-node="write_ds_1.t_order_federate_sharding_1" values="1101, 11,
init" />
<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" />
@@ -703,4 +712,8 @@
<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" />
+ <row data-node="read_ds_1.t_order_federate_sharding_0" values="1010, 10,
init" />
+ <row data-node="read_ds_1.t_order_federate_sharding_0" values="1100, 10,
init" />
+ <row data-node="read_ds_1.t_order_federate_sharding_1" values="1011, 11,
init" />
+ <row data-node="read_ds_1.t_order_federate_sharding_1" values="1101, 11,
init" />
</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 ba2ae9a..f4ee788 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
@@ -18,7 +18,11 @@
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;
+DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_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));
+CREATE TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
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 ba2ae9a..f4ee788 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
@@ -18,7 +18,11 @@
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;
+DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_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));
+CREATE TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
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 ffae036..5090937 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
@@ -121,6 +121,8 @@ CREATE TABLE write_ds_1.t_broadcast_table (id INT NOT NULL,
status VARCHAR(45) N
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 TABLE write_ds_1.t_order_federate_sharding_0 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE write_ds_1.t_order_federate_sharding_1 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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);
@@ -446,6 +448,8 @@ CREATE TABLE read_ds_1.t_broadcast_table (id INT NOT NULL,
status VARCHAR(45) NU
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 TABLE read_ds_1.t_order_federate_sharding_0 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE read_ds_1.t_order_federate_sharding_1 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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 ae75990..8211bd6 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
@@ -118,6 +118,8 @@ CREATE TABLE write_ds_1.t_broadcast_table (id INT NOT NULL,
status VARCHAR(45) N
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 TABLE write_ds_1.t_order_federate_sharding_0 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE write_ds_1.t_order_federate_sharding_1 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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);
@@ -443,6 +445,8 @@ CREATE TABLE read_ds_1.t_broadcast_table (id INT NOT NULL,
status VARCHAR(45) NU
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 TABLE read_ds_1.t_order_federate_sharding_0 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE read_ds_1.t_order_federate_sharding_1 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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 0391463..6aaebe9 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
@@ -143,6 +143,8 @@ 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;
+DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_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));
@@ -168,6 +170,8 @@ CREATE TABLE t_broadcast_table (id INT NOT NULL, status
VARCHAR(45) NULL, PRIMAR
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 TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
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);
@@ -713,6 +717,8 @@ 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;
+DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_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));
@@ -738,6 +744,8 @@ CREATE TABLE t_broadcast_table (id INT NOT NULL, status
VARCHAR(45) NULL, PRIMAR
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 TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
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 b62a3cc..3b3311d 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
@@ -118,6 +118,8 @@ CREATE TABLE write_ds_1.t_broadcast_table (id INT NOT NULL,
status VARCHAR(45) N
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 TABLE write_ds_1.t_order_federate_sharding_0 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE write_ds_1.t_order_federate_sharding_1 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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);
@@ -443,6 +445,8 @@ CREATE TABLE read_ds_1.t_broadcast_table (id INT NOT NULL,
status VARCHAR(45) NU
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 TABLE read_ds_1.t_order_federate_sharding_0 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE read_ds_1.t_order_federate_sharding_1 (order_id_sharding INT NOT
NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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 0035e87..c9bf96e 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
@@ -57,6 +57,12 @@ rules:
standard:
shardingColumn: item_id
shardingAlgorithmName: table_inline_item_id
+ t_order_federate_sharding:
+ actualDataNodes: pr_ds_1.t_order_federate_sharding_${0..1}
+ tableStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: table_inline_order_id
bindingTables:
- t_order,t_order_item,t_order_details
broadcastTables:
@@ -70,6 +76,10 @@ rules:
type: INLINE
props:
algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
+ table_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_federate_sharding_${order_id_sharding %
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 193ff81..7826495 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
@@ -52,6 +52,11 @@
<column name="status" type="varchar" />
<column name="remarks" type="varchar" />
</metadata>
+ <metadata
data-nodes="encrypt_write_ds_1.t_order_federate_sharding_${0..1},encrypt_read_ds_1.t_order_federate_sharding_${0..1}">
+ <column name="order_id_sharding" type="numeric" />
+ <column name="user_id" type="numeric" />
+ <column name="status" 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" />
@@ -266,6 +271,10 @@
<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_write_ds_1.t_order_federate_sharding_0"
values="1010, 10, init" />
+ <row data-node="encrypt_write_ds_1.t_order_federate_sharding_0"
values="1100, 10, init" />
+ <row data-node="encrypt_write_ds_1.t_order_federate_sharding_1"
values="1011, 11, init" />
+ <row data-node="encrypt_write_ds_1.t_order_federate_sharding_1"
values="1101, 11, init" />
<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" />
@@ -480,4 +489,8 @@
<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" />
+ <row data-node="encrypt_read_ds_1.t_order_federate_sharding_0"
values="1010, 10, init" />
+ <row data-node="encrypt_read_ds_1.t_order_federate_sharding_0"
values="1100, 10, init" />
+ <row data-node="encrypt_read_ds_1.t_order_federate_sharding_1"
values="1011, 11, init" />
+ <row data-node="encrypt_read_ds_1.t_order_federate_sharding_1"
values="1101, 11, init" />
</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 ba2ae9a..f4ee788 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
@@ -18,7 +18,11 @@
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;
+DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_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));
+CREATE TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
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 ba2ae9a..f4ee788 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
@@ -18,7 +18,11 @@
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;
+DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_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));
+CREATE TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
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 48b3250..fe3bb61 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
@@ -119,6 +119,8 @@ CREATE TABLE encrypt_write_ds_1.t_user_item_9 (item_id INT
NOT NULL, user_id INT
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 TABLE encrypt_write_ds_1.t_order_federate_sharding_0 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE encrypt_write_ds_1.t_order_federate_sharding_1 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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);
@@ -434,6 +436,8 @@ CREATE TABLE encrypt_read_ds_1.t_user_item_9 (item_id INT
NOT NULL, user_id INT
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 TABLE encrypt_read_ds_1.t_order_federate_sharding_0 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE encrypt_read_ds_1.t_order_federate_sharding_1 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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 e0e4354..c933b96 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
@@ -116,6 +116,8 @@ CREATE TABLE encrypt_write_ds_1.t_user_item_9 (item_id INT
NOT NULL, user_id INT
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 TABLE encrypt_write_ds_1.t_order_federate_sharding_0 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE encrypt_write_ds_1.t_order_federate_sharding_1 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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);
@@ -431,6 +433,8 @@ CREATE TABLE encrypt_read_ds_1.t_user_item_9 (item_id INT
NOT NULL, user_id INT
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 TABLE encrypt_read_ds_1.t_order_federate_sharding_0 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE encrypt_read_ds_1.t_order_federate_sharding_1 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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 52b0ea6..422e380 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
@@ -140,6 +140,8 @@ 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;
+DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_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));
@@ -164,6 +166,8 @@ CREATE TABLE t_user_item_9 (item_id INT NOT NULL, user_id
INT NOT NULL, status V
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 TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
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);
@@ -690,6 +694,8 @@ 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;
+DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_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));
@@ -714,6 +720,8 @@ CREATE TABLE t_user_item_9 (item_id INT NOT NULL, user_id
INT NOT NULL, status V
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 TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
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 8e2035d..838dee9 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
@@ -116,6 +116,8 @@ CREATE TABLE encrypt_write_ds_1.t_user_item_9 (item_id INT
NOT NULL, user_id INT
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 TABLE encrypt_write_ds_1.t_order_federate_sharding_0 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE encrypt_write_ds_1.t_order_federate_sharding_1 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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);
@@ -431,6 +433,8 @@ CREATE TABLE encrypt_read_ds_1.t_user_item_9 (item_id INT
NOT NULL, user_id INT
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 TABLE encrypt_read_ds_1.t_order_federate_sharding_0 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
+CREATE TABLE encrypt_read_ds_1.t_order_federate_sharding_1 (order_id_sharding
INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY
(order_id_sharding));
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 04e32b7..e137b0c 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
@@ -60,6 +60,12 @@ rules:
standard:
shardingColumn: item_id
shardingAlgorithmName: table_inline_item_id
+ t_order_federate_sharding:
+ actualDataNodes: pr_ds_1.t_order_federate_sharding_${0..1}
+ tableStrategy:
+ standard:
+ shardingColumn: order_id_sharding
+ shardingAlgorithmName: table_inline_order_id
bindingTables:
- t_user,t_user_item,t_user_details
@@ -70,11 +76,15 @@ rules:
type: INLINE
props:
algorithm-expression: t_order_item_federate_sharding_${item_id % 2}
+ table_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_federate_sharding_${order_id_sharding %
2}
keyGenerators:
constant:
type: Constant
-
+
- !READWRITE_SPLITTING
dataSources:
pr_ds_0:
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/dataset.xml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/dataset.xml
index 7b1616c..8174b8d 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/dataset.xml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/dataset.xml
@@ -42,6 +42,13 @@
<column name="user_id" type="numeric" />
<column name="status" type="varchar" />
</metadata>
+ <metadata data-nodes="tbl.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="tbl.t_single_table" values="1, 1000, init" />
<row data-node="tbl.t_single_table" values="2, 1001, init" />
<row data-node="tbl.t_single_table" values="3, 1002, init" />
@@ -111,4 +118,8 @@
<row data-node="tbl.t_order_federate_sharding_0" values="1100, 10, init" />
<row data-node="tbl.t_order_federate_sharding_1" values="1011, 11, init" />
<row data-node="tbl.t_order_federate_sharding_1" values="1101, 11, init" />
+ <row data-node="tbl.t_order_item_federate_sharding_0" values="1000, 10000,
10, init, t_order_item_federate_sharding" />
+ <row data-node="tbl.t_order_item_federate_sharding_0" values="1010, 10001,
10, init, t_order_item_federate_sharding" />
+ <row data-node="tbl.t_order_item_federate_sharding_1" values="1001, 10001,
11, init, t_order_item_federate_sharding" />
+ <row data-node="tbl.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/tbl/init-sql/h2/init.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/h2/init.sql
index 42772f1..c4a444a 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/h2/init.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/h2/init.sql
@@ -18,9 +18,11 @@
DROP TABLE IF EXISTS t_order_0;
DROP TABLE IF EXISTS t_order_item_0;
DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
DROP TABLE IF EXISTS t_order_1;
DROP TABLE IF EXISTS t_order_item_1;
DROP TABLE IF EXISTS t_order_federate_sharding_1;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
DROP TABLE IF EXISTS t_order_2;
DROP TABLE IF EXISTS t_order_item_2;
DROP TABLE IF EXISTS t_order_3;
@@ -43,11 +45,13 @@ DROP TABLE IF EXISTS t_single_table;
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));
CREATE TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+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 INDEX order_index_t_order_0 ON t_order_0 (order_id);
CREATE TABLE t_order_1 (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE t_order_item_1 (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_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+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_1 ON t_order_1 (order_id);
CREATE TABLE t_order_2 (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/mysql/init.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/mysql/init.sql
index c154dbf..8d6e00f 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/mysql/init.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/mysql/init.sql
@@ -28,11 +28,13 @@ CREATE DATABASE tbl;
CREATE TABLE tbl.t_order_0 (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE tbl.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));
CREATE TABLE tbl.t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE tbl.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 INDEX order_index_t_order_0 ON tbl.t_order_0 (order_id);
CREATE TABLE tbl.t_order_1 (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE tbl.t_order_item_1 (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 tbl.t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE tbl.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_1 ON tbl.t_order_1 (order_id);
CREATE TABLE tbl.t_order_2 (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/oracle/init.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/oracle/init.sql
index b40ecf0..c61f534 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/oracle/init.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/oracle/init.sql
@@ -25,11 +25,13 @@ CREATE SCHEMA tbl;
CREATE TABLE tbl.t_order_0 (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE tbl.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));
CREATE TABLE tbl.t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE tbl.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 INDEX order_index_t_order_0 ON tbl.t_order_0 (order_id);
CREATE TABLE tbl.t_order_1 (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE tbl.t_order_item_1 (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 tbl.t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE tbl.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_1 ON tbl.t_order_1 (order_id);
CREATE TABLE tbl.t_order_2 (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/postgresql/init.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/postgresql/init.sql
index 77ab375..0e89a77 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/postgresql/init.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/postgresql/init.sql
@@ -23,8 +23,12 @@ GRANT ALL PRIVILEGES ON DATABASE tbl TO root;
DROP TABLE IF EXISTS t_order_0;
DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_federate_sharding_0;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_0;
DROP TABLE IF EXISTS t_order_1;
DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_federate_sharding_1;
+DROP TABLE IF EXISTS t_order_item_federate_sharding_1;
DROP TABLE IF EXISTS t_order_2;
DROP TABLE IF EXISTS t_order_item_2;
DROP TABLE IF EXISTS t_order_3;
@@ -47,11 +51,13 @@ DROP TABLE IF EXISTS t_single_table;
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));
CREATE TABLE t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+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 INDEX order_index_t_order_0 ON t_order_0 (order_id);
CREATE TABLE t_order_1 (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE t_order_item_1 (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_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+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_1 ON t_order_1 (order_id);
CREATE TABLE t_order_2 (order_id INT NOT NULL, user_id INT NOT NULL, status
VARCHAR(45) NULL, PRIMARY KEY (order_id));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/sqlserver/init.sql
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/sqlserver/init.sql
index 1d8bb92..d181f33 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/sqlserver/init.sql
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/init-sql/sqlserver/init.sql
@@ -25,11 +25,13 @@ CREATE DATABASE tbl;
CREATE TABLE tbl.t_order_0 (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE tbl.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));
CREATE TABLE tbl.t_order_federate_sharding_0 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE tbl.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 INDEX order_index_t_order_0 ON tbl.t_order_0 (order_id);
CREATE TABLE tbl.t_order_1 (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
CREATE TABLE tbl.t_order_item_1 (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 tbl.t_order_federate_sharding_1 (order_id_sharding INT NOT NULL,
user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id_sharding));
+CREATE TABLE tbl.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_1 ON tbl.t_order_1 (order_id);
CREATE TABLE tbl.t_order_2 (order_id INT NOT NULL, user_id INT NOT NULL,
status VARCHAR(45) NULL, PRIMARY KEY (order_id));
diff --git
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/rules.yaml
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/rules.yaml
index a8b8ff8..ff402a2 100644
---
a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/rules.yaml
+++
b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/env/tbl/rules.yaml
@@ -45,6 +45,12 @@ rules:
standard:
shardingColumn: order_id_sharding
shardingAlgorithmName: table_inline_order_id
+ t_order_item_federate_sharding:
+ actualDataNodes: tbl.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:
@@ -54,6 +60,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}
table_inline_order_id:
type: INLINE
props: