diff options
author | Sergei Golubchik <sergii@pisem.net> | 2013-10-18 08:10:51 -0700 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2013-10-18 08:10:51 -0700 |
commit | 72d8b533cc102aad6be5046a0fe8b8e63ec1e218 (patch) | |
tree | edd77fe431acee4ba0fa859a8fcb650dad971771 /sql/sql_parse.cc | |
parent | 8122996a599fcb6dc600f27fddbed47a2579c6b8 (diff) | |
download | mariadb-git-72d8b533cc102aad6be5046a0fe8b8e63ec1e218.tar.gz |
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
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r-- | sql/sql_parse.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 9d17d9c3e31..997ba7f97ea 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4001,6 +4001,11 @@ end_with_restore_list: LEX_USER *grant_user= lex->grant_user; if (!grant_user) goto error; + + if (grant_user->user.str && + !strcmp(thd->security_ctx->priv_user, grant_user->user.str)) + grant_user= ¤t_user; + if (grant_user == ¤t_user || grant_user == ¤t_role || grant_user == ¤t_user_and_current_role || @@ -7752,7 +7757,7 @@ LEX_USER *create_definer(THD *thd, LEX_STRING *user_name, LEX_STRING *host_name) LEX_USER *get_current_user(THD *thd, LEX_USER *user) { - if (!user->user.str) // current_user + if (user == ¤t_user) // current_user return create_default_definer(thd); return user; |