MDEV-5861 MySQL Bug#12601974 - STORED PROCEDURE SQL_MODE=NO_BACKSLASH_ESCAPES IGNORED AND BREAKS REPLICATION
escape usernames in CREATE/DROP USER error messages according to NO_BACKSLASH_ESCAPES
This commit is contained in:
parent
218280bcd7
commit
319bcde937
@ -48,3 +48,88 @@ DROP USER nopriv_user@localhost;
|
|||||||
#
|
#
|
||||||
# End Bug#54812
|
# End Bug#54812
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test for Bug#12601974 - STORED PROCEDURE SQL_MODE=NO_BACKSLASH_ESCAPES
|
||||||
|
# IGNORED AND BREAKS REPLICATION
|
||||||
|
#
|
||||||
|
SET @org_mode=@@sql_mode;
|
||||||
|
SET @@sql_mode='';
|
||||||
|
# USER NAME CONTAINING BACKSLASH IN CREATE USER OPERATION
|
||||||
|
CREATE USER 'user\'s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\'s_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\'s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\'s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\"s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\"s_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\"s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\"s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\bs_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\bs_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'users_12601974'@'localhost'
|
||||||
|
DROP USER 'user\bs_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\ns_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\ns_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\ns_12601974'@'localhost'
|
||||||
|
DROP USER 'user\ns_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\rs_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\rs_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\rs_12601974'@'localhost'
|
||||||
|
DROP USER 'user\rs_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\ts_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\ts_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\ts_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\\s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\\s_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\\s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\\s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\%s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\%s_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\\%s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\%s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\_s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\_s_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\\_s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\_s_12601974'@'localhost';
|
||||||
|
|
||||||
|
# END OF CASE - USER NAME CONTAINING BACKSLASH IN CREATE USER OPERATION
|
||||||
|
SET @@sql_mode='NO_BACKSLASH_ESCAPES';
|
||||||
|
# USER NAME CONTAINING BACKSLASH IN DROP USER OPERATION
|
||||||
|
CREATE USER 'user\"s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\"s_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\"s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\"s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\bs_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\bs_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\bs_12601974'@'localhost'
|
||||||
|
DROP USER 'user\bs_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\ns_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\ns_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\ns_12601974'@'localhost'
|
||||||
|
DROP USER 'user\ns_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\rs_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\rs_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\rs_12601974'@'localhost'
|
||||||
|
DROP USER 'user\rs_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\ts_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\ts_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\ts_12601974'@'localhost'
|
||||||
|
DROP USER 'user\ts_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\\s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\\s_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\\s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\\s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\%s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\%s_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\%s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\%s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\_s_12601974'@'localhost';
|
||||||
|
CREATE USER 'user\_s_12601974'@'localhost';
|
||||||
|
ERROR HY000: Operation CREATE USER failed for 'user\_s_12601974'@'localhost'
|
||||||
|
DROP USER 'user\_s_12601974'@'localhost';
|
||||||
|
|
||||||
|
# END OF CASE - USER NAME CONTAINING BACKSLASH IN CREATE USER OPERATION
|
||||||
|
SET @@sql_mode= @org_mode;
|
||||||
|
|
||||||
|
#End of Test for Bug#12601974
|
||||||
|
@ -102,3 +102,110 @@ DROP USER nopriv_user@localhost;
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # End Bug#54812
|
--echo # End Bug#54812
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #
|
||||||
|
--echo # Test for Bug#12601974 - STORED PROCEDURE SQL_MODE=NO_BACKSLASH_ESCAPES
|
||||||
|
--echo # IGNORED AND BREAKS REPLICATION
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET @org_mode=@@sql_mode;
|
||||||
|
|
||||||
|
SET @@sql_mode='';
|
||||||
|
|
||||||
|
--echo # USER NAME CONTAINING BACKSLASH IN CREATE USER OPERATION
|
||||||
|
CREATE USER 'user\'s_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\'s_12601974'@'localhost';
|
||||||
|
DROP USER 'user\'s_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\"s_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\"s_12601974'@'localhost';
|
||||||
|
DROP USER 'user\"s_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\bs_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\bs_12601974'@'localhost';
|
||||||
|
DROP USER 'user\bs_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\ns_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\ns_12601974'@'localhost';
|
||||||
|
DROP USER 'user\ns_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\rs_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\rs_12601974'@'localhost';
|
||||||
|
DROP USER 'user\rs_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\ts_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\ts_12601974'@'localhost';
|
||||||
|
DROP USER 'user\ts_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\\s_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\\s_12601974'@'localhost';
|
||||||
|
DROP USER 'user\\s_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\%s_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\%s_12601974'@'localhost';
|
||||||
|
DROP USER 'user\%s_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\_s_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\_s_12601974'@'localhost';
|
||||||
|
DROP USER 'user\_s_12601974'@'localhost';
|
||||||
|
--echo
|
||||||
|
--echo # END OF CASE - USER NAME CONTAINING BACKSLASH IN CREATE USER OPERATION
|
||||||
|
|
||||||
|
SET @@sql_mode='NO_BACKSLASH_ESCAPES';
|
||||||
|
--echo # USER NAME CONTAINING BACKSLASH IN DROP USER OPERATION
|
||||||
|
CREATE USER 'user\"s_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\"s_12601974'@'localhost';
|
||||||
|
DROP USER 'user\"s_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\bs_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\bs_12601974'@'localhost';
|
||||||
|
DROP USER 'user\bs_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\ns_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\ns_12601974'@'localhost';
|
||||||
|
DROP USER 'user\ns_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\rs_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\rs_12601974'@'localhost';
|
||||||
|
DROP USER 'user\rs_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\ts_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\ts_12601974'@'localhost';
|
||||||
|
DROP USER 'user\ts_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\\s_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\\s_12601974'@'localhost';
|
||||||
|
DROP USER 'user\\s_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\%s_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\%s_12601974'@'localhost';
|
||||||
|
DROP USER 'user\%s_12601974'@'localhost';
|
||||||
|
|
||||||
|
CREATE USER 'user\_s_12601974'@'localhost';
|
||||||
|
--error ER_CANNOT_USER
|
||||||
|
CREATE USER 'user\_s_12601974'@'localhost';
|
||||||
|
DROP USER 'user\_s_12601974'@'localhost';
|
||||||
|
--echo
|
||||||
|
--echo # END OF CASE - USER NAME CONTAINING BACKSLASH IN CREATE USER OPERATION
|
||||||
|
SET @@sql_mode= @org_mode;
|
||||||
|
|
||||||
|
--echo
|
||||||
|
--echo #End of Test for Bug#12601974
|
||||||
|
@ -5808,24 +5808,25 @@ bool mysql_routine_grant(THD *thd, TABLE_LIST *table_list, bool is_proc,
|
|||||||
/**
|
/**
|
||||||
append a user or role name to a buffer that will be later used as an error message
|
append a user or role name to a buffer that will be later used as an error message
|
||||||
*/
|
*/
|
||||||
static void append_user(String *str, const LEX_STRING *u, const LEX_STRING *h)
|
static void append_user(THD *thd, String *str,
|
||||||
|
const LEX_STRING *u, const LEX_STRING *h)
|
||||||
{
|
{
|
||||||
if (str->length())
|
if (str->length())
|
||||||
str->append(',');
|
str->append(',');
|
||||||
str->append('\'');
|
append_query_string(system_charset_info, str, u->str, u->length,
|
||||||
str->append(u);
|
thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES);
|
||||||
/* hostname part is not relevant for roles, it is always empty */
|
/* hostname part is not relevant for roles, it is always empty */
|
||||||
if (u->length == 0 || h->length != 0)
|
if (u->length == 0 || h->length != 0)
|
||||||
{
|
{
|
||||||
str->append(STRING_WITH_LEN("'@'"));
|
str->append('@');
|
||||||
str->append(h);
|
append_query_string(system_charset_info, str, h->str, h->length,
|
||||||
|
thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES);
|
||||||
}
|
}
|
||||||
str->append('\'');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void append_user(String *str, LEX_USER *user)
|
static void append_user(THD *thd, String *str, LEX_USER *user)
|
||||||
{
|
{
|
||||||
append_user(str, & user->user, & user->host);
|
append_user(thd, str, & user->user, & user->host);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -5965,7 +5966,7 @@ bool mysql_grant_role(THD *thd, List <LEX_USER> &list, bool revoke)
|
|||||||
{
|
{
|
||||||
LEX_STRING ls= { thd->security_ctx->priv_role,
|
LEX_STRING ls= { thd->security_ctx->priv_role,
|
||||||
strlen(thd->security_ctx->priv_role) };
|
strlen(thd->security_ctx->priv_role) };
|
||||||
append_user(&wrong_users, &ls, &empty_lex_str);
|
append_user(thd, &wrong_users, &ls, &empty_lex_str);
|
||||||
result= 1;
|
result= 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -5973,7 +5974,7 @@ bool mysql_grant_role(THD *thd, List <LEX_USER> &list, bool revoke)
|
|||||||
/* can not grant current_role to current_role */
|
/* can not grant current_role to current_role */
|
||||||
if (granted_role->user.str == current_role.str)
|
if (granted_role->user.str == current_role.str)
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, &role_as_user->user, &empty_lex_str);
|
append_user(thd, &wrong_users, &role_as_user->user, &empty_lex_str);
|
||||||
result= 1;
|
result= 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -6000,7 +6001,7 @@ bool mysql_grant_role(THD *thd, List <LEX_USER> &list, bool revoke)
|
|||||||
{
|
{
|
||||||
if (is_invalid_role_name(username.str))
|
if (is_invalid_role_name(username.str))
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, &username, &empty_lex_str);
|
append_user(thd, &wrong_users, &username, &empty_lex_str);
|
||||||
result= 1;
|
result= 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -6026,7 +6027,7 @@ bool mysql_grant_role(THD *thd, List <LEX_USER> &list, bool revoke)
|
|||||||
false, create_new_user,
|
false, create_new_user,
|
||||||
no_auto_create_user))
|
no_auto_create_user))
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, &username, &hostname);
|
append_user(thd, &wrong_users, &username, &hostname);
|
||||||
result= 1;
|
result= 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -6038,7 +6039,7 @@ bool mysql_grant_role(THD *thd, List <LEX_USER> &list, bool revoke)
|
|||||||
|
|
||||||
if (!grantee)
|
if (!grantee)
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, &username, &hostname);
|
append_user(thd, &wrong_users, &username, &hostname);
|
||||||
result= 1;
|
result= 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -6060,7 +6061,7 @@ bool mysql_grant_role(THD *thd, List <LEX_USER> &list, bool revoke)
|
|||||||
if (role_as_user &&
|
if (role_as_user &&
|
||||||
traverse_role_graph_down(role, 0, 0, 0) == ROLE_CYCLE_FOUND)
|
traverse_role_graph_down(role, 0, 0, 0) == ROLE_CYCLE_FOUND)
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, &username, &empty_lex_str);
|
append_user(thd, &wrong_users, &username, &empty_lex_str);
|
||||||
result= 1;
|
result= 1;
|
||||||
undo_add_role_user_mapping(grantee, role);
|
undo_add_role_user_mapping(grantee, role);
|
||||||
continue;
|
continue;
|
||||||
@ -6072,7 +6073,7 @@ bool mysql_grant_role(THD *thd, List <LEX_USER> &list, bool revoke)
|
|||||||
/* grant was already removed or never existed */
|
/* grant was already removed or never existed */
|
||||||
if (!hash_entry)
|
if (!hash_entry)
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, &username, &hostname);
|
append_user(thd, &wrong_users, &username, &hostname);
|
||||||
result= 1;
|
result= 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -6093,7 +6094,7 @@ bool mysql_grant_role(THD *thd, List <LEX_USER> &list, bool revoke)
|
|||||||
thd->lex->with_admin_option,
|
thd->lex->with_admin_option,
|
||||||
hash_entry, revoke))
|
hash_entry, revoke))
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, &username, &empty_lex_str);
|
append_user(thd, &wrong_users, &username, &empty_lex_str);
|
||||||
result= 1;
|
result= 1;
|
||||||
if (!revoke)
|
if (!revoke)
|
||||||
{
|
{
|
||||||
@ -9188,7 +9189,7 @@ bool mysql_create_user(THD *thd, List <LEX_USER> &list, bool handle_as_role)
|
|||||||
|
|
||||||
if (handle_as_role && is_invalid_role_name(user_name->user.str))
|
if (handle_as_role && is_invalid_role_name(user_name->user.str))
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, user_name);
|
append_user(thd, &wrong_users, user_name);
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -9202,7 +9203,7 @@ bool mysql_create_user(THD *thd, List <LEX_USER> &list, bool handle_as_role)
|
|||||||
*/
|
*/
|
||||||
if (handle_grant_data(tables, 0, user_name, NULL))
|
if (handle_grant_data(tables, 0, user_name, NULL))
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, user_name);
|
append_user(thd, &wrong_users, user_name);
|
||||||
|
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
continue;
|
continue;
|
||||||
@ -9211,7 +9212,7 @@ bool mysql_create_user(THD *thd, List <LEX_USER> &list, bool handle_as_role)
|
|||||||
some_users_created= TRUE;
|
some_users_created= TRUE;
|
||||||
if (replace_user_table(thd, tables[0].table, *user_name, 0, 0, 1, 0))
|
if (replace_user_table(thd, tables[0].table, *user_name, 0, 0, 1, 0))
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, user_name);
|
append_user(thd, &wrong_users, user_name);
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -9236,7 +9237,7 @@ bool mysql_create_user(THD *thd, List <LEX_USER> &list, bool handle_as_role)
|
|||||||
&user_name->user, true,
|
&user_name->user, true,
|
||||||
NULL, false))
|
NULL, false))
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, user_name);
|
append_user(thd, &wrong_users, user_name);
|
||||||
if (grantee)
|
if (grantee)
|
||||||
undo_add_role_user_mapping(grantee, role);
|
undo_add_role_user_mapping(grantee, role);
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
@ -9309,14 +9310,14 @@ bool mysql_drop_user(THD *thd, List <LEX_USER> &list, bool handle_as_role)
|
|||||||
|
|
||||||
if (handle_as_role != user_name->is_role())
|
if (handle_as_role != user_name->is_role())
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, user_name);
|
append_user(thd, &wrong_users, user_name);
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (handle_grant_data(tables, 1, user_name, NULL) <= 0)
|
if (handle_grant_data(tables, 1, user_name, NULL) <= 0)
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, user_name);
|
append_user(thd, &wrong_users, user_name);
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -9389,13 +9390,13 @@ bool mysql_rename_user(THD *thd, List <LEX_USER> &list)
|
|||||||
tmp_user_to= user_list++;
|
tmp_user_to= user_list++;
|
||||||
if (!(user_from= get_current_user(thd, tmp_user_from, false)))
|
if (!(user_from= get_current_user(thd, tmp_user_from, false)))
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, user_from);
|
append_user(thd, &wrong_users, user_from);
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!(user_to= get_current_user(thd, tmp_user_to, false)))
|
if (!(user_to= get_current_user(thd, tmp_user_to, false)))
|
||||||
{
|
{
|
||||||
append_user(&wrong_users, user_to);
|
append_user(thd, &wrong_users, user_to);
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -9410,7 +9411,7 @@ bool mysql_rename_user(THD *thd, List <LEX_USER> &list)
|
|||||||
handle_grant_data(tables, 0, user_from, user_to) <= 0)
|
handle_grant_data(tables, 0, user_from, user_to) <= 0)
|
||||||
{
|
{
|
||||||
/* NOTE TODO renaming roles is not yet implemented */
|
/* NOTE TODO renaming roles is not yet implemented */
|
||||||
append_user(&wrong_users, user_from);
|
append_user(thd, &wrong_users, user_from);
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user