Commit b59f3f58 authored by unknown's avatar unknown
Browse files

WL#3023 (Use locking in a statement-like manner):

Print a warning instead of error on failure to open non-existing table.
This is a temporary patch to prevent a bug in NDB from stopping the slave.


mysql-test/r/rpl_ndb_blob.result:
  result change
mysql-test/t/disabled.def:
  Disabling problematic tests.
mysql-test/t/rpl_ndb_blob.test:
  Don't show binlog since it's not deterministic.
sql/log_event.cc:
  Print a warning instead of error on failure to open non-existing table.
  This is a temporary patch to prevent a bug in NDB from stopping the slave.
parent a7f5fdc3
Loading
Loading
Loading
Loading
+0 −48
Original line number Diff line number Diff line
@@ -78,51 +78,3 @@ S 7 a6bae0cfe6b45ff8c3c12d2ce577a1cd3931190f 107 39ee712b4b9e47f2cf3ba7c9790b2bf
S	8	e139adcb7b2974ee7ff227fd405709e5cb7c896c	108	ba8073b0e1a281d4111bd2d82c7722b01574c00b	NULL
S	9	1fc5168fe4be566b17b658d94e7813f0b5032cdb	NULL	NULL	NULL
drop table t1;
show binlog events;
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	4	Format_desc	1	102	Server ver: VERSION, Binlog ver: 4
master-bin.000001	102	Query	1	239	use `test`; create table t1 (
a int not null primary key,
b text not null
) engine=ndb
master-bin.000001	239	Query	1	303	BEGIN
master-bin.000001	303	Table_map	1	40	table_id: # (test.t1)
master-bin.000001	343	Table_map	1	93	table_id: # (cluster.apply_status)
master-bin.000001	396	Write_rows	1	135	table_id: #
master-bin.000001	438	Write_rows	1	806	table_id: #
master-bin.000001	1109	Write_rows	1	9841	table_id: # flags: STMT_END_F
master-bin.000001	10144	Query	1	10209	COMMIT
master-bin.000001	10209	Query	1	10273	BEGIN
master-bin.000001	10273	Table_map	1	40	table_id: # (test.t1)
master-bin.000001	10313	Table_map	1	93	table_id: # (cluster.apply_status)
master-bin.000001	10366	Write_rows	1	135	table_id: # flags: STMT_END_F
master-bin.000001	10408	Query	1	10473	COMMIT
master-bin.000001	10473	Query	1	10549	use `test`; drop table t1
master-bin.000001	10549	Query	1	10724	use `test`; create table t1 (
a int not null primary key,
b text not null,
c int,
d longblob,
e tinyblob
) engine=ndbcluster
master-bin.000001	10724	Query	1	10788	BEGIN
master-bin.000001	10788	Table_map	1	43	table_id: # (test.t1)
master-bin.000001	10831	Table_map	1	96	table_id: # (cluster.apply_status)
master-bin.000001	10884	Write_rows	1	138	table_id: #
master-bin.000001	10926	Write_rows	1	48922	table_id: #
master-bin.000001	59710	Write_rows	1	124424	table_id: #
master-bin.000001	135212	Write_rows	1	124530	table_id: #
master-bin.000001	135318	Write_rows	1	205949	table_id: #
master-bin.000001	216737	Write_rows	1	224233	table_id: #
master-bin.000001	235021	Write_rows	1	227511	table_id: #
master-bin.000001	238299	Write_rows	1	242379	table_id: #
master-bin.000001	253167	Write_rows	1	254075	table_id: #
master-bin.000001	264863	Write_rows	1	304323	table_id: #
master-bin.000001	315111	Write_rows	1	330415	table_id: # flags: STMT_END_F
master-bin.000001	341203	Query	1	341268	COMMIT
master-bin.000001	341268	Query	1	341332	BEGIN
master-bin.000001	341332	Table_map	1	43	table_id: # (test.t1)
master-bin.000001	341375	Table_map	1	96	table_id: # (cluster.apply_status)
master-bin.000001	341428	Write_rows	1	138	table_id: # flags: STMT_END_F
master-bin.000001	341470	Query	1	341535	COMMIT
master-bin.000001	341535	Query	1	341611	use `test`; drop table t1
+2 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@ rpl_ndb_2innodb : Bugs#17400: delete & update of rows in table without p
rpl_ndb_2myisam         : Bugs#17400: delete & update of rows in table without pk fails
rpl_ndb_auto_inc        : Bug#17086
#rpl_ndb_basic           : Bug#16228 [IN REVIEW]
rpl_ndb_blob            : interferes with following tests, causing hang
rpl_ndb_blob2           : interferes with following tests, causing hang
rpl_ndb_ddl             : Bug#17400: delete & update of rows in table without pk fails
rpl_ndb_delete_nowhere  : Bug#17400: delete & update of rows in table without pk fails
rpl_ndb_innodb2ndb      : Bugs#17400: delete & update of rows in table without pk fails
+3 −3
Original line number Diff line number Diff line
@@ -89,6 +89,6 @@ drop table t1;

--connection master
let $VERSION=`select version()`;
--replace_result $VERSION VERSION
--replace_regex /table_id: [0-9]+/table_id: #/
show binlog events;
#--replace_result $VERSION VERSION
#--replace_regex /table_id: [0-9]+/table_id: #/
#show binlog events;
+26 −6
Original line number Diff line number Diff line
@@ -5841,14 +5841,34 @@ int Table_map_log_event::exec_event(st_relay_log_info *rli)
        /*
          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;
        }
      }
      DBUG_RETURN(error);
    }