diff options
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sp.cc | 13 | ||||
-rw-r--r-- | sql/sp_pcontext.cc | 9 |
2 files changed, 14 insertions, 8 deletions
diff --git a/sql/sp.cc b/sql/sp.cc index 2d7e38b47bd..9e0d848b19d 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -306,7 +306,11 @@ sp_add_fun_to_lex(LEX *lex, LEX_STRING fun) while ((fn= li++)) { - if (my_strncasecmp(system_charset_info, fn, fun.str, fun.length) == 0) + uint len= strlen(fn); + + if (my_strnncoll(system_charset_info, + (const uchar *)fn, len, + (const uchar *)fun.str, fun.length) == 0) break; } if (! fn) @@ -389,7 +393,12 @@ sp_find_cached_function(THD *thd, char *name, uint namelen) while ((sp= li++)) { - if (my_strncasecmp(system_charset_info, name, sp->name(), namelen) == 0) + uint len; + const uchar *n= (const uchar *)sp->name(&len); + + if (my_strnncoll(system_charset_info, + (const uchar *)name, namelen, + n, len) == 0) break; } return sp; diff --git a/sql/sp_pcontext.cc b/sql/sp_pcontext.cc index 4d3cf80cd34..3973f05b74b 100644 --- a/sql/sp_pcontext.cc +++ b/sql/sp_pcontext.cc @@ -56,13 +56,10 @@ sp_pcontext::find_pvar(LEX_STRING *name) while (i-- > 0) { sp_pvar_t *p= find_pvar(i); - uint len= (p->name.length > name->length ? - p->name.length : name->length); - if (my_strncasecmp(system_charset_info, - name->str, - p->name.str, - len) == 0) + if (my_strnncoll(system_charset_info, + (const uchar *)name->str, name->length, + (const uchar *)p->name.str, p->name.length) == 0) { return p; } |