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

Reply via email to