From c386daf0c07ff07d83bb29f3e152a1bde803bedb Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Thu, 27 Mar 2014 23:23:28 +0100 Subject: [PATCH] post-fix patch for MDEV-5850: MySQL Bug#21317: SHOW CREATE DATABASE does not obey to lower_case_table_names --- sql/sql_parse.cc | 2 +- sql/table.cc | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 65a76538c73..e0b205c40c6 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3997,7 +3997,7 @@ end_with_restore_list: strmov(db_name.str, lex->name.str); if (check_db_name(&db_name)) { - my_error(ER_WRONG_DB_NAME, MYF(0), db_name); + my_error(ER_WRONG_DB_NAME, MYF(0), db_name.str); break; } res= mysqld_show_create_db(thd, &db_name, &lex->name, &lex->create_info); diff --git a/sql/table.cc b/sql/table.cc index 20343a108f6..210a9246a16 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -3468,11 +3468,15 @@ bool check_db_name(LEX_STRING *org_name) return 1; if (lower_case_table_names == 1 && name != any_db) - org_name->length= my_casedn_str(files_charset_info, name); + { + org_name->length= name_length= my_casedn_str(files_charset_info, name); + if (check_for_path_chars) + org_name->length+= MYSQL50_TABLE_NAME_PREFIX_LENGTH; + } if (db_name_is_in_ignore_db_dirs_list(name)) return 1; - return check_table_name(name, org_name->length, check_for_path_chars); + return check_table_name(name, name_length, check_for_path_chars); }