mirror of
https://github.com/MariaDB/server.git
synced 2025-01-24 07:44:22 +01:00
99f8d0a4a8
ChangeSet@1.2309.1.12, 2006-09-12 15:42:13+02:00, guilhem@gbichot3.local +14 -0 Fixing problems I identified in my auto_increment work pushed in July (as part of the auto_increment cleanup of WL #3146; ... The problem is in that show binlog events in indeterministic, row events can be compressed, so that 2 seconds original delay does not guard from inconsistency. We syncronize test's current inserted rows counter with system insert delayed thread per each query. From another side there is no requirement for binlog to be event per row and then to verify if binlog has recorded what was recently inserted is better via reading from it instead of 'show binlog events'. mysql-test/extra/binlog_tests/binlog_insert_delayed.test: removing sleeps, syncronizing with system delayed thread per each statement, note that an insert statement is performed atomically including writing to binlog, so that concurrent selects are waiting. That's why the wait macro is safe. mysql-test/r/binlog_row_binlog.result: new result mysql-test/include/wait_until_rows_count.inc: macro implements waiting until a targeted table has a prescribed rows number.
38 lines
1.3 KiB
Text
38 lines
1.3 KiB
Text
# Test of binlogging of INSERT_ID with INSERT DELAYED
|
|
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
|
# First, avoid BUG#20627:
|
|
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;
|
|
|
|
# use this macro instead of sleeps.
|
|
|
|
--source include/wait_until_rows_count.inc
|
|
insert delayed into t1 values (null);
|
|
inc $count;
|
|
--source include/wait_until_rows_count.inc
|
|
|
|
insert delayed into t1 values (300);
|
|
inc $count;
|
|
--source include/wait_until_rows_count.inc
|
|
|
|
insert delayed into t1 values (null),(null),(null),(null);
|
|
inc $count; inc $count; inc $count; inc $count;
|
|
--source include/wait_until_rows_count.inc
|
|
|
|
insert delayed into t1 values (null),(null),(400),(null);
|
|
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: #/
|
|
show binlog events from 102;
|
|
drop table t1;
|