mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
Fix for bug#5551 (Version 4).
The idea of the fix is that the administrative statements OPTIMIZE TABLE, REPAIR TABLE and ANALYZE TABLE should not generate binlog errors if there is no errors on the master.
This commit is contained in:
parent
4650f0acab
commit
485de9cbb7
6 changed files with 44 additions and 0 deletions
|
@ -95,6 +95,7 @@ kaj@work.mysql.com
|
|||
kent@mysql.com
|
||||
konstantin@mysql.com
|
||||
kostja@oak.local
|
||||
lars@mysql.com
|
||||
lenz@kallisto.mysql.com
|
||||
lenz@mysql.com
|
||||
magnus@neptunus.(none)
|
||||
|
|
15
mysql-test/r/rpl_failed_optimize.result
Normal file
15
mysql-test/r/rpl_failed_optimize.result
Normal file
|
@ -0,0 +1,15 @@
|
|||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
CREATE TABLE t1 ( a int ) ENGINE=InnoDB;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status Operation failed
|
||||
OPTIMIZE TABLE non_existing;
|
||||
Table Op Msg_type Msg_text
|
||||
test.non_existing optimize error Table 'test.non_existing' doesn't exist
|
1
mysql-test/t/rpl_failed_optimize-master.opt
Normal file
1
mysql-test/t/rpl_failed_optimize-master.opt
Normal file
|
@ -0,0 +1 @@
|
|||
--innodb-lock-wait-timeout=1
|
18
mysql-test/t/rpl_failed_optimize.test
Normal file
18
mysql-test/t/rpl_failed_optimize.test
Normal file
|
@ -0,0 +1,18 @@
|
|||
source include/have_innodb.inc;
|
||||
source include/master-slave.inc;
|
||||
|
||||
#
|
||||
# BUG#5551 "Failed OPTIMIZE TABLE is logged to binary log"
|
||||
# Replication should work when OPTIMIZE TABLE timeouts, and
|
||||
# when OPTIMIZE TABLE is executed on a non-existing table
|
||||
#
|
||||
|
||||
CREATE TABLE t1 ( a int ) ENGINE=InnoDB;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
connection master1;
|
||||
OPTIMIZE TABLE t1;
|
||||
|
||||
OPTIMIZE TABLE non_existing;
|
||||
sync_slave_with_master;
|
|
@ -2610,6 +2610,7 @@ unsent_create_error:
|
|||
mysql_update_log.write(thd, thd->query, thd->query_length);
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
thd->clear_error(); // No binlog error generated
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
||||
mysql_bin_log.write(&qinfo);
|
||||
}
|
||||
|
@ -2638,6 +2639,7 @@ unsent_create_error:
|
|||
mysql_update_log.write(thd, thd->query, thd->query_length);
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
thd->clear_error(); // No binlog error generated
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
||||
mysql_bin_log.write(&qinfo);
|
||||
}
|
||||
|
@ -2660,6 +2662,7 @@ unsent_create_error:
|
|||
mysql_update_log.write(thd, thd->query, thd->query_length);
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
thd->clear_error(); // No binlog error generated
|
||||
Query_log_event qinfo(thd, thd->query, thd->query_length, 0);
|
||||
mysql_bin_log.write(&qinfo);
|
||||
}
|
||||
|
|
|
@ -1734,6 +1734,12 @@ end:
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
RETURN VALUES
|
||||
0 Message sent to net (admin operation went ok)
|
||||
-1 Message should be sent by caller
|
||||
(admin operation or network communication failed)
|
||||
*/
|
||||
static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
||||
HA_CHECK_OPT* check_opt,
|
||||
const char *operator_name,
|
||||
|
|
Loading…
Reference in a new issue