diff --git a/mysql-test/r/rpl_empty_master_crash.result b/mysql-test/r/rpl_empty_master_crash.result new file mode 100644 index 00000000000..6ae5d15031b --- /dev/null +++ b/mysql-test/r/rpl_empty_master_crash.result @@ -0,0 +1,12 @@ +slave stop; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +slave start; +use test; +drop table if exists t1; +show slave status; +Master_Host Master_User Master_Port Connect_retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Exec_master_log_pos Relay_log_space + 0 0 0 0 No No 0 0 0 0 +load table t1 from master; +Error in fetch_master_table diff --git a/mysql-test/t/rpl_empty_master_crash.test b/mysql-test/t/rpl_empty_master_crash.test new file mode 100644 index 00000000000..158b59169ee --- /dev/null +++ b/mysql-test/t/rpl_empty_master_crash.test @@ -0,0 +1,7 @@ +source include/master-slave.inc; +connection master; +use test; +drop table if exists t1; +show slave status; +--error 1218 +load table t1 from master; diff --git a/sql/repl_failsafe.cc b/sql/repl_failsafe.cc index 257418d1682..fab1491fc2b 100644 --- a/sql/repl_failsafe.cc +++ b/sql/repl_failsafe.cc @@ -608,6 +608,9 @@ int show_slave_hosts(THD* thd) int connect_to_master(THD *thd, MYSQL* mysql, MASTER_INFO* mi) { + if (!mi->host || !*mi->host) /* empty host */ + return 1; + if (!mc_mysql_connect(mysql, mi->host, mi->user, mi->password, 0, mi->port, 0, 0)) {