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 2d32e7134fb Add sql federation scenario for postgresql (#29593)
2d32e7134fb is described below
commit 2d32e7134fb9f585a7e1c6a0ba96791906af6a2b
Author: niu niu <[email protected]>
AuthorDate: Tue Jan 2 12:47:42 2024 +0800
Add sql federation scenario for postgresql (#29593)
* Add sql federation scenario for postgresql
* Add authority for postgresql
---
.../scenario/db_tbl_sql_federation/authority.xml | 20 +
.../actual/init-sql/mysql/actual-logic_db-init.sql | 26 +
.../actual/init-sql/postgresql/01-actual-init.sql | 626 +++++++++++++++++++++
.../init-sql/postgresql/actual-logic_db-init.sql | 26 +
.../init-sql/postgresql/01-expected-init.sql | 43 ++
.../config-dbtbl-with-sql-federation.yaml | 157 ++++++
6 files changed, 898 insertions(+)
diff --git
a/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/authority.xml
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/authority.xml
index 1462cd4a2df..84cad1e1b67 100644
---
a/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/authority.xml
+++
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/authority.xml
@@ -16,6 +16,26 @@
-->
<authority>
+ <sqlset db-types="PostgreSQL">
+ <user-create>
+ <sql>CREATE USER default_user</sql>
+ <sql>CREATE ROLE default_role</sql>
+ <sql>CREATE ROLE role2</sql>
+ <sql>CREATE ROLE role3</sql>
+ <sql>CREATE ROLE role4</sql>
+ </user-create>
+ <user-drop>
+ <sql>DROP ROLE IF EXISTS default_role</sql>
+ <sql>DROP ROLE IF EXISTS role_dev</sql>
+ <sql>DROP ROLE IF EXISTS role_dev_new</sql>
+ <sql>DROP ROLE IF EXISTS role2</sql>
+ <sql>DROP ROLE IF EXISTS role3</sql>
+ <sql>DROP ROLE IF EXISTS role4</sql>
+ <sql>DROP USER IF EXISTS user_dev</sql>
+ <sql>DROP USER IF EXISTS user_dev_new</sql>
+ <sql>DROP USER IF EXISTS default_user</sql>
+ </user-drop>
+ </sqlset>
<sqlset db-types="MySQL">
<user-create>
<sql>CREATE ROLE default_role</sql>
diff --git
a/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/actual/init-sql/mysql/actual-logic_db-init.sql
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/actual/init-sql/mysql/actual-logic_db-init.sql
new file mode 100644
index 00000000000..e64ee300da9
--- /dev/null
+++
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/actual/init-sql/mysql/actual-logic_db-init.sql
@@ -0,0 +1,26 @@
+--
+-- 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.
+--
+
+DROP VIEW IF EXISTS t_order_item_join_view;
+DROP VIEW IF EXISTS t_order_subquery_view;
+DROP VIEW IF EXISTS t_order_aggregation_view;
+DROP VIEW IF EXISTS t_order_union_view;
+
+CREATE VIEW t_order_item_join_view AS SELECT o.order_id, o.user_id, i.item_id
FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id ORDER BY
o.order_id, i.item_id;
+CREATE VIEW t_order_subquery_view AS SELECT * FROM t_order o WHERE o.order_id
IN (SELECT i.order_id FROM t_order_item i INNER JOIN t_product p ON
i.product_id = p.product_id WHERE p.product_id = 10);
+CREATE VIEW t_order_aggregation_view AS SELECT MAX(p.price) AS max_price,
MIN(p.price) AS min_price, SUM(p.price) AS sum_price, AVG(p.price) AS
avg_price, COUNT(1) AS count FROM t_order o INNER JOIN t_order_item i ON
o.order_id = i.order_id INNER JOIN t_product p ON i.product_id = p.product_id
GROUP BY o.order_id HAVING SUM(p.price) > 10000 ORDER BY max_price;
+CREATE VIEW t_order_union_view AS SELECT * FROM t_order WHERE order_id > 2000
UNION SELECT * FROM t_order WHERE order_id > 1500;
diff --git
a/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/actual/init-sql/postgresql/01-actual-init.sql
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/actual/init-sql/postgresql/01-actual-init.sql
new file mode 100644
index 00000000000..90972c9a869
--- /dev/null
+++
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/actual/init-sql/postgresql/01-actual-init.sql
@@ -0,0 +1,626 @@
+--
+-- 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.
+--
+
+CREATE DATABASE sql_federation_ds_0;
+CREATE DATABASE sql_federation_ds_1;
+CREATE DATABASE sql_federation_ds_2;
+CREATE DATABASE sql_federation_ds_3;
+CREATE DATABASE sql_federation_ds_4;
+CREATE DATABASE sql_federation_ds_5;
+CREATE DATABASE sql_federation_ds_6;
+CREATE DATABASE sql_federation_ds_7;
+CREATE DATABASE sql_federation_ds_8;
+CREATE DATABASE sql_federation_ds_9;
+
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_0 TO test_user;
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_1 TO test_user;
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_2 TO test_user;
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_3 TO test_user;
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_4 TO test_user;
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_5 TO test_user;
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_6 TO test_user;
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_7 TO test_user;
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_8 TO test_user;
+GRANT ALL PRIVILEGES ON DATABASE sql_federation_ds_9 TO test_user;
+
+\c sql_federation_ds_0
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_user;
+DROP TABLE IF EXISTS t_product;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_user (user_id INT PRIMARY KEY, user_name VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL, telephone
VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
+CREATE TABLE t_product (product_id INT PRIMARY KEY, product_name VARCHAR(50)
NOT NULL, category_id INT NOT NULL, price DECIMAL NOT NULL, status VARCHAR(50)
NOT NULL, creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+
+\c sql_federation_ds_1
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_merchant;
+DROP TABLE IF EXISTS t_product_detail;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_merchant (merchant_id INT PRIMARY KEY, country_id INT NOT NULL,
merchant_name VARCHAR(50) NOT NULL, business_code VARCHAR(50) NOT NULL,
telephone VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
+CREATE TABLE t_product_detail (detail_id INT PRIMARY KEY, product_id INT NOT
NULL, description VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+
+\c sql_federation_ds_2
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+
+\c sql_federation_ds_3
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+
+\c sql_federation_ds_4
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+
+\c sql_federation_ds_5
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+
+\c sql_federation_ds_6
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+
+\c sql_federation_ds_7
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+
+\c sql_federation_ds_8
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
+
+\c sql_federation_ds_9
+
+DROP TABLE IF EXISTS t_order_0;
+DROP TABLE IF EXISTS t_order_item_0;
+DROP TABLE IF EXISTS t_order_1;
+DROP TABLE IF EXISTS t_order_item_1;
+DROP TABLE IF EXISTS t_order_2;
+DROP TABLE IF EXISTS t_order_item_2;
+DROP TABLE IF EXISTS t_order_3;
+DROP TABLE IF EXISTS t_order_item_3;
+DROP TABLE IF EXISTS t_order_4;
+DROP TABLE IF EXISTS t_order_item_4;
+DROP TABLE IF EXISTS t_order_5;
+DROP TABLE IF EXISTS t_order_item_5;
+DROP TABLE IF EXISTS t_order_6;
+DROP TABLE IF EXISTS t_order_item_6;
+DROP TABLE IF EXISTS t_order_7;
+DROP TABLE IF EXISTS t_order_item_7;
+DROP TABLE IF EXISTS t_order_8;
+DROP TABLE IF EXISTS t_order_item_8;
+DROP TABLE IF EXISTS t_order_9;
+DROP TABLE IF EXISTS t_order_item_9;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order_0 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_0 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_1 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_1 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_2 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_2 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_3 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_3 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_4 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_4 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_5 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_5 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_6 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_6 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_7 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_7 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_8 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_8 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_9 (order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item_9 (item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+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);
+CREATE INDEX order_index_t_order_3 ON t_order_3 (order_id);
+CREATE INDEX order_index_t_order_4 ON t_order_4 (order_id);
+CREATE INDEX order_index_t_order_5 ON t_order_5 (order_id);
+CREATE INDEX order_index_t_order_6 ON t_order_6 (order_id);
+CREATE INDEX order_index_t_order_7 ON t_order_7 (order_id);
+CREATE INDEX order_index_t_order_8 ON t_order_8 (order_id);
+CREATE INDEX order_index_t_order_9 ON t_order_9 (order_id);
diff --git
a/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/actual/init-sql/postgresql/actual-logic_db-init.sql
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/actual/init-sql/postgresql/actual-logic_db-init.sql
new file mode 100644
index 00000000000..e64ee300da9
--- /dev/null
+++
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/actual/init-sql/postgresql/actual-logic_db-init.sql
@@ -0,0 +1,26 @@
+--
+-- 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.
+--
+
+DROP VIEW IF EXISTS t_order_item_join_view;
+DROP VIEW IF EXISTS t_order_subquery_view;
+DROP VIEW IF EXISTS t_order_aggregation_view;
+DROP VIEW IF EXISTS t_order_union_view;
+
+CREATE VIEW t_order_item_join_view AS SELECT o.order_id, o.user_id, i.item_id
FROM t_order o INNER JOIN t_order_item i ON o.order_id = i.order_id ORDER BY
o.order_id, i.item_id;
+CREATE VIEW t_order_subquery_view AS SELECT * FROM t_order o WHERE o.order_id
IN (SELECT i.order_id FROM t_order_item i INNER JOIN t_product p ON
i.product_id = p.product_id WHERE p.product_id = 10);
+CREATE VIEW t_order_aggregation_view AS SELECT MAX(p.price) AS max_price,
MIN(p.price) AS min_price, SUM(p.price) AS sum_price, AVG(p.price) AS
avg_price, COUNT(1) AS count FROM t_order o INNER JOIN t_order_item i ON
o.order_id = i.order_id INNER JOIN t_product p ON i.product_id = p.product_id
GROUP BY o.order_id HAVING SUM(p.price) > 10000 ORDER BY max_price;
+CREATE VIEW t_order_union_view AS SELECT * FROM t_order WHERE order_id > 2000
UNION SELECT * FROM t_order WHERE order_id > 1500;
diff --git
a/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/expected/init-sql/postgresql/01-expected-init.sql
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/expected/init-sql/postgresql/01-expected-init.sql
new file mode 100644
index 00000000000..2ea877feb32
--- /dev/null
+++
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/data/expected/init-sql/postgresql/01-expected-init.sql
@@ -0,0 +1,43 @@
+--
+-- 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.
+--
+
+DROP DATABASE IF EXISTS sql_federation;
+CREATE DATABASE sql_federation;
+
+GRANT ALL PRIVILEGES ON DATABASE sql_federation TO test_user;
+
+\c sql_federation;
+
+DROP TABLE IF EXISTS t_order;
+DROP TABLE IF EXISTS t_order_item;
+DROP TABLE IF EXISTS t_user;
+DROP TABLE IF EXISTS t_merchant;
+DROP TABLE IF EXISTS t_product;
+DROP TABLE IF EXISTS t_product_detail;
+DROP TABLE IF EXISTS t_product_category;
+DROP TABLE IF EXISTS t_country;
+
+CREATE TABLE t_order(order_id INT PRIMARY KEY, user_id INT NOT NULL, status
VARCHAR(50) NOT NULL, merchant_id INT NOT NULL, remark VARCHAR(50) NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_order_item(item_id INT PRIMARY KEY, order_id INT NOT NULL,
user_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL,
creation_date DATE NOT NULL);
+CREATE TABLE t_user (user_id INT PRIMARY KEY, user_name VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL, telephone
VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
+CREATE TABLE t_merchant (merchant_id INT PRIMARY KEY, country_id INT NOT NULL,
merchant_name VARCHAR(50) NOT NULL, business_code VARCHAR(50) NOT NULL,
telephone VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
+CREATE TABLE t_product (product_id INT PRIMARY KEY, product_name VARCHAR(50)
NOT NULL, category_id INT NOT NULL, price DECIMAL NOT NULL, status VARCHAR(50)
NOT NULL, creation_date DATE NOT NULL);
+CREATE TABLE t_product_detail (detail_id INT PRIMARY KEY, product_id INT NOT
NULL, description VARCHAR(50) NOT NULL, creation_date DATE NOT NULL);
+CREATE TABLE t_product_category( category_id INT PRIMARY KEY, category_name
VARCHAR(50) NOT NULL, parent_id INT NOT NULL, level INT NOT NULL, creation_date
DATE NOT NULL);
+CREATE TABLE t_country (country_id INT PRIMARY KEY, country_name VARCHAR(50),
continent_name VARCHAR(50), creation_date DATE NOT NULL);
+
+CREATE INDEX order_index_t_order ON t_order (order_id);
diff --git
a/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/proxy/conf/postgresql/config-dbtbl-with-sql-federation.yaml
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/proxy/conf/postgresql/config-dbtbl-with-sql-federation.yaml
new file mode 100644
index 00000000000..b75b723b0aa
--- /dev/null
+++
b/test/e2e/sql/src/test/resources/env/scenario/db_tbl_sql_federation/proxy/conf/postgresql/config-dbtbl-with-sql-federation.yaml
@@ -0,0 +1,157 @@
+#
+# 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.
+#
+
+databaseName: db_tbl_sql_federation
+
+dataSources:
+ sql_federation_ds_0:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_0
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+ sql_federation_ds_1:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_1
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+ sql_federation_ds_2:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_2
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+ sql_federation_ds_3:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_3
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+ sql_federation_ds_4:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_4
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+ sql_federation_ds_5:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_5
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+ sql_federation_ds_6:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_6
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+ sql_federation_ds_7:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_7
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+ sql_federation_ds_8:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_8
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+ sql_federation_ds_9:
+ url:
jdbc:postgresql://postgresql.db_tbl_sql_federation.host:5432/sql_federation_ds_9
+ username: test_user
+ password: Test@123
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 50
+ minPoolSize: 2
+
+rules:
+- !SINGLE
+ tables:
+ - "*.*.*"
+- !SHARDING
+ tables:
+ t_order:
+ actualDataNodes: sql_federation_ds_${0..9}.t_order_${0..9}
+ databaseStrategy:
+ standard:
+ shardingColumn: user_id
+ shardingAlgorithmName: it_standard_fixture
+ tableStrategy:
+ standard:
+ shardingColumn: order_id
+ shardingAlgorithmName: it_standard_fixture
+ t_order_item:
+ actualDataNodes: sql_federation_ds_${0..9}.t_order_item_${0..9}
+ databaseStrategy:
+ standard:
+ shardingColumn: user_id
+ shardingAlgorithmName: it_standard_fixture
+ tableStrategy:
+ standard:
+ shardingColumn: order_id
+ shardingAlgorithmName: it_standard_fixture
+ keyGenerateStrategy:
+ column: item_id
+ keyGeneratorName: auto_increment
+ auditStrategy:
+ auditorNames:
+ - auditor_constant
+ allowHintDisable: true
+ bindingTables:
+ - ref_0:t_order,t_order_item
+ shardingAlgorithms:
+ it_standard_fixture:
+ type: IT.STANDARD.FIXTURE
+
+ keyGenerators:
+ auto_increment:
+ type: IT.AUTO_INCREMENT.FIXTURE
+
+ auditors:
+ auditor_constant:
+ type: IT.AUDITOR.FIXTURE