• Arun Kuruvila's avatar
    Bug#20198490 : LOWER_CASE_TABLE_NAMES=0 ON WINDOWS LEADS TO · f4ff086a
    Arun Kuruvila authored
                   PROBLEMS
    
    Description:- Server variable "--lower_case_tables_names"
    when set to "0" on windows platform which does not support
    case sensitive file operations leads to problems. A warning
    message is printed in the error log while starting the
    server with "--lower_case_tables_names=0". Also according to
    the documentation, seting "lower_case_tables_names" to "0"
    on a case-insensitive filesystem might lead to index
    corruption.
    
    Analysis:- The problem reported in the bug is:-
    Creating an INNODB table 'a' and executing a query, "INSERT
    INTO a SELECT a FROM A;" on a server started with
    "--lower_case_tables_names=0" and running on a
    case-insensitive filesystem leads innodb to flat spin.
    Optimizer thinks that "a" and "A" are two different tables
    as the variable "lower_case_table_names" is set to "0". As a
    result, optimizer comes up with a plan which does not need a
    temporary table. If the same table is used in select and
    insert, a temporary table is needed. This incorrect
    optimizer plan leads to infinite insertions.
    
    Fix:- If the server is started with
    "--lower_case_tables_names" set to 0 on a case-insensitive
    filesystem, an error, "The server option
    'lower_case_table_names'is configured to use case sensitive
    table names but the data directory is on a case-insensitive
    file system which is an unsupported combination. Please
    consider either using a case sensitive file system for your
    data directory or switching to a case-insensitive table name
    mode.", is printed in the server error log and the server
    exits.
    f4ff086a
mysqld.cc 264 KB