Commit 36183379 authored by Alfranio Correia's avatar Alfranio Correia

BUG#57098 RBR breaks on changing user password on 5.1 master -> 5.5 slave

Backported the patch for BUG#55452.
parent 58995280
...@@ -1593,6 +1593,7 @@ bool change_password(THD *thd, const char *host, const char *user, ...@@ -1593,6 +1593,7 @@ bool change_password(THD *thd, const char *host, const char *user,
/* Buffer should be extended when password length is extended. */ /* Buffer should be extended when password length is extended. */
char buff[512]; char buff[512];
ulong query_length; ulong query_length;
bool save_binlog_row_based;
uint new_password_len= (uint) strlen(new_password); uint new_password_len= (uint) strlen(new_password);
bool result= 1; bool result= 1;
DBUG_ENTER("change_password"); DBUG_ENTER("change_password");
...@@ -1628,6 +1629,14 @@ bool change_password(THD *thd, const char *host, const char *user, ...@@ -1628,6 +1629,14 @@ bool change_password(THD *thd, const char *host, const char *user,
if (!(table= open_ltable(thd, &tables, TL_WRITE, 0))) if (!(table= open_ltable(thd, &tables, TL_WRITE, 0)))
DBUG_RETURN(1); DBUG_RETURN(1);
/*
This statement will be replicated as a statement, even when using
row-based replication. The flag will be reset at the end of the
statement.
*/
if ((save_binlog_row_based= thd->current_stmt_binlog_row_based))
thd->clear_current_stmt_binlog_row_based();
VOID(pthread_mutex_lock(&acl_cache->lock)); VOID(pthread_mutex_lock(&acl_cache->lock));
ACL_USER *acl_user; ACL_USER *acl_user;
if (!(acl_user= find_acl_user(host, user, TRUE))) if (!(acl_user= find_acl_user(host, user, TRUE)))
...@@ -1663,6 +1672,12 @@ bool change_password(THD *thd, const char *host, const char *user, ...@@ -1663,6 +1672,12 @@ bool change_password(THD *thd, const char *host, const char *user,
} }
end: end:
close_thread_tables(thd); close_thread_tables(thd);
/* Restore the state of binlog format */
DBUG_ASSERT(!thd->current_stmt_binlog_row_based);
if (save_binlog_row_based)
thd->set_current_stmt_binlog_row_based();
DBUG_RETURN(result); DBUG_RETURN(result);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment