You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/08/10 12:25:14 UTC
[shardingsphere] branch master updated: fix select statement
exception with calcite dialect function (#11745)
This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new ba5fe48 fix select statement exception with calcite dialect function (#11745)
ba5fe48 is described below
commit ba5fe48a2f2c05adfa64768c4e98b7b53756bf03
Author: Zhengqiang Duan <du...@apache.org>
AuthorDate: Tue Aug 10 20:24:48 2021 +0800
fix select statement exception with calcite dialect function (#11745)
* fix select statement exception with calcite dialect function
* fix integration test
* fix integration test
---
.../sql/federate/execute/FederateJDBCExecutor.java | 1 +
.../optimize/context/OptimizeContextFactory.java | 11 +++++++++-
.../tbl/select_dialect_function_with_federate.xml | 25 ++++++++++++++++++++++
.../cases/dql/dql-integration-test-cases.xml | 4 ++++
.../src/test/resources/env/tbl/dataset.xml | 9 ++++++++
.../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 | 2 ++
.../resources/env/tbl/init-sql/sqlserver/init.sql | 2 ++
.../src/test/resources/env/tbl/rules.yaml | 10 +++++++++
11 files changed, 71 insertions(+), 1 deletion(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/federate/execute/FederateJDBCExecutor.java b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/federate/execute/FederateJDBCExecutor.java
index 9905ce3..9c38e5c 100644
--- a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/federate/execute/FederateJDBCExecutor.java
+++ b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/federate/execute/FederateJDBCExecutor.java
@@ -120,6 +120,7 @@ public final class FederateJDBCExecutor implements FederateExecutor {
Properties result = new Properties();
result.setProperty(CalciteConnectionProperty.LEX.camelName(), factory.getProperties().getProperty(CalciteConnectionProperty.LEX.camelName()));
result.setProperty(CalciteConnectionProperty.CONFORMANCE.camelName(), factory.getProperties().getProperty(CalciteConnectionProperty.CONFORMANCE.camelName()));
+ result.setProperty(CalciteConnectionProperty.FUN.camelName(), factory.getProperties().getProperty(CalciteConnectionProperty.FUN.camelName()));
return result;
}
diff --git a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java
index 06bf005..82e3291 100644
--- a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java
+++ b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/context/OptimizeContextFactory.java
@@ -32,6 +32,7 @@ import org.apache.calcite.prepare.CalciteCatalogReader;
import org.apache.calcite.rel.type.RelDataTypeFactory;
import org.apache.calcite.rex.RexBuilder;
import org.apache.calcite.schema.Schema;
+import org.apache.calcite.sql.fun.SqlLibrary;
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
import org.apache.calcite.sql.parser.SqlParser;
import org.apache.calcite.sql.parser.SqlParser.Config;
@@ -67,6 +68,8 @@ public final class OptimizeContextFactory {
private static final String CONFORMANCE_CAMEL_NAME = CalciteConnectionProperty.CONFORMANCE.camelName();
+ private static final String FUN_CAMEL_NAME = CalciteConnectionProperty.FUN.camelName();
+
private final DatabaseType databaseType;
@Getter
@@ -107,40 +110,46 @@ public final class OptimizeContextFactory {
if (databaseType instanceof MySQLDatabaseType || databaseType == null) {
properties.setProperty(LEX_CAMEL_NAME, Lex.MYSQL.name());
properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.MYSQL_5.name());
+ properties.setProperty(FUN_CAMEL_NAME, SqlLibrary.MYSQL.fun);
return;
}
if (databaseType instanceof H2DatabaseType) {
// TODO No suitable type of Lex
properties.setProperty(LEX_CAMEL_NAME, Lex.MYSQL.name());
properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.LENIENT.name());
+ properties.setProperty(FUN_CAMEL_NAME, SqlLibrary.STANDARD.fun);
return;
}
if (databaseType instanceof MariaDBDatabaseType) {
properties.setProperty(LEX_CAMEL_NAME, Lex.MYSQL.name());
properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.MYSQL_5.name());
+ properties.setProperty(FUN_CAMEL_NAME, SqlLibrary.MYSQL.fun);
return;
}
if (databaseType instanceof OracleDatabaseType) {
properties.setProperty(LEX_CAMEL_NAME, Lex.ORACLE.name());
properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.ORACLE_12.name());
+ properties.setProperty(FUN_CAMEL_NAME, SqlLibrary.ORACLE.fun);
return;
}
if (databaseType instanceof PostgreSQLDatabaseType) {
// TODO No suitable type of Lex and conformance
properties.setProperty(LEX_CAMEL_NAME, Lex.JAVA.name());
properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.BABEL.name());
-// properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.LENIENT.name());
+ properties.setProperty(FUN_CAMEL_NAME, SqlLibrary.POSTGRESQL.fun);
return;
}
if (databaseType instanceof SQL92DatabaseType) {
// TODO No suitable type of Lex
properties.setProperty(LEX_CAMEL_NAME, Lex.MYSQL.name());
properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.STRICT_92.name());
+ properties.setProperty(FUN_CAMEL_NAME, SqlLibrary.STANDARD.fun);
return;
}
if (databaseType instanceof SQLServerDatabaseType) {
properties.setProperty(LEX_CAMEL_NAME, Lex.SQL_SERVER.name());
properties.setProperty(CONFORMANCE_CAMEL_NAME, SqlConformanceEnum.SQL_SERVER_2008.name());
+ properties.setProperty(FUN_CAMEL_NAME, SqlLibrary.STANDARD.fun);
return;
}
throw new ShardingSphereException("No matching DatabaseType found");
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/tbl/select_dialect_function_with_federate.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/tbl/select_dialect_function_with_federate.xml
new file mode 100644
index 0000000..4eedbdc
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-integration-test-suite/src/test/resources/cases/dql/dataset/tbl/select_dialect_function_with_federate.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="user_id" />
+ <column name="content" />
+ </metadata>
+ <row values="10, SUM:2110." />
+ <row values="11, SUM:2112." />
+</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 2f3f898..518cd7a 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
@@ -535,4 +535,8 @@
<test-case sql="SELECT o.*, i.* FROM t_order_federate o, t_order_item_federate i WHERE o.order_id = ? AND i.item_id = ?" scenario-types="db,dbtbl_with_readwrite_splitting,dbtbl_with_readwrite_splitting_and_encrypt">
<assertion parameters="1000:int, 100000:int" expected-data-file="select_across_single_tables_with_federate.xml" />
</test-case>
+
+ <test-case sql="SELECT user_id, CONCAT('SUM:', total, '.') content FROM (SELECT user_id, SUM(order_id_sharding) AS total FROM t_order_federate_sharding GROUP BY user_id HAVING SUM(order_id_sharding) > ?) AS temp" db-types="MySQL,PostgreSQL" scenario-types="tbl">
+ <assertion parameters="1000:int" expected-data-file="select_dialect_function_with_federate.xml" />
+ </test-case>
</integration-test-cases>
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 9fc6673..7b1616c 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
@@ -37,6 +37,11 @@
<column name="id" type="numeric" />
<column name="status" type="varchar" />
</metadata>
+ <metadata data-nodes="tbl.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="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" />
@@ -102,4 +107,8 @@
<row data-node="tbl.t_order_item_9" values="110900, 1109, 11, init, 2017-08-19" />
<row data-node="tbl.t_order_item_9" values="110901, 1109, 11, init, 2017-08-19" />
<row data-node="tbl.t_broadcast_table" values="1, init" />
+ <row data-node="tbl.t_order_federate_sharding_0" values="1010, 10, init" />
+ <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" />
</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 562b343..42772f1 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
@@ -17,8 +17,10 @@
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_1;
DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_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;
@@ -40,10 +42,12 @@ 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 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 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 6c76788..c154dbf 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
@@ -27,10 +27,12 @@ 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 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 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 d8ce3a5..b40ecf0 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
@@ -24,10 +24,12 @@ 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 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 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 d41990a..77ab375 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
@@ -46,10 +46,12 @@ 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 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 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 e10e8a0..1d8bb92 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
@@ -24,10 +24,12 @@ 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 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 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 86336d2..a8b8ff8 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
@@ -39,6 +39,12 @@ rules:
standard:
shardingColumn: order_id
shardingAlgorithmName: standard_test
+ t_order_federate_sharding:
+ actualDataNodes: tbl.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:
@@ -48,6 +54,10 @@ rules:
shardingAlgorithms:
standard_test:
type: STANDARD_TEST
+ table_inline_order_id:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_federate_sharding_${order_id_sharding % 2}
keyGenerators:
constant: