List:Commits« Previous MessageNext Message »
From:Alex Ivanov Notebook Date:June 5 2006 3:49am
Subject:bk commit into 5.1 tree (aivanov:1.2160) BUG#18948
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of alexi. When alexi does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.2160 06/06/05 05:49:06 aivanov@stripped +4 -0
  Fixed BUG#18948 "Disabled test case rpl_row_inexist_tbl".
   The bug was caused by ignoring failure when opening a
   a table in Table_map_log_event::exec_event().

  sql/log_event.cc
    1.224 06/06/05 05:48:50 aivanov@stripped +7 -29
    Table_map_log_event::exec_event(): Remove code which ignores
     opening table failure. Previously, this code was needed
     because of extraneous table maps in the binary log. Currently,
     for any table that should be replicated to slave, a filter is
     needed (bug#18948).

  mysql-test/t/rpl_row_inexist_tbl.test
    1.2 06/06/05 05:48:50 aivanov@stripped +11 -3
    Extended test case with "replicate-ignore-table" t2.

  mysql-test/t/disabled.def
    1.157 06/06/05 05:48:50 aivanov@stripped +0 -1
    Enabled rpl_row_inexist_table test.

  mysql-test/r/rpl_row_inexist_tbl.result
    1.2 06/06/05 05:48:50 aivanov@stripped +13 -4
    Fixed test case result.

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	aivanov
# Host:	mysqld.localdomain
# Root:	/home/alexi/bugs/mysql-5.1-18948

--- 1.223/sql/log_event.cc	2006-05-31 21:21:41 +04:00
+++ 1.224/sql/log_event.cc	2006-06-05 05:48:50 +04:00
@@ -5853,9 +5853,7 @@
 
     /*
       Open the table if it is not already open and add the table to table map.
-      If the table should not be replicated, we don't bother to do anything.
-      The table map will return NULL and the row-level event will effectively
-      be a no-op.
+      Note that for any table that should not be replicated, a filter is needed.
     */
     uint count;
     /*
@@ -5871,34 +5869,14 @@
         /*
           Error reporting borrowed from Query_log_event with many excessive
           simplifications (we don't honour --slave-skip-errors)
-
-          BUG: There can be extreneous table maps in the binary log,
-          so in case we fail to open the table, we just generate a
-          warning and do not add the table to the list of tables to
-          open and lock.
         */
         uint actual_error= thd->net.last_errno;
-        switch (actual_error)
-        {
-        case ER_NO_SUCH_TABLE:
-          slave_print_msg(WARNING_LEVEL, rli, actual_error,
-                          thd->net.last_error ?
-                          thd->net.last_error :
-                          "<no message>");
-          clear_all_errors(thd, rli);
-          rli->inc_event_relay_log_pos();       // Continue with next event
-          error= 0;
-          break;
-
-        default:
-          slave_print_msg(ERROR_LEVEL, rli, actual_error,
-                          "Error '%s' on opening table `%s`.`%s`",
-                          (actual_error ? thd->net.last_error :
-                           "unexpected success or fatal error"),
-                          table_list->db, table_list->table_name);
-          thd->query_error= 1;
-          break;
-        }
+        slave_print_msg(ERROR_LEVEL, rli, actual_error,
+                        "Error '%s' on opening table `%s`.`%s`",
+                        (actual_error ? thd->net.last_error :
+                         "unexpected success or fatal error"),
+                        table_list->db, table_list->table_name);
+        thd->query_error= 1;
       }
       DBUG_RETURN(error);
     }

--- 1.156/mysql-test/t/disabled.def	2006-05-16 22:58:11 +04:00
+++ 1.157/mysql-test/t/disabled.def	2006-06-05 05:48:50 +04:00
@@ -34,7 +34,6 @@
 rpl_switch_stm_row_mixed : BUG#18590 2006-03-28 brian
 rpl_row_blob_innodb      : BUG#18980 2006-04-10 kent    Test fails randomly
 rpl_row_func003 	 : BUG#19074 2006-13-04 andrei  test failed
-rpl_row_inexist_tbl      : BUG#18948 2006-03-09 mats    Disabled since patch makes this
test wait forever
 rpl_sp                   : BUG#16456 2006-02-16 jmiller
 
 # the below testcase have been reworked to avoid the bug, test contains comment, keep bug
open

--- 1.1/mysql-test/r/rpl_row_inexist_tbl.result	2005-12-22 08:34:53 +03:00
+++ 1.2/mysql-test/r/rpl_row_inexist_tbl.result	2006-06-05 05:48:50 +04:00
@@ -5,9 +5,18 @@
 drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
 start slave;
 create table t1 (a int not null primary key);
+insert into  t1 values (1);
+create table t2 (a int);
+insert into  t2 values (1);
+update t1, t2 set t1.a = 0 where t1.a = t2.a;
+show tables;
+Tables_in_test
+t1
+select * from t1;
+a
+0
 drop table t1;
 insert into t1 values (1);
-insert into t1 values (2);
 show slave status;
 Slave_IO_State	#
 Master_Host	127.0.0.1
@@ -24,13 +33,13 @@
 Replicate_Do_DB	
 Replicate_Ignore_DB	
 Replicate_Do_Table	
-Replicate_Ignore_Table	
+Replicate_Ignore_Table	test.t2
 Replicate_Wild_Do_Table	
 Replicate_Wild_Ignore_Table	
 Last_Errno	1146
 Last_Error	Error 'Table 'test.t1' doesn't exist' on opening table `test`.`t1`
 Skip_Counter	0
-Exec_Master_Log_Pos	209
+Exec_Master_Log_Pos	519
 Relay_Log_Space	#
 Until_Condition	None
 Until_Log_File	
@@ -42,4 +51,4 @@
 Master_SSL_Cipher	
 Master_SSL_Key	
 Seconds_Behind_Master	#
-drop table t1;
+drop table t1, t2;

--- 1.1/mysql-test/t/rpl_row_inexist_tbl.test	2005-12-22 08:35:02 +03:00
+++ 1.2/mysql-test/t/rpl_row_inexist_tbl.test	2006-06-05 05:48:50 +04:00
@@ -6,15 +6,23 @@
 
 connection master;
 create table t1 (a int not null primary key);
+insert into  t1 values (1);
+create table t2 (a int);
+insert into  t2 values (1);
+update t1, t2 set t1.a = 0 where t1.a = t2.a;
+
 sync_slave_with_master;
+# t2 should not have been replicated
+# t1 should have been properly updated 
+show tables;
+select * from t1;
 drop table t1;
 
 connection master;
 insert into t1 values (1);
-insert into t1 values (2);
 
 connection slave;
-# slave should have stopped because can't find table
+# slave should have stopped because can't find table t1
 wait_for_slave_to_stop;
 # see if we have a good error message:
 --replace_result $MASTER_MYPORT MASTER_MYPORT
@@ -24,4 +32,4 @@
 
 # cleanup
 connection master;
-drop table t1;
+drop table t1, t2;
Thread
bk commit into 5.1 tree (aivanov:1.2160) BUG#18948Alex Ivanov Notebook4 Jun