#1) Create a master-slave topology with master's binlog_format=row.
include/master-slave.inc
Warnings:
Note	####	Sending passwords in plain text without SSL/TLS is extremely insecure.
Note	####	Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
[connection master]
#2)  On slave, set slave_rows_search_algorithms= 'HASH_SCAN' and set a
#    simulation point to fake a my_alloc_failure i.e, 'fake_malloc_failure'.
[connection slave]
call mtr.add_suppression("Slave SQL.*Could not execute Update_rows event on table test.t1");
call mtr.add_suppression("Slave: Got error 1*");
call mtr.add_suppression("The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state");
SET @saved_slave_rows_search_algorithms= @@global.slave_rows_search_algorithms;
SET GLOBAL slave_rows_search_algorithms= 'HASH_SCAN';
SET @old_debug= @@global.debug;
SET GLOBAL debug= '+d,fake_myalloc_failure';
#3) On master, create a table, insert a row and do an update.
[connection master]
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1);
UPDATE t1 SET a=2 WHERE a=1;
#4) The update on master causes the slave sql thread to stop with Error 1030.
[connection slave]
include/wait_for_slave_sql_error.inc [errno=1030]
#5) Cleanup
SET GLOBAL debug= @old_debug;
SET GLOBAL slave_rows_search_algorithms= @saved_slave_rows_search_algorithms;
DROP TABLE t1;
[connection master]
DROP TABLE  t1;
[connection slave]
include/wait_for_slave_sql_error.inc [errno=1030]
include/stop_slave_io.inc
RESET SLAVE;
include/rpl_end.inc
