Loading mysql-test/r/rpl000009.result +12 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,18 @@ n s 2 two bar 3 three bar 4 four bar stop slave; reset slave; load data from master; start slave; insert into bar.t1 values (5, 'five bar'); select * from bar.t1; n s 1 one bar 2 two bar 3 three bar 4 four bar 5 five bar load table bar.t1 from master; Table 't1' already exists drop table bar.t1; Loading mysql-test/t/rpl000009.test +15 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,21 @@ connection slave; sync_with_master; select * from bar.t1; # Check that LOAD DATA FROM MASTER is able to create master.info # if needed (if RESET SLAVE was used before), before writing to it (BUG#2922). stop slave; reset slave; load data from master; start slave; # see if replication coordinates were restored fine connection master; insert into bar.t1 values (5, 'five bar'); save_master_pos; connection slave; sync_with_master; select * from bar.t1; # Check that LOAD DATA FROM MASTER reports the error if it can't drop a # table to be overwritten. # DISABLED FOR NOW AS chmod IS NOT PORTABLE ON NON-UNIX Loading sql/repl_failsafe.cc +10 −2 Original line number Diff line number Diff line Loading @@ -874,7 +874,7 @@ int load_master_data(THD* thd) cleanup_mysql_results(db_res, cur_table_res - 1, table_res); // adjust position in the master // adjust replication coordinates from the master if (master_status_res) { MYSQL_ROW row = mc_mysql_fetch_row(master_status_res); Loading @@ -887,10 +887,18 @@ int load_master_data(THD* thd) */ if (row && row[0] && row[1]) { /* If the slave's master info is not inited, we init it, then we write the new coordinates to it. Must call init_master_info() *before* setting active_mi, because init_master_info() sets active_mi with defaults. */ if (init_master_info(active_mi, master_info_file, relay_log_info_file, 0)) send_error(&thd->net, ER_MASTER_INFO); strmake(active_mi->master_log_name, row[0], sizeof(active_mi->master_log_name)); active_mi->master_log_pos = strtoull(row[1], (char**) 0, 10); // don't hit the magic number // at least in recent versions, the condition below should be false if (active_mi->master_log_pos < BIN_LOG_HEADER_SIZE) active_mi->master_log_pos = BIN_LOG_HEADER_SIZE; active_mi->rli.pending = 0; Loading Loading
mysql-test/r/rpl000009.result +12 −0 Original line number Diff line number Diff line Loading @@ -111,6 +111,18 @@ n s 2 two bar 3 three bar 4 four bar stop slave; reset slave; load data from master; start slave; insert into bar.t1 values (5, 'five bar'); select * from bar.t1; n s 1 one bar 2 two bar 3 three bar 4 four bar 5 five bar load table bar.t1 from master; Table 't1' already exists drop table bar.t1; Loading
mysql-test/t/rpl000009.test +15 −0 Original line number Diff line number Diff line Loading @@ -108,6 +108,21 @@ connection slave; sync_with_master; select * from bar.t1; # Check that LOAD DATA FROM MASTER is able to create master.info # if needed (if RESET SLAVE was used before), before writing to it (BUG#2922). stop slave; reset slave; load data from master; start slave; # see if replication coordinates were restored fine connection master; insert into bar.t1 values (5, 'five bar'); save_master_pos; connection slave; sync_with_master; select * from bar.t1; # Check that LOAD DATA FROM MASTER reports the error if it can't drop a # table to be overwritten. # DISABLED FOR NOW AS chmod IS NOT PORTABLE ON NON-UNIX Loading
sql/repl_failsafe.cc +10 −2 Original line number Diff line number Diff line Loading @@ -874,7 +874,7 @@ int load_master_data(THD* thd) cleanup_mysql_results(db_res, cur_table_res - 1, table_res); // adjust position in the master // adjust replication coordinates from the master if (master_status_res) { MYSQL_ROW row = mc_mysql_fetch_row(master_status_res); Loading @@ -887,10 +887,18 @@ int load_master_data(THD* thd) */ if (row && row[0] && row[1]) { /* If the slave's master info is not inited, we init it, then we write the new coordinates to it. Must call init_master_info() *before* setting active_mi, because init_master_info() sets active_mi with defaults. */ if (init_master_info(active_mi, master_info_file, relay_log_info_file, 0)) send_error(&thd->net, ER_MASTER_INFO); strmake(active_mi->master_log_name, row[0], sizeof(active_mi->master_log_name)); active_mi->master_log_pos = strtoull(row[1], (char**) 0, 10); // don't hit the magic number // at least in recent versions, the condition below should be false if (active_mi->master_log_pos < BIN_LOG_HEADER_SIZE) active_mi->master_log_pos = BIN_LOG_HEADER_SIZE; active_mi->rli.pending = 0; Loading