MDEV-29131 Assertion `status == 0' failed when renaming user after deleting table roles_mapping
if mysql.roles_mapping table doesn't exist (it's optional, after all), we still update in-memory structures to keep them consistent
This commit is contained in:
parent
6c7e3e5c13
commit
8ea529ecba
@ -25,3 +25,12 @@ newhost test_user_rm test_role1 N
|
||||
delete from mysql.roles_mapping;
|
||||
delete from mysql.user where user like 'test%';
|
||||
flush privileges;
|
||||
#
|
||||
# MDEV-29131 Assertion `status == 0' failed when renaming user after deleting table roles_mapping
|
||||
#
|
||||
create role r;
|
||||
rename table mysql.roles_mapping to test.t1;
|
||||
rename user current_user to a@a;
|
||||
rename user a@a to root@localhost;
|
||||
rename table test.t1 to mysql.roles_mapping;
|
||||
drop role r;
|
||||
|
@ -36,3 +36,13 @@ delete from mysql.roles_mapping;
|
||||
delete from mysql.user where user like 'test%';
|
||||
flush privileges;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-29131 Assertion `status == 0' failed when renaming user after deleting table roles_mapping
|
||||
--echo #
|
||||
create role r;
|
||||
rename table mysql.roles_mapping to test.t1;
|
||||
rename user current_user to a@a;
|
||||
rename user a@a to root@localhost;
|
||||
rename table test.t1 to mysql.roles_mapping;
|
||||
drop role r;
|
||||
|
||||
|
@ -10153,24 +10153,21 @@ static int handle_grant_data(THD *thd, Grant_tables& tables, bool drop,
|
||||
}
|
||||
|
||||
/* Handle roles_mapping table. */
|
||||
if (tables.roles_mapping_table().table_exists())
|
||||
if (tables.roles_mapping_table().table_exists() &&
|
||||
(found= handle_grant_table(thd, tables.roles_mapping_table(),
|
||||
ROLES_MAPPING_TABLE, drop, user_from, user_to)) < 0)
|
||||
{
|
||||
if ((found= handle_grant_table(thd, tables.roles_mapping_table(),
|
||||
ROLES_MAPPING_TABLE, drop,
|
||||
user_from, user_to)) < 0)
|
||||
{
|
||||
/* Handle of table failed, don't touch the in-memory array. */
|
||||
result= -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Handle acl_roles_mappings array */
|
||||
if ((handle_grant_struct(ROLES_MAPPINGS_HASH, drop, user_from, user_to) || found)
|
||||
&& ! result)
|
||||
result= 1; /* At least one record/element found */
|
||||
if (search_only)
|
||||
goto end;
|
||||
}
|
||||
/* Handle of table failed, don't touch the in-memory array. */
|
||||
result= -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Handle acl_roles_mappings array */
|
||||
if ((handle_grant_struct(ROLES_MAPPINGS_HASH, drop, user_from, user_to) || found)
|
||||
&& ! result)
|
||||
result= 1; /* At least one record/element found */
|
||||
if (search_only)
|
||||
goto end;
|
||||
}
|
||||
|
||||
/* Handle user table. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user