summaryrefslogtreecommitdiff
path: root/sql/sp_head.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2013-10-18 12:17:49 -0700
committerSergei Golubchik <sergii@pisem.net>2013-10-18 12:17:49 -0700
commitb2f16628cf4500111d59a8e52cc44851742ddfcc (patch)
treea09b5dcacded4cf82fc40707874e39feb8a72e7a /sql/sp_head.cc
parentb0547006192730d6281ca96f2151802ee7fe2ba0 (diff)
downloadmariadb-git-b2f16628cf4500111d59a8e52cc44851742ddfcc.tar.gz
support DEFINER=role and DEFINER=current_role
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r--sql/sp_head.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 25e64339379..122b6c9b796 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -2549,8 +2549,13 @@ sp_head::set_definer(const char *definer, uint definerlen)
char host_name_holder[HOSTNAME_LENGTH + 1];
LEX_STRING host_name= { host_name_holder, HOSTNAME_LENGTH };
- parse_user(definer, definerlen, user_name.str, &user_name.length,
- host_name.str, &host_name.length);
+ if (parse_user(definer, definerlen, user_name.str, &user_name.length,
+ host_name.str, &host_name.length) &&
+ user_name.length && !host_name.length)
+ {
+ // 'user@' -> 'user@%'
+ host_name= host_not_specified;
+ }
set_definer(&user_name, &host_name);
}