summaryrefslogtreecommitdiff
path: root/sql/sql_parse.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-10-18 08:10:51 -0700
committerSergei Golubchik <sergii@pisem.net>2013-10-18 08:10:51 -0700
commit72d8b533cc102aad6be5046a0fe8b8e63ec1e218 (patch)
treeedd77fe431acee4ba0fa859a8fcb650dad971771 /sql/sql_parse.cc
parent8122996a599fcb6dc600f27fddbed47a2579c6b8 (diff)
downloadmariadb-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.cc7
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= &current_user;
+
if (grant_user == &current_user ||
grant_user == &current_role ||
grant_user == &current_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 == &current_user) // current_user
return create_default_definer(thd);
return user;