summaryrefslogtreecommitdiff
path: root/sql/wsrep_mysqld.cc
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2017-07-31 17:34:59 +0400
committerAlexander Barkov <bar@mariadb.org>2017-07-31 17:34:59 +0400
commit4937474f862010c90f76bf879a70c1edf17e7c85 (patch)
tree2c95821a22c9c2fd83e06b4ad9fa7048c70be4c9 /sql/wsrep_mysqld.cc
parent716898755a308f7803eecd3e139e9c58603980c7 (diff)
downloadmariadb-git-4937474f862010c90f76bf879a70c1edf17e7c85.tar.gz
MDEV-13414 Fix the SP code to avoid excessive use of strlen
Diffstat (limited to 'sql/wsrep_mysqld.cc')
-rw-r--r--sql/wsrep_mysqld.cc17
1 files changed, 7 insertions, 10 deletions
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc
index 87eb97e4fec..d3726cc86a5 100644
--- a/sql/wsrep_mysqld.cc
+++ b/sql/wsrep_mysqld.cc
@@ -2236,6 +2236,7 @@ static int wsrep_create_sp(THD *thd, uchar** buf, size_t* buf_len)
sp_head *sp = thd->lex->sphead;
sql_mode_t saved_mode= thd->variables.sql_mode;
String retstr(64);
+ LEX_CSTRING returns= empty_clex_str;
retstr.set_charset(system_charset_info);
log_query.set_charset(system_charset_info);
@@ -2243,19 +2244,15 @@ static int wsrep_create_sp(THD *thd, uchar** buf, size_t* buf_len)
if (sp->m_type == TYPE_ENUM_FUNCTION)
{
sp_returns_type(thd, retstr, sp);
+ returns= retstr.lex_cstring();
}
if (!show_create_sp(thd, &log_query,
- sp->m_type,
- (sp->m_explicit_name ? sp->m_db.str : NULL),
- (sp->m_explicit_name ? sp->m_db.length : 0),
- sp->m_name.str, sp->m_name.length,
- sp->m_params.str, sp->m_params.length,
- retstr.c_ptr(), retstr.length(),
- sp->m_body.str, sp->m_body.length,
- sp->chistics(), &(thd->lex->definer->user),
- &(thd->lex->definer->host),
- saved_mode))
+ sp->m_type,
+ sp->m_explicit_name ? sp->m_db : null_clex_str,
+ sp->m_name, sp->m_params, returns,
+ sp->m_body, sp->chistics(), thd->lex->definer[0],
+ saved_mode))
{
WSREP_WARN("SP create string failed: schema: %s, query: %s",
(thd->db ? thd->db : "(null)"), thd->query());