mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fixes for mysql-test failures
mysql-test/r/acl_roles_show_grants.result: one can do SHOW GRANTS for himself mysql-test/t/acl_roles_set_role-table-column-priv.test: correct error message mysql-test/t/acl_roles_show_grants.test: one can SHOW GRANTS for himself sql/sql_acl.cc: bugfixing: * don't assign with && - it can shortcut and the second assignment won't be executed * correct the test in check_grant_all_columns() - want_access should not be modified * sql/sql_cmd.h.OTHER: add new commands at the end sql/sql_db.cc: don't call acl_get() if all privileges are already satisfied (crashes when run with --skip-grants, because acl data stuctures aren't initialized) sql/sql_parse.cc: * test for current_user in get_current_user() * map explicitly specified user@host to current_user
This commit is contained in:
@ -1470,18 +1470,17 @@ bool mysql_change_db(THD *thd, const LEX_STRING *new_db_name, bool force_switch)
|
||||
DBUG_PRINT("info",("Use database: %s", new_db_file_name.str));
|
||||
|
||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||
db_access=
|
||||
test_all_bits(sctx->master_access, DB_ACLS) ?
|
||||
DB_ACLS :
|
||||
acl_get(sctx->host,
|
||||
sctx->ip,
|
||||
sctx->priv_user,
|
||||
new_db_file_name.str,
|
||||
FALSE) | sctx->master_access;
|
||||
if (sctx->priv_role[0])
|
||||
if (test_all_bits(sctx->master_access, DB_ACLS))
|
||||
db_access= DB_ACLS;
|
||||
else
|
||||
{
|
||||
/* include a possible currently set role for access */
|
||||
db_access|= acl_get("", "", sctx->priv_role, new_db_file_name.str, FALSE);
|
||||
db_access= acl_get(sctx->host, sctx->ip, sctx->priv_user,
|
||||
new_db_file_name.str, FALSE) | sctx->master_access;
|
||||
if (sctx->priv_role[0])
|
||||
{
|
||||
/* include a possible currently set role for access */
|
||||
db_access|= acl_get("", "", sctx->priv_role, new_db_file_name.str, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
if (!force_switch &&
|
||||
|
Reference in New Issue
Block a user