mirror of
https://github.com/MariaDB/server.git
synced 2026-04-26 10:15:29 +02:00
func_like.result, func_like.test:
adding test case. item_cmpfunc.cc: Bug#12611 ESCAPE + LIKE do not work when the escape char is a multibyte one Additional fix for 8bit character sets: escape character must be converted into operation character set. sql/item_cmpfunc.cc: Bug#12611 ESCAPE + LIKE do not work when the escape char is a multibyte one Additional fix for 8bit character sets: escape character must be converted into operation character set. mysql-test/t/func_like.test: adding test case. mysql-test/r/func_like.result: adding test case.
This commit is contained in:
parent
e254105bec
commit
965afd45a1
3 changed files with 42 additions and 1 deletions
|
|
@ -2307,7 +2307,24 @@ bool Item_func_like::fix_fields(THD *thd, TABLE_LIST *tlist, Item ** ref)
|
|||
}
|
||||
else
|
||||
{
|
||||
escape= *(escape_str->ptr());
|
||||
/*
|
||||
In the case of 8bit character set, we pass native
|
||||
code instead of Unicode code as "escape" argument.
|
||||
Convert to "cs" if charset of escape differs.
|
||||
*/
|
||||
uint32 unused;
|
||||
if (escape_str->needs_conversion(escape_str->length(),
|
||||
escape_str->charset(), cs, &unused))
|
||||
{
|
||||
char ch;
|
||||
uint errors;
|
||||
uint32 cnvlen= copy_and_convert(&ch, 1, cs, escape_str->ptr(),
|
||||
escape_str->length(),
|
||||
escape_str->charset(), &errors);
|
||||
escape= cnvlen ? ch : '\\';
|
||||
}
|
||||
else
|
||||
escape= *(escape_str->ptr());
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue