summaryrefslogtreecommitdiff
path: root/sql/sql_acl.cc
diff options
context:
space:
mode:
authorAnel Husakovic <anel@mariadb.org>2021-07-27 17:37:44 +0200
committerAnel Husakovic <anel@mariadb.org>2021-07-27 17:37:44 +0200
commit420f846a1513ab5285bdaa7cfd3384669321d46b (patch)
tree05c0b83fcff91d812479c2a00f0cc7cab4c5e521 /sql/sql_acl.cc
parentafe00bb7cce7de279e48a83ededc71b3f8cfafcf (diff)
downloadmariadb-git-st-10.2-anel-MDEV-22874.tar.gz
MDEV-2287: Create user fails with non-descriptive error messagest-10.2-anel-MDEV-22874bb-10.2-anel-MDEV-22874
Diffstat (limited to 'sql/sql_acl.cc')
-rw-r--r--sql/sql_acl.cc19
1 files changed, 16 insertions, 3 deletions
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index 89fecc92e9b..c7966c0caa9 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -10353,6 +10353,9 @@ bool mysql_create_user(THD *thd, List <LEX_USER> &list, bool handle_as_role)
if (result)
{
+ const char *c= (handle_as_role) ? "role already exists" : \
+ "user already exists";
+ append_str(&wrong_users, c, strlen(c));
my_error(ER_CANNOT_USER, MYF(0),
(handle_as_role) ? "CREATE ROLE" : "CREATE USER",
wrong_users.c_ptr_safe());
@@ -10463,10 +10466,14 @@ bool mysql_drop_user(THD *thd, List <LEX_USER> &list, bool handle_as_role)
mysql_mutex_unlock(&acl_cache->lock);
- if (result)
+ if (result){
+ const char *c= (handle_as_role) ? "role doesn't exist" : \
+ "user doesn't exist";
+ append_str(&wrong_users, c, strlen(c));
my_error(ER_CANNOT_USER, MYF(0),
(handle_as_role) ? "DROP ROLE" : "DROP USER",
wrong_users.c_ptr_safe());
+ }
if (binlog)
result |= write_bin_log(thd, FALSE, thd->query(), thd->query_length());
@@ -10556,9 +10563,11 @@ bool mysql_rename_user(THD *thd, List <LEX_USER> &list)
mysql_mutex_unlock(&acl_cache->lock);
- if (result)
+ if (result){
+ const char *c= "user doesn't exist";
+ append_str(&wrong_users, c, strlen(c));
my_error(ER_CANNOT_USER, MYF(0), "RENAME USER", wrong_users.c_ptr_safe());
-
+ }
if (some_users_renamed && mysql_bin_log.is_open())
result |= write_bin_log(thd, FALSE, thd->query(), thd->query_length());
@@ -10621,6 +10630,8 @@ int mysql_alter_user(THD* thd, List<LEX_USER> &users_list)
/* 'if exists' flag leads to warnings instead of errors. */
if (thd->lex->create_info.if_exists())
{
+ const char *c= "user doesn't exist";
+ append_str(&wrong_users, c, strlen(c));
push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
ER_CANNOT_USER,
ER_THD(thd, ER_CANNOT_USER),
@@ -10629,6 +10640,8 @@ int mysql_alter_user(THD* thd, List<LEX_USER> &users_list)
}
else
{
+ const char *c= "user doesn't exist";
+ append_str(&wrong_users, c, strlen(c));
my_error(ER_CANNOT_USER, MYF(0),
"ALTER USER",
wrong_users.c_ptr_safe());