summaryrefslogtreecommitdiff
path: root/sql/sp.cc
diff options
context:
space:
mode:
authorunknown <malff@lambda.hsd1.co.comcast.net.>2007-10-16 15:43:16 -0600
committerunknown <malff@lambda.hsd1.co.comcast.net.>2007-10-16 15:43:16 -0600
commit1dc0efc606bf7f66402e7f9728b7e4a0a1fd82ec (patch)
treecd392457a794060b12c7e5bcea34b7bffb75708d /sql/sp.cc
parent3c6d858b6c1ee7b2f475e184b28a1af04ae256e3 (diff)
parent42b6424327763192c7fb4701f0ae93b7a52af89d (diff)
downloadmariadb-git-1dc0efc606bf7f66402e7f9728b7e4a0a1fd82ec.tar.gz
Merge lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.0-runtime
into lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.1-rt-merge mysql-test/t/sp-error.test: Auto merged mysql-test/t/udf.test: Auto merged sql/item.cc: Auto merged sql/sp.cc: Auto merged sql/sp_head.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_udf.cc: Auto merged mysql-test/r/sp-error.result: failed auto merge mysql-test/r/sp.result: failed auto merge mysql-test/r/udf.result: failed auto merge mysql-test/t/sp.test: failed auto merge sql/sp_head.cc: failed auto merge sql/sql_yacc.yy: failed auto merge
Diffstat (limited to 'sql/sp.cc')
-rw-r--r--sql/sp.cc13
1 files changed, 3 insertions, 10 deletions
diff --git a/sql/sp.cc b/sql/sp.cc
index 6032688f7f1..9077862e2f6 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -1591,12 +1591,12 @@ static bool add_used_routine(LEX *lex, Query_arena *arena,
{
Sroutine_hash_entry *rn=
(Sroutine_hash_entry *)arena->alloc(sizeof(Sroutine_hash_entry) +
- key->length);
+ key->length + 1);
if (!rn) // OOM. Error will be reported using fatal_error().
return FALSE;
rn->key.length= key->length;
rn->key.str= (char *)rn + sizeof(Sroutine_hash_entry);
- memcpy(rn->key.str, key->str, key->length);
+ memcpy(rn->key.str, key->str, key->length + 1);
my_hash_insert(&lex->sroutines, (uchar *)rn);
lex->sroutines_list.link_in_list((uchar *)rn, (uchar **)&rn->next);
rn->belong_to_view= belong_to_view;
@@ -1779,7 +1779,7 @@ sp_cache_routines_and_add_tables_aux(THD *thd, LEX *lex,
for (Sroutine_hash_entry *rt= start; rt; rt= rt->next)
{
- sp_name name(rt->key.str, rt->key.length);
+ sp_name name(thd, rt->key.str, rt->key.length);
int type= rt->key.str[0];
sp_head *sp;
@@ -1787,13 +1787,6 @@ sp_cache_routines_and_add_tables_aux(THD *thd, LEX *lex,
&thd->sp_func_cache : &thd->sp_proc_cache),
&name)))
{
- name.m_name.str= strchr(name.m_qname.str, '.');
- name.m_db.length= name.m_name.str - name.m_qname.str;
- name.m_db.str= strmake_root(thd->mem_root, name.m_qname.str,
- name.m_db.length);
- name.m_name.str+= 1;
- name.m_name.length= name.m_qname.length - name.m_db.length - 1;
-
switch ((ret= db_find_routine(thd, type, &name, &sp)))
{
case SP_OK: