mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 03:21:53 +01:00
Merge aelkin@bk-internal.mysql.com:/home/bk/mysql-5.1-rpl
into dsl-hkigw8-feb9fb00-191.dhcp.inet.fi:/home/elkin/MySQL/TEAM/BARE/mysql-5.1-new-rpl
This commit is contained in:
commit
89bfa9544d
3 changed files with 74 additions and 11 deletions
|
@ -4,23 +4,33 @@ create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
|||
set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
|
||||
# Verify that only one INSERT_ID event is binlogged.
|
||||
# Note, that because of WL#3368 mixed mode binlog records RBR events for the delayed
|
||||
let $table=t1;
|
||||
let $rows_inserted=11; # total number of inserted rows in this test
|
||||
insert delayed into t1 values (207);
|
||||
let $count=1;
|
||||
|
||||
# We use sleeps between statements, that's the only way to get a
|
||||
# repeatable binlog in a normal test run and under Valgrind. The
|
||||
# reason is that without sleeps, rows of different INSERT DELAYEDs
|
||||
# sometimes group together and sometimes not, so the table may be
|
||||
# unlocked/relocked causing a different number of table map log
|
||||
# events.
|
||||
sleep 2;
|
||||
# use this macro instead of sleeps.
|
||||
|
||||
--source include/wait_until_rows_count.inc
|
||||
insert delayed into t1 values (null);
|
||||
sleep 2;
|
||||
inc $count;
|
||||
--source include/wait_until_rows_count.inc
|
||||
|
||||
insert delayed into t1 values (300);
|
||||
sleep 2; # time for the delayed queries to reach disk
|
||||
inc $count;
|
||||
--source include/wait_until_rows_count.inc
|
||||
|
||||
insert delayed into t1 values (null),(null),(null),(null);
|
||||
sleep 2;
|
||||
inc $count; inc $count; inc $count; inc $count;
|
||||
--source include/wait_until_rows_count.inc
|
||||
|
||||
insert delayed into t1 values (null),(null),(400),(null);
|
||||
sleep 2;
|
||||
inc $count; inc $count; inc $count; inc $count;
|
||||
--source include/wait_until_rows_count.inc
|
||||
|
||||
#check this assertion about $count calculation
|
||||
--echo $count == $rows_inserted
|
||||
|
||||
select * from t1;
|
||||
--replace_column 2 # 5 #
|
||||
--replace_regex /table_id: [0-9]+/table_id: #/
|
||||
|
|
52
mysql-test/include/wait_until_rows_count.inc
Normal file
52
mysql-test/include/wait_until_rows_count.inc
Normal file
|
@ -0,0 +1,52 @@
|
|||
# include/wait_until_rows_count.inc
|
||||
# inspired by wait_for_slave_status by Matthias Leich
|
||||
#
|
||||
# SUMMARY
|
||||
#
|
||||
# Waits until SELECT count(*)-$count from $table returns zero
|
||||
#
|
||||
# USAGE
|
||||
#
|
||||
# Set vars like
|
||||
# let $count=11;
|
||||
# let $table=t1;
|
||||
# # invoke the macro
|
||||
# --include wait_until_rows_count.inc
|
||||
#
|
||||
# EXAMPLE
|
||||
# extra/binlog/binlog_insert_delayed.test
|
||||
#
|
||||
#
|
||||
# TODO: generalize up to wait_[until|while] with arbitrary select or even query and
|
||||
# a condition to wait or get awakened
|
||||
# It's impossible to implement such a "most" general macro without
|
||||
# extending mysqltest. Just no way to pass a query as an argument and
|
||||
# evaluate it here, like eval "$quuery". One is bound
|
||||
# to specify it inside of the macro
|
||||
|
||||
--disable_query_log
|
||||
|
||||
let $wait_counter= 300; # max wait in 0.1 seconds
|
||||
while ($wait_counter)
|
||||
{
|
||||
eval select count(*)-$count from $table into @rez;
|
||||
let $rez=`select @rez`;
|
||||
let $success=`SELECT @rez = 0`;
|
||||
let $no_success=1;
|
||||
if ($success)
|
||||
{
|
||||
let $wait_counter= 1; # droppping counter to leave loop
|
||||
let $no_success=0;
|
||||
}
|
||||
if ($no_success)
|
||||
{
|
||||
--sleep 0.1
|
||||
}
|
||||
dec $wait_counter;
|
||||
}
|
||||
|
||||
--enable_query_log
|
||||
if ($no_success)
|
||||
{
|
||||
--die Timeout in wait_until_rows_count.inc, required table never had a prescribed number of rows.
|
||||
}
|
|
@ -252,6 +252,7 @@ insert delayed into t1 values (null);
|
|||
insert delayed into t1 values (300);
|
||||
insert delayed into t1 values (null),(null),(null),(null);
|
||||
insert delayed into t1 values (null),(null),(400),(null);
|
||||
11 == 11
|
||||
select * from t1;
|
||||
a
|
||||
207
|
||||
|
|
Loading…
Add table
Reference in a new issue