mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 03:21:53 +01:00
2a001d5389
If a binlog file is manually replaced with a namesake directory the internal purging did not handle the error of deleting the file so that eventually a post-execution guards fires an assert. Fixed with reusing a snippet of code for bug@18199 to tolerate lack of the file but no other error at an attempt to delete it. The same applied to the index file deletion. The cset carries pieces of manual merging. mysql-test/r/binlog_index.result: new results mysql-test/r/ctype_big5.result: results changed mysql-test/suite/binlog/r/binlog_auto_increment_bug33029.result: new results mysql-test/suite/binlog/r/binlog_stm_blackhole.result: new results mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test: cleanup. still todo: to let the test run multiple times w/o restarting the server (just ./mtr test) mysql-test/suite/rpl/r/rpl_stm_auto_increment_bug33029.result: results changed mysql-test/suite/rpl/t/rpl_stm_auto_increment_bug33029.test: guarding the test with statement format condition as the logics of the test requires sql/log.cc: two changes. One for the bug, other manual merge. The bug change needs MYF(0) to pass to my_delete because not all error out of the function are critical. The finer check is done on the caller of my_delete similarly how it was implemented for bug@18199 fixes. Non-existance of a file is not a critical error. sql/sql_class.cc: manual merge, removing extra automatically brought hunk.
54 lines
1.7 KiB
Text
54 lines
1.7 KiB
Text
# 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;
|
|
|
|
copy_file $MYSQL_TEST_DIR/std_data/bug33029-slave-relay-bin.000001 $MYSQLTEST_VARDIR/master-data/slave-relay-bin.000001;
|
|
|
|
write_file $MYSQLTEST_VARDIR/master-data/slave-relay-bin.index;
|
|
slave-relay-bin.000001
|
|
EOF
|
|
|
|
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;
|
|
|
|
remove_file $MYSQLTEST_VARDIR/master-data/slave-relay-bin.000001;
|
|
remove_file $MYSQLTEST_VARDIR/master-data/slave-relay-bin.index;
|
|
stop slave sql_thread;
|
|
let $keep_connection=1;
|
|
source include/wait_for_slave_sql_to_stop.inc;
|
|
|