polardbxengine/mysql-test/suite/ndb/t/ndb_fully_replicated_restar...

220 lines
5.7 KiB
PHP

--echo Check row count
select @row_count:=count(1) from test.t1;
--echo Check Physical row count against expected
select floor(@row_count * @prpr) as expected_phys_rows,
sum(fixed_elem_count) as actual_phys_rows,
@diff:=(@row_count * @prpr) - sum(fixed_elem_count) as diff
from ndbinfo.memory_per_fragment
where fq_name='test/def/t1';
--let $d=query_get_value(select @diff as d, d, 1)
if ($d)
{
--echo Show actual fragments
select * from ndbinfo.memory_per_fragment
where fq_name='test/def/t1'
order by
node_id, fragment_num;
--die Physical vs Logical row count error
}
--echo Check UI physical row count against expected
select floor(@row_count * @prpr) as expected_phys_rows,
sum(fixed_elem_count) as actual_phys_rows,
@diff:=(@row_count * @prpr) - sum(fixed_elem_count) as diff
from ndbinfo.memory_per_fragment
where parent_fq_name='test/def/t1' and fq_name like '%/c$unique';
#--echo Show actual fragments
#select * from ndbinfo.memory_per_fragment
# where fq_name='test/def/t1'
# order by
# node_id, fragment_num;
#
## indices
#select * from ndbinfo.memory_per_fragment
# where parent_fq_name='test/def/t1'
# order by
# node_id, fragment_num;
#--echo Show fragment balance
#select avg(fixed_elem_count),
# std(fixed_elem_count),
# min(fixed_elem_count),
# max(fixed_elem_count)
# from ndbinfo.memory_per_fragment
# where fq_name='test/def/t1';
--echo Delete some data
delete from test.t1 limit 512;
--echo Show new logical row count
select @new_row_count:=count(1) from test.t1;
#--echo Show fragment balance
#select avg(fixed_elem_count),
# std(fixed_elem_count),
# min(fixed_elem_count),
# max(fixed_elem_count)
# from ndbinfo.memory_per_fragment
# where fq_name='test/def/t1';
--echo Check new Physical row count against expected
select floor(@new_row_count * @prpr) as expected_phys_rows,
sum(fixed_elem_count) as actual_phys_rows,
@diff:=(@new_row_count * @prpr) - sum(fixed_elem_count) as diff
from ndbinfo.memory_per_fragment
where fq_name='test/def/t1';
--let $d=query_get_value(select @diff as d, d, 1)
if ($d)
{
--echo Show actual fragments
select * from ndbinfo.memory_per_fragment
where fq_name='test/def/t1'
order by
node_id, fragment_num;
--die Physical vs Logical row count error
}
--echo Check UI physical row count against expected
select floor(@new_row_count * @prpr) as expected_phys_rows,
sum(fixed_elem_count) as actual_phys_rows,
@diff:=(@new_row_count * @prpr) - sum(fixed_elem_count) as diff
from ndbinfo.memory_per_fragment
where parent_fq_name='test/def/t1' and fq_name like '%/c$unique';
--disable_query_log
--disable_result_log
select @m:=max(a) from test.t1;
--echo Insert some data
insert into test.t1 select a+@m, b+@m, c+@m, d+@m from test.t1 limit 800;
--enable_query_log
--enable_result_log
--echo Show new logical row count
select @new_row_count:=count(1) from test.t1;
--echo Check new Physical row count against expected
select floor(@new_row_count * @prpr) as expected_phys_rows,
sum(fixed_elem_count) as actual_phys_rows,
@diff:=(@new_row_count * @prpr) - sum(fixed_elem_count) as diff
from ndbinfo.memory_per_fragment
where fq_name='test/def/t1';
--let $d=query_get_value(select @diff as d, d, 1)
if ($d)
{
--echo Show actual fragments
select * from ndbinfo.memory_per_fragment
where fq_name='test/def/t1'
order by
node_id, fragment_num;
--die Physical vs Logical row count error
}
--echo Check UI physical row count against expected
select floor(@new_row_count * @prpr) as expected_phys_rows,
sum(fixed_elem_count) as actual_phys_rows,
@diff:=(@new_row_count * @prpr) - sum(fixed_elem_count) as diff
from ndbinfo.memory_per_fragment
where parent_fq_name='test/def/t1' and fq_name like '%/c$unique';
--echo Show read-locality at all data nodes
# Handy table to allow cluster_transactions to show
# the TC node chosen for each iteration
create table test.t2(a int primary key) engine=ndb;
insert into test.t2 values (1);
create table nodes(id int primary key);
# Enough iterations to hopefully run on each node
--let $ITERATIONS=20
--disable_query_log
--disable_result_log
while($ITERATIONS)
{
begin;
select * from mysql.ndb_apply_status;
select * from test.t2 for update;
# --echo Error insert to ensure that TC requests are purely local
--exec $NDB_MGM -e "ALL ERROR 8083" >> $NDB_TOOLS_OUTPUT
# PK
select * from test.t1 where a = 100000;
# STILL DISABLED as UK read is not always local
# UK
#select * from test.t1 where c= 100000;
# PK OI scan
select * from test.t1 where a > 100000;
# Secondary OI scan
select * from test.t1 where d > 100000;
# Pushed PK -> PK join
select *
from test.t1 a join test.t1 b
on a.d = b.a
where a.a=2;
# Pushed PK -> UK join
select *
from test.t1 a join test.t1 b
on a.d = b.c
where a.a=2;
# Pushed UK -> UK join
select *
from test.t1 a join test.t1 b
on a.d = b.c
where a.c=2;
# Pushed OI -> PK join
select *
from test.t1 a join test.t1 b
on a.b = b.a
where a.d < 5;
# Pushed UI -> OI join
select *
from test.t1 a join test.t1 b
on a.b = b.c
where a.a=2;
# Pushed OI -> OI join
select *
from test.t1 a join test.t1 b
on b.d = a.c
where a.d < 6;
--exec $NDB_MGM -e "ALL ERROR 0" >> $NDB_TOOLS_OUTPUT
replace into nodes select node_id from ndbinfo.cluster_transactions;
commit;
--dec $ITERATIONS
}
--enable_query_log
--enable_result_log
--echo Expect that the transaction ran on all 4 nodes :
select count(1) from nodes;
drop table nodes;
drop table test.t2;