Browse Source
Bug#48308.
Bug#48308.
1. Now test use fake_relay_log primitive 2. Added RESET SLAVE to include/setup_fake_relay_log.inc for removing relay log info file 3. Added RESET SLAVE to include/cleanup_fake_relay_log.inc 4. Test moved to rpl suite as rpl_binlog_auto_inc_bug33029.test 5. Updated result filepull/374/head
6 changed files with 58 additions and 99 deletions
-
4mysql-test/include/cleanup_fake_relay_log.inc
-
28mysql-test/include/setup_fake_relay_log.inc
-
74mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test
-
9mysql-test/suite/rpl/r/rpl_binlog_auto_inc_bug33029.result
-
0mysql-test/suite/rpl/t/rpl_binlog_auto_inc_bug33029-master.opt
-
42mysql-test/suite/rpl/t/rpl_binlog_auto_inc_bug33029.test
@ -1,74 +0,0 @@ |
|||
# BUG#33029 5.0 to 5.1 replication fails on dup key when inserting |
|||
# using a trig in SP |
|||
|
|||
# For all 5.0 up to 5.0.58 exclusive, and 5.1 up to 5.1.12 exclusive, |
|||
# if one statement in a SP generated AUTO_INCREMENT value by the top |
|||
# statement, all statements after it would be considered generated |
|||
# AUTO_INCREMENT value by the top statement, and a erroneous INSERT_ID |
|||
# value might be associated with these statement, which could cause |
|||
# duplicate entry error and stop the slave. |
|||
|
|||
# Test if the slave can replicate from such a buggy master |
|||
|
|||
# The bug33029-slave-relay-bin.000001 file is the |
|||
# slave-replay-bin.000003 file generated by run the |
|||
# rpl_auto_increment_bug33029.test with clean up statements at the end |
|||
# of the test case removed on a buggy 5.0 server |
|||
|
|||
source include/have_log_bin.inc; |
|||
|
|||
# Need to restore this at the end; CHANGE MASTER modifies it (see the |
|||
# manual for CHANGE MASTER). |
|||
SET @old_relay_log_purge= @@global.relay_log_purge; |
|||
|
|||
let $MYSQLD_DATADIR= `select @@datadir`; |
|||
|
|||
copy_file $MYSQL_TEST_DIR/std_data/bug33029-slave-relay-bin.000001 $MYSQLD_DATADIR/slave-relay-bin.000001; |
|||
|
|||
|
|||
# After patch for BUG#12190, the filename used in CHANGE MASTER |
|||
# RELAY_LOG_FILE will be automatically added the directory of the |
|||
# relay log before comparison, thus we need to added the directory |
|||
# part (./ on unix .\ on windows) when faking the relay-log-bin.index. |
|||
disable_query_log; |
|||
if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") = 0`) |
|||
{ |
|||
eval select './slave-relay-bin.000001\n' into dumpfile '$MYSQLD_DATADIR/slave-relay-bin.index'; |
|||
} |
|||
|
|||
if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") != 0`) |
|||
{ |
|||
eval select '.\\\\slave-relay-bin.000001\n' into dumpfile '$MYSQLD_DATADIR/slave-relay-bin.index'; |
|||
} |
|||
enable_query_log; |
|||
|
|||
change master to |
|||
MASTER_HOST='dummy.localdomain', |
|||
RELAY_LOG_FILE='slave-relay-bin.000001', |
|||
RELAY_LOG_POS=4; |
|||
|
|||
start slave sql_thread; |
|||
disable_result_log; |
|||
select MASTER_POS_WAIT('master-bin.000001', 3776); |
|||
enable_result_log; |
|||
|
|||
echo # Result on slave; |
|||
SELECT * FROM t1; |
|||
SELECT * FROM t2; |
|||
|
|||
# clean up |
|||
disable_warnings; |
|||
DROP TABLE IF EXISTS t1, t2; |
|||
DROP PROCEDURE IF EXISTS p1; |
|||
DROP PROCEDURE IF EXISTS p2; |
|||
DROP FUNCTION IF EXISTS f1; |
|||
DROP TRIGGER IF EXISTS tr1; |
|||
enable_warnings; |
|||
|
|||
stop slave sql_thread; |
|||
reset slave; |
|||
source include/wait_for_slave_sql_to_stop.inc; |
|||
remove_file $MYSQLD_DATADIR/slave-relay-bin.000001; |
|||
remove_file $MYSQLD_DATADIR/slave-relay-bin.index; |
|||
|
|||
SET @@global.relay_log_purge= @old_relay_log_purge; |
|||
@ -0,0 +1,42 @@ |
|||
# BUG#33029 5.0 to 5.1 replication fails on dup key when inserting |
|||
# using a trig in SP |
|||
|
|||
# For all 5.0 up to 5.0.58 exclusive, and 5.1 up to 5.1.12 exclusive, |
|||
# if one statement in a SP generated AUTO_INCREMENT value by the top |
|||
# statement, all statements after it would be considered generated |
|||
# AUTO_INCREMENT value by the top statement, and a erroneous INSERT_ID |
|||
# value might be associated with these statement, which could cause |
|||
# duplicate entry error and stop the slave. |
|||
|
|||
# Test if the slave can replicate from such a buggy master |
|||
|
|||
# The bug33029-slave-relay-bin.000001 file is the |
|||
# slave-replay-bin.000003 file generated by run the |
|||
# rpl_auto_increment_bug33029.test with clean up statements at the end |
|||
# of the test case removed on a buggy 5.0 server |
|||
|
|||
source include/have_log_bin.inc; |
|||
|
|||
let $fake_relay_log= $MYSQL_TEST_DIR/std_data/bug33029-slave-relay-bin.000001; |
|||
source include/setup_fake_relay_log.inc; |
|||
|
|||
start slave sql_thread; |
|||
disable_result_log; |
|||
select MASTER_POS_WAIT('master-bin.000001', 3776); |
|||
enable_result_log; |
|||
|
|||
echo # Result on slave; |
|||
SELECT * FROM t1; |
|||
SELECT * FROM t2; |
|||
|
|||
# clean up |
|||
disable_warnings; |
|||
DROP TABLE IF EXISTS t1, t2; |
|||
DROP PROCEDURE IF EXISTS p1; |
|||
DROP PROCEDURE IF EXISTS p2; |
|||
DROP FUNCTION IF EXISTS f1; |
|||
DROP TRIGGER IF EXISTS tr1; |
|||
enable_warnings; |
|||
|
|||
stop slave sql_thread; |
|||
source include/cleanup_fake_relay_log.inc; |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue