diff --git a/sql/sp_head.cc b/sql/sp_head.cc index f9d3aa56458..650ac175d34 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -619,14 +619,7 @@ sp_head::init_sp_name(THD *thd, const sp_name *spname) DBUG_ASSERT(spname && spname->m_db.str && spname->m_db.length); /* We have to copy strings to get them into the right memroot. */ - - m_db.length= spname->m_db.length; - m_db.str= strmake_root(thd->mem_root, spname->m_db.str, spname->m_db.length); - - m_name.length= spname->m_name.length; - m_name.str= strmake_root(thd->mem_root, spname->m_name.str, - spname->m_name.length); - + Database_qualified_name::copy(mem_root, spname->m_db, spname->m_name); m_explicit_name= spname->m_explicit_name; spname->make_qname(thd, &m_qname); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 55742f7aaec..2e3c5bd4b41 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -7505,4 +7505,15 @@ void AUTHID::parse(const char *str, size_t length) } +void Database_qualified_name::copy(MEM_ROOT *mem_root, + const LEX_CSTRING &db, + const LEX_CSTRING &name) +{ + m_db.length= db.length; + m_db.str= strmake_root(mem_root, db.str, db.length); + m_name.length= name.length; + m_name.str= strmake_root(mem_root, name.str, name.length); +} + + #endif /* !defined(MYSQL_CLIENT) */ diff --git a/sql/sql_class.h b/sql/sql_class.h index 844db884c05..410d4a73385 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -5974,6 +5974,8 @@ public: (const uchar *) m_name.str, m_name.length, (const uchar *) other->m_name.str, other->m_name.length); } + void copy(MEM_ROOT *mem_root, const LEX_CSTRING &db, + const LEX_CSTRING &name); // Export db and name as a qualified name string: 'db.name' size_t make_qname(char *dst, size_t dstlen) const {