summaryrefslogtreecommitdiff
path: root/sql/sp_head.cc
diff options
context:
space:
mode:
authorguilhem@mysql.com <>2005-11-18 16:38:01 +0100
committerguilhem@mysql.com <>2005-11-18 16:38:01 +0100
commit2f95fc2701bd83a9aea31e167f69c16ee51a6317 (patch)
tree07e22cfddd8927526e3bb2ef581822106278886f /sql/sp_head.cc
parent50afa94dd509be490ebe274b8feec966864b502b (diff)
parent43bbd352e3aa4af23f479e33ba80a6dfdeb6774f (diff)
downloadmariadb-git-2f95fc2701bd83a9aea31e167f69c16ee51a6317.tar.gz
Merge mysql.com:/home/mysql_src/mysql-5.0
into mysql.com:/home/mysql_src/mysql-5.1-merge-of-5.0 (not all files are good, I'll fix; I'll ask some devs to check their part)
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r--sql/sp_head.cc42
1 files changed, 29 insertions, 13 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index fe3bac83eda..d6453ffb4a4 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -1569,21 +1569,9 @@ sp_head::check_backpatch(THD *thd)
}
void
-sp_head::set_info(char *definer, uint definerlen,
- longlong created, longlong modified,
+sp_head::set_info(longlong created, longlong modified,
st_sp_chistics *chistics, ulong sql_mode)
{
- char *p= strchr(definer, '@');
- uint len;
-
- if (! p)
- p= definer; // Weird...
- len= p-definer;
- m_definer_user.str= strmake_root(mem_root, definer, len);
- m_definer_user.length= len;
- len= definerlen-len-1;
- m_definer_host.str= strmake_root(mem_root, p+1, len);
- m_definer_host.length= len;
m_created= created;
m_modified= modified;
m_chistics= (st_sp_chistics *) memdup_root(mem_root, (char*) chistics,
@@ -1597,6 +1585,34 @@ sp_head::set_info(char *definer, uint definerlen,
m_sql_mode= sql_mode;
}
+
+void
+sp_head::set_definer(char *definer, uint definerlen)
+{
+ char *p= strrchr(definer, '@');
+
+ if (!p)
+ {
+ m_definer_user.str= strmake_root(mem_root, "", 0);
+ m_definer_user.length= 0;
+
+ m_definer_host.str= strmake_root(mem_root, "", 0);
+ m_definer_host.length= 0;
+ }
+ else
+ {
+ const uint user_name_len= p - definer;
+ const uint host_name_len= definerlen - user_name_len - 1;
+
+ m_definer_user.str= strmake_root(mem_root, definer, user_name_len);
+ m_definer_user.length= user_name_len;
+
+ m_definer_host.str= strmake_root(mem_root, p + 1, host_name_len);
+ m_definer_host.length= host_name_len;
+ }
+}
+
+
void
sp_head::reset_thd_mem_root(THD *thd)
{