mariadb/mysql-test/suite/rpl/r
Mats Kindahl 8d9cf89e96 Bug #38360: BLACKHOLE replication with RBR is broken
The Blackhole engine did not support row-based replication
since the delete_row(), update_row(), and the index and range
searching functions were not implemented.

This patch adds row-based replication support for the
Blackhole engine by implementing the two functions mentioned
above, and making the engine pretend that it has found the
correct row to delete or update when executed from the slave
SQL thread by implementing index and range searching functions.

It is necessary to only pretend this for the SQL thread, since
a SELECT executed on the Blackhole engine will otherwise never
return EOF, causing a livelock.


mysql-test/extra/binlog_tests/blackhole.test:
  Blackhole now handles row-based replication.
mysql-test/extra/rpl_tests/rpl_blackhole.test:
  Test helper file for testing that blackhole actually
  writes something to the binary log on the slave.
mysql-test/suite/binlog/t/binlog_multi_engine.test:
  Replication now handles row-based replcation.
mysql-test/suite/rpl/t/rpl_blackhole.test:
  Test that Blackhole works with primary key, index, or none.
sql/log_event.cc:
  Correcting code to only touch filler bits and leave
  all other bits alone. It is necessary since there is
  no guarantee that the engine will be able to fill in
  the bits correctly (e.g., the blackhole engine).
storage/blackhole/ha_blackhole.cc:
  Adding definitions for update_row() and delete_row() to return OK
  when executed from the slave SQL thread with thd->query == NULL
  (indicating that row-based replication events are being processed).
  
  Changing rnd_next(), index_read(), index_read_idx(), and
  index_read_last() to return OK when executed from the slave SQL
  thread (faking that the row has been found so that processing
  proceeds to update/delete the row).
storage/blackhole/ha_blackhole.h:
  Enabling row capabilities for engine.
  Defining write_row(), update_row(), and delete_row().
  Making write_row() private (as it should be).
2008-10-02 11:02:38 +02:00
..
rpl000001.a.result
rpl000001.b.result
rpl000010.result
rpl000011.result
rpl000013.result
rpl000017.result
rpl_000015.result
rpl_alter.result
rpl_alter_db.result
rpl_auto_increment.result
rpl_auto_increment_11932.result
rpl_binlog_grant.result
rpl_binlog_query_filter_rules.result Bug#36099 replicate-do-db affects replaying RBR events with mysqlbinlog 2008-09-03 13:01:18 +03:00
rpl_bit.result
rpl_bit_npk.result
rpl_blackhole.result Bug #38360: BLACKHOLE replication with RBR is broken 2008-10-02 11:02:38 +02:00
rpl_bug31076.result
rpl_bug33931.result
rpl_change_master.result
rpl_charset.result
rpl_charset_sjis.result
rpl_colSize.result
rpl_commit_after_flush.result
rpl_create_database.result
rpl_critical_errors.result
rpl_critical_errors.result.txt
rpl_ddl.result
rpl_deadlock_innodb.result
rpl_delete_no_where.result
rpl_do_grant.result
rpl_drop.result
rpl_drop_db.result
rpl_drop_temp.result
rpl_drop_view.result
rpl_dual_pos_advance.result
rpl_EE_err.result
rpl_empty_master_crash.result
rpl_err_ignoredtable.result
rpl_events.result
rpl_extraCol_innodb.result
rpl_extraCol_myisam.result
rpl_extraColmaster_innodb.result
rpl_extraColmaster_myisam.result
rpl_failed_optimize.result Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that 2008-08-11 20:02:03 +02:00
rpl_filter_tables_not_exist.result Fix cherry picking patch of BUG#37051 2008-08-26 20:11:56 +08:00
rpl_flushlog_loop.result
rpl_foreign_key_innodb.result
rpl_found_rows.result Merge magare.gmz:/home/kgeorge/mysql/work/B36011-take2-5.0-bugteam 2008-05-16 19:03:50 +03:00
rpl_free_items.result
rpl_get_lock.result
rpl_grant.result
rpl_idempotency.result
rpl_ignore_grant.result
rpl_ignore_revoke.result
rpl_ignore_table.result
rpl_ignore_table_update.result
rpl_incident.result
rpl_init_slave.result
rpl_innodb.result
rpl_innodb_bug28430.result
rpl_innodb_bug30888.result
rpl_innodb_bug30919.result
rpl_innodb_mixed_ddl.result
rpl_innodb_mixed_dml.result Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that 2008-08-11 20:02:03 +02:00
rpl_insert.result
rpl_insert_id.result Fixes to make rpl_insert_id pass in 5.1-bugteam. 2008-05-16 16:08:24 +02:00
rpl_insert_id_pk.result
rpl_insert_ignore.result
rpl_insert_select.result
rpl_invoked_features.result
rpl_known_bugs_detection.result
rpl_LD_INFILE.result
rpl_load_from_master.result
rpl_load_table_from_master.result
rpl_loaddata.result
rpl_loaddata_charset.result
rpl_loaddata_fatal.result
rpl_loaddata_m.result
rpl_loaddata_map.result BUG#38178: rpl_loaddata_map fails sporadically in pushbuild 2008-07-18 13:34:19 +02:00
rpl_loaddata_s.result
rpl_loaddata_simple.result
rpl_loaddatalocal.result
rpl_loadfile.result
rpl_locale.result
rpl_log_pos.result
rpl_many_optimize.result
rpl_master_pos_wait.result
rpl_misc_functions.result
rpl_mixed_ddl_dml.result
rpl_multi_delete.result
rpl_multi_delete2.result
rpl_multi_engine.result
rpl_multi_update.result
rpl_multi_update2.result
rpl_multi_update3.result
rpl_multi_update4.result
rpl_optimize.result
rpl_packet.result
rpl_plugin_load.result Bug#35807 - INSTALL PLUGIN replicates row-based, but not stmt-based 2008-08-19 17:35:56 +02:00
rpl_ps.result
rpl_rbr_to_sbr.result
rpl_read_only.result
rpl_redirect.result
rpl_relay_space_innodb.result
rpl_relay_space_myisam.result
rpl_relayrotate.result
rpl_relayspace.result
rpl_replicate_do.result
rpl_replicate_ignore_db.result
rpl_report.result
rpl_rewrt_db.result
rpl_rotate_logs.result
rpl_row_001.result
rpl_row_4_bytes.result
rpl_row_basic_2myisam.result Bug #32709: Assertion failed: trx_data->empty(), file log.cc 2008-09-03 22:04:07 +02:00
rpl_row_basic_3innodb.result Bug #32709: Assertion failed: trx_data->empty(), file log.cc 2008-09-03 22:04:07 +02:00
rpl_row_basic_8partition.result
rpl_row_basic_11bugs-master.opt
rpl_row_basic_11bugs-slave.opt
rpl_row_basic_11bugs.result
rpl_row_blob_innodb.result
rpl_row_blob_myisam.result
rpl_row_colSize.result
rpl_row_create_table.result
rpl_row_delayed_ins.result
rpl_row_drop.result
rpl_row_err_ignoredtable.result
rpl_row_flsh_tbls.result
rpl_row_func001.result
rpl_row_func002.result
rpl_row_func003.result
rpl_row_inexist_tbl.result Merge magare.gmz:/home/kgeorge/mysql/work/B36011-take2-5.0-bugteam 2008-05-16 19:03:50 +03:00
rpl_row_insert_delayed.result
rpl_row_loaddata_m.result
rpl_row_log.result
rpl_row_log_innodb.result
rpl_row_max_relay_size.result
rpl_row_multi_query.result
rpl_row_mysqlbinlog.result
rpl_row_mystery22.result
rpl_row_NOW.result
rpl_row_reset_slave.result
rpl_row_sp001.result
rpl_row_sp002_innodb.result
rpl_row_sp003.result
rpl_row_sp005.result
rpl_row_sp006_InnoDB.result
rpl_row_sp007_innodb.result
rpl_row_sp008.result
rpl_row_sp009.result
rpl_row_sp010.result
rpl_row_sp011.result
rpl_row_sp012.result
rpl_row_stop_middle.result
rpl_row_stop_middle_update.result
rpl_row_tabledefs_2myisam.result
rpl_row_tabledefs_3innodb.result
rpl_row_tabledefs_7ndb.result
rpl_row_trig001.result
rpl_row_trig002.result
rpl_row_trig003.result
rpl_row_trig004.result
rpl_row_unsafe_funcs.result
rpl_row_until.result
rpl_row_USER.result
rpl_row_UUID.result
rpl_row_view01.result
rpl_server_id.result
rpl_server_id1.result Bug #36818 rpl_server_id1 fails expecting slave has stopped 2008-07-18 14:53:16 +03:00
rpl_server_id2.result
rpl_session_var.result
rpl_set_charset.result
rpl_sf.result
rpl_skip_error.result
rpl_slave_skip.result
rpl_slave_status.result BUG#36826: rpl_slave_status fails sporadically in pushbuild 2008-05-26 15:06:49 +02:00
rpl_sp.result Re-record results from unmerged file. 2008-05-16 11:38:13 -04:00
rpl_sp004.result
rpl_sp_effects.result
rpl_sporadic_master.result
rpl_ssl.result
rpl_ssl1.result
rpl_start_stop_slave.result
rpl_stm_000001.result
rpl_stm_auto_increment_bug33029.result
rpl_stm_EE_err2.result
rpl_stm_flsh_tbls.result
rpl_stm_insert_delayed.result
rpl_stm_log.result BUG#38068: binlog_stm_binlog fails sporadically in pushbuild 2008-07-29 17:36:13 +02:00
rpl_stm_max_relay_size.result
rpl_stm_multi_query.result
rpl_stm_mystery22.result
rpl_stm_no_op.result
rpl_stm_reset_slave.result
rpl_stm_until.result
rpl_switch_stm_row_mixed.result
rpl_temp_table.result
rpl_temporary.result Bug #34647 rpl_temporary discovers more than one dump thread and fails to select 2008-07-18 11:20:55 +03:00
rpl_temporary_errors.result
rpl_timezone.result
rpl_trigger.result
rpl_trunc_temp.result
rpl_truncate_2myisam.result
rpl_truncate_3innodb.result
rpl_truncate_7ndb_2.result
rpl_udf.result
rpl_user.result
rpl_user_variables.result
rpl_variables.result BUG#38170: rpl_variables failed on pushbuild: could not sync with master 2008-07-17 18:26:59 +02:00
rpl_variables_stm.result
rpl_view.result