summaryrefslogtreecommitdiff
path: root/sql/sp_head.cc
diff options
context:
space:
mode:
authorkonstantin@bodhi.netgear <>2006-07-07 03:07:45 +0400
committerkonstantin@bodhi.netgear <>2006-07-07 03:07:45 +0400
commit343a5244dc0d5d62023eabc26b060d9c52efb762 (patch)
treeb88b67acc5c244272973fd3c27485b8b9c7336bc /sql/sp_head.cc
parent01bc761690738a857540f22389d0328c91492be7 (diff)
downloadmariadb-git-343a5244dc0d5d62023eabc26b060d9c52efb762.tar.gz
After merge fixes.
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r--sql/sp_head.cc40
1 files changed, 26 insertions, 14 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 1ebd645d9f9..81f5d502ec9 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -495,20 +495,32 @@ sp_head::init_strings(THD *thd, LEX *lex, sp_name *name)
/* During parsing, we must use thd->mem_root */
MEM_ROOT *root= thd->mem_root;
- DBUG_ASSERT(name);
- /* Must be initialized in the parser */
- DBUG_ASSERT(name->m_db.str && name->m_db.length);
-
- /* We have to copy strings to get them into the right memroot */
- m_db.length= name->m_db.length;
- m_db.str= strmake_root(root, name->m_db.str, name->m_db.length);
- m_name.length= name->m_name.length;
- m_name.str= strmake_root(root, name->m_name.str, name->m_name.length);
-
- if (name->m_qname.length == 0)
- name->init_qname(thd);
- m_qname.length= name->m_qname.length;
- m_qname.str= strmake_root(root, name->m_qname.str, m_qname.length);
+ if (name)
+ {
+ /* Must be initialized in the parser */
+ DBUG_ASSERT(name->m_db.str && name->m_db.length);
+
+ /* We have to copy strings to get them into the right memroot */
+ m_db.length= name->m_db.length;
+ m_db.str= strmake_root(root, name->m_db.str, name->m_db.length);
+ m_name.length= name->m_name.length;
+ m_name.str= strmake_root(root, name->m_name.str, name->m_name.length);
+
+ if (name->m_qname.length == 0)
+ name->init_qname(thd);
+ m_qname.length= name->m_qname.length;
+ m_qname.str= strmake_root(root, name->m_qname.str, m_qname.length);
+ }
+ else
+ {
+ /*
+ FIXME: the only use case when name is NULL is events, and it should
+ be rewritten soon. Remove the else part and replace 'if' with
+ an assert when this is done.
+ */
+ LEX_STRING str_reset= { NULL, 0 };
+ m_db= m_name= m_qname= str_reset;
+ }
if (m_param_begin && m_param_end)
{