1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Fix for BUG#2922 "Crash (signal11) after "load data from master""

with a testcase.
We needed to init_master_info before we flush_master_info
in LOAD DATA FROM MASTER.
This commit is contained in:
guilhem@mysql.com
2004-03-17 10:35:03 +01:00
parent d325d2ab45
commit 0f3600d51e
3 changed files with 37 additions and 2 deletions

View File

@ -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);
@ -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;