diff options
author | Alexander Barkov <bar@mariadb.org> | 2017-07-31 17:34:59 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2017-07-31 17:34:59 +0400 |
commit | 4937474f862010c90f76bf879a70c1edf17e7c85 (patch) | |
tree | 2c95821a22c9c2fd83e06b4ad9fa7048c70be4c9 /sql/wsrep_mysqld.cc | |
parent | 716898755a308f7803eecd3e139e9c58603980c7 (diff) | |
download | mariadb-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.cc | 17 |
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()); |