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

Manual merge of mysql-5.1-bugteam to mysql-trunk-merge.

Conflicts:

Text conflict in mysql-test/r/grant.result
Text conflict in mysql-test/t/grant.test
Text conflict in mysys/mf_loadpath.c
Text conflict in sql/slave.cc
Text conflict in sql/sql_priv.h
This commit is contained in:
Alexey Kopytov
2010-05-09 02:03:35 +04:00
28 changed files with 532 additions and 38 deletions

View File

@ -1347,6 +1347,10 @@ bool change_master(THD* thd, Master_info* mi)
const char* errmsg= 0;
bool need_relay_log_purge= 1;
bool ret= FALSE;
char saved_host[HOSTNAME_LENGTH + 1];
uint saved_port;
char saved_log_name[FN_REFLEN];
my_off_t saved_log_pos;
DBUG_ENTER("change_master");
lock_slave_threads(mi);
@ -1388,6 +1392,17 @@ bool change_master(THD* thd, Master_info* mi)
could possibly modify the data structures from running
*/
/*
Before processing the command, save the previous state.
*/
char *pos;
pos= strmake(saved_host, mi->host, HOSTNAME_LENGTH);
pos= '\0';
saved_port= mi->port;
pos= strmake(saved_log_name, mi->master_log_name, FN_REFLEN - 1);
pos= '\0';
saved_log_pos= mi->master_log_pos;
/*
If the user specified host or port without binlog or position,
reset binlog's name to FIRST and position to 4.
@ -1586,6 +1601,15 @@ bool change_master(THD* thd, Master_info* mi)
/* Clear the errors, for a clean start */
mi->rli.clear_error();
mi->rli.clear_until_condition();
sql_print_information("'CHANGE MASTER TO executed'. "
"Previous state master_host='%s', master_port='%u', master_log_file='%s', "
"master_log_pos='%ld'. "
"New state master_host='%s', master_port='%u', master_log_file='%s', "
"master_log_pos='%ld'.", saved_host, saved_port, saved_log_name,
(ulong) saved_log_pos, mi->host, mi->port, mi->master_log_name,
(ulong) mi->master_log_pos);
/*
If we don't write new coordinates to disk now, then old will remain in
relay-log.info until START SLAVE is issued; but if mysqld is shutdown