Files
openGauss-server/src/test/regress/sql/nodegroup_replication_test2.sql
dengxuyue 1567043064 同步source code
日期: 12-26
    revision: ee5b054c
2020-12-28 22:19:21 +08:00

281 lines
17 KiB
SQL

/*---------------------------------------------------------------------------------------
*
* Nodegroup replicated table test case
*
* Portions Copyright (c) 2017, Huawei
*
*
* IDENTIFICATION
* src/test/regress/sql/nodegroup_replication_test.sql
*---------------------------------------------------------------------------------------
*/
create schema nodegroup_replication_test;
set current_schema = nodegroup_replication_test;
set enable_nodegroup_explain=true;
set expected_computing_nodegroup='group1';
create node group ng0 with (datanode1, datanode2, datanode3);
create node group ng1 with (datanode4, datanode5, datanode6);
create table t_row (c1 int, c2 int) distribute by hash(c1) to group ng1;
create table t1 (c1 int, c2 int) with (orientation = column, compression=middle) distribute by hash(c1) to group ng0;
create table t1_rep (c1 int, c2 int) with (orientation = column, compression=middle) distribute by replication to group ng0;
create table t2 (c1 int, c2 int) with (orientation = column, compression=middle) distribute by hash(c1) to group ng1;
create table t2_rep (c1 int, c2 int) with (orientation = column, compression=middle) distribute by replication to group ng1;
-- no distribute keys available
create table t2_rep_float (c1 float, c2 float) with (orientation = column, compression=middle) distribute by replication to group ng1;
insert into t_row select v,v from generate_series(1,10) as v;
insert into t1 select * from t_row;
insert into t1_rep select * from t1;
insert into t2 select * from t1;
insert into t2_rep select * from t2;
insert into t2_rep_float select * from t2;
analyze t_row;
analyze t1;
analyze t1_rep;
analyze t2;
analyze t2_rep;
analyze t2_rep_float;
set enable_mergejoin=off;
set enable_nestloop=off;
set enable_hashjoin=on;
-- replicate join replicate
set expected_computing_nodegroup = 'ng0';
explain (costs off) select * from t1_rep t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
set expected_computing_nodegroup = 'ng1';
explain (costs off) select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
reset expected_computing_nodegroup;
explain (costs off) select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
-- replicate join hash
set expected_computing_nodegroup = 'ng0';
explain (costs off) select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
reset expected_computing_nodegroup;
explain (costs off) select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
set enable_nestloop=off;
set enable_hashjoin=off;
set enable_mergejoin=on;
-- replicate join replicate
set expected_computing_nodegroup = 'ng0';
explain (costs off) select * from t1_rep t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
set expected_computing_nodegroup = 'ng1';
explain (costs off) select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
reset expected_computing_nodegroup;
explain (costs off) select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
-- replicate join hash
set expected_computing_nodegroup = 'ng0';
explain (costs off) select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
reset expected_computing_nodegroup;
explain (costs off) select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
set enable_hashjoin=off;
set enable_mergejoin=off;
set enable_nestloop=on;
-- replicate join replicate
set expected_computing_nodegroup = 'ng0';
explain (costs off) select * from t1_rep t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
set expected_computing_nodegroup = 'ng1';
explain (costs off) select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
reset expected_computing_nodegroup;
explain (costs off) select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep_float t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1_rep t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1_rep) order by 1,2 limit 5;
-- replicate join hash
set expected_computing_nodegroup = 'ng0';
explain (costs off) select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
reset expected_computing_nodegroup;
explain (costs off) select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t1 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t1_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1;
select * from t2_rep_float t1 join t2 t2 on t1.c1=t2.c1 order by 1,2,3,4 limit 5;
explain (costs off) select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
select * from t2_rep t1 where t1.c1 in (select c2 from t1) order by 1,2 limit 5;
drop table t_row;
drop table t1;
drop table t2;
drop table t1_rep;
drop table t2_rep;
drop table t2_rep_float;
reset expected_computing_nodegroup;
drop node group ng0;
drop node group ng1;
drop schema nodegroup_replication_test cascade;