• Michael Widenius's avatar
    MDEV-5850: MySQL Bug#21317: SHOW CREATE DATABASE does not obey to lower_case_table_names · b18a1b0e
    Michael Widenius authored
    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
    b18a1b0e
log.cc 284 KB