Commit 539e2130 authored by unknown's avatar unknown
Browse files

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.


sql/sql_parse.cc:
  No binlog error generated
sql/sql_table.cc:
  Documentation
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
parent 78c4faa2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
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 −0
Original line number Diff line number Diff line
--innodb-lock-wait-timeout=1
+18 −0
Original line number Diff line number Diff line
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;
+3 −0
Original line number Diff line number Diff line
@@ -2610,6 +2610,7 @@ mysql_execute_command(THD *thd)
      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 @@ mysql_execute_command(THD *thd)
      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 @@ mysql_execute_command(THD *thd)
      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);
      }
Loading