Commit 65c3d371 authored by Sergey Glukhov's avatar Sergey Glukhov

Bug#25830 SHOW TABLE STATUS behaves differently depending on table name

replace wild_case_compare with my_wildcmp which is multibyte safe function


mysql-test/r/lowercase_utf8.result:
  test result
mysql-test/t/lowercase_utf8-master.opt:
  test case
mysql-test/t/lowercase_utf8.test:
  test case
sql/sql_show.cc:
  replace wild_case_compare with my_wildcmp which is multibyte safe function
parent 4794f463
set names utf8;
create table `Ö` (id int);
show tables from test like 'Ö';
Tables_in_test (Ö)
ö
show tables from test like 'ö';
Tables_in_test (ö)
ö
drop table `Ö`;
--lower-case-table-names=1 --character-set-server=utf8
#
# Bug#25830 SHOW TABLE STATUS behaves differently depending on table name
#
set names utf8;
create table `Ö` (id int);
show tables from test like 'Ö';
show tables from test like 'ö';
drop table `Ö`;
......@@ -287,11 +287,17 @@ find_files(THD *thd, List<char> *files, const char *db,
#ifndef NO_EMBEDDED_ACCESS_CHECKS
uint col_access=thd->col_access;
#endif
uint wild_length= 0;
TABLE_LIST table_list;
DBUG_ENTER("find_files");
if (wild && !wild[0])
wild=0;
if (wild)
{
if (!wild[0])
wild= 0;
else
wild_length= strlen(wild);
}
bzero((char*) &table_list,sizeof(table_list));
......@@ -340,8 +346,11 @@ find_files(THD *thd, List<char> *files, const char *db,
{
if (lower_case_table_names)
{
if (wild_case_compare(files_charset_info, file->name, wild))
continue;
if (my_wildcmp(files_charset_info,
file->name, file->name + strlen(file->name),
wild, wild + wild_length,
wild_prefix, wild_one, wild_many))
continue;
}
else if (wild_compare(file->name,wild,0))
continue;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment