summaryrefslogtreecommitdiff
path: root/sql/sql_show.h
diff options
context:
space:
mode:
authorMichael Widenius <monty@mariadb.org>2014-03-23 15:43:57 +0200
committerMichael Widenius <monty@askmonty.org>2014-03-23 15:43:57 +0200
commitb18a1b0e6ccc326ced01620edd842d899139feec (patch)
tree1c2d5fab29f5064c7050861aede99c526cc6dfd2 /sql/sql_show.h
parent797a44a9ec5a601a4745b9520c2dea321f96d155 (diff)
downloadmariadb-git-b18a1b0e6ccc326ced01620edd842d899139feec.tar.gz
MDEV-5850: MySQL Bug#21317: SHOW CREATE DATABASE does not obey to lower_case_table_names
Bug #3329 Incomplete lower_case_table_names=2 implementation The problem was that check_db_name() converted database names to lower case also in case of lower_case_table_names=2. Fixed by removing the conversion in check_db_name for lower_case_table_names = 2 and instead converting db name to lower case at same places as table names are converted. Fixed bug that SHOW CREATE DATABASE FOO showed information for database 'foo'. I also removed some checks of lower_case_table_names when it was enough to use table_alias_charset. mysql-test/mysql-test-run.pl: Added --use-copy argument to force mysql-test-run to copy files instead of doing symlinks. This is needed when you run with test directory on another file system mysql-test/r/lowercase_table.result: Updated results mysql-test/r/lowercase_table2.result: Updated results mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result: Updated results mysql-test/suite/parts/r/partition_mgm_lc2_memory.result: Updated results mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result: Updated results mysql-test/t/lowercase_table.test: Added tests with mixed case databases mysql-test/t/lowercase_table2.test: Added tests with mixed case databases sql/log.cc: Don't check lower_case_table_names when we can use table_alias_charset sql/sql_base.cc: Don't check lower_case_table_names when we can use table_alias_charset sql/sql_db.cc: Use cmp_db_names() for checking if current database changed. mysql_rm_db() now converts db to lower case if lower_case_table_names was used. Changed database options cache to use table_alias_charset. This fixed a bug where SHOW CREATE DATABASE showed wrong information. sql/sql_parse.cc: Change also db name to lower case when file names are changed. Don't need to story copy of database name anymore when lower_case_table_names == 2 as check_db_name() don't convert in this case. Updated arguments to mysqld_show_create_db(). When adding table to TABLE_LIST also convert db name to lower case if needed (same way as we do with table names). sql/sql_show.cc: mysqld_show_create_db() now also takes original name as argument for output to user. sql/sql_show.h: Updated prototype for mysqld_show_create_db() sql/sql_table.cc: In mysql_rename_table(), do same conversions to database name as we do for the file name
Diffstat (limited to 'sql/sql_show.h')
-rw-r--r--sql/sql_show.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/sql/sql_show.h b/sql/sql_show.h
index 0416f2fdaba..708a77d74cd 100644
--- a/sql/sql_show.h
+++ b/sql/sql_show.h
@@ -86,7 +86,9 @@ bool append_identifier(THD *thd, String *packet, const char *name,
void mysqld_list_fields(THD *thd,TABLE_LIST *table, const char *wild);
int mysqld_dump_create_info(THD *thd, TABLE_LIST *table_list, int fd);
bool mysqld_show_create(THD *thd, TABLE_LIST *table_list);
-bool mysqld_show_create_db(THD *thd, char *dbname, HA_CREATE_INFO *create);
+bool mysqld_show_create_db(THD *thd, LEX_STRING *db_name,
+ LEX_STRING *orig_db_name,
+ HA_CREATE_INFO *create);
void mysqld_list_processes(THD *thd,const char *user,bool verbose);
int mysqld_show_status(THD *thd);