Commit bc05b8c1 authored by unknown's avatar unknown

Bug #32063 "create table like" works case-significant only in "embedded" server (libmysqld)

in mysql_creata_like_table() we 'downcase' the complete path to the
.frm file. It works fine in standalone case as there usually
we only have './' as a path to the datahome, but doesn't work in
the embedded server where we add the real path there, so if a
directory has uppercase letters in it's name, it won't be found.

Fixed by 'downcasing' only database/table pair.


sql/sql_table.cc:
  Bug #32063 "create table like" works case-significant only in "embedded" server (libmysqld)
  
  do not lowercase the database directory
parent 5e0f8015
...@@ -2429,12 +2429,12 @@ int mysql_create_like_table(THD* thd, TABLE_LIST* table, ...@@ -2429,12 +2429,12 @@ int mysql_create_like_table(THD* thd, TABLE_LIST* table,
strxmov(src_path, (*tmp_table)->path, reg_ext, NullS); strxmov(src_path, (*tmp_table)->path, reg_ext, NullS);
else else
{ {
strxmov(src_path, mysql_data_home, "/", src_db, "/", src_table, char *tablename_pos= strxmov(src_path, mysql_data_home, "/", NullS);
reg_ext, NullS); strxmov(tablename_pos, src_db, "/", src_table, reg_ext, NullS);
if (lower_case_table_names)
my_casedn_str(files_charset_info, tablename_pos);
/* Resolve symlinks (for windows) */ /* Resolve symlinks (for windows) */
fn_format(src_path, src_path, "", "", MYF(MY_UNPACK_FILENAME)); fn_format(src_path, src_path, "", "", MYF(MY_UNPACK_FILENAME));
if (lower_case_table_names)
my_casedn_str(files_charset_info, src_path);
if (access(src_path, F_OK)) if (access(src_path, F_OK))
{ {
my_error(ER_BAD_TABLE_ERROR, MYF(0), src_table); my_error(ER_BAD_TABLE_ERROR, MYF(0), src_table);
......
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