mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
f4ff086abe
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.
38 lines
1.3 KiB
Text
38 lines
1.3 KiB
Text
#
|
|
# Specific tests for case-insensitive file systems
|
|
# i.e. lower_case_filesystem=ON
|
|
#
|
|
-- source include/have_case_insensitive_file_system.inc
|
|
# Embedded server does not support restarting.
|
|
--source include/not_embedded.inc
|
|
|
|
--echo #
|
|
--echo # Bug#20198490 : LOWER_CASE_TABLE_NAMES=0 ON WINDOWS LEADS TO PROBLEMS
|
|
--echo #
|
|
|
|
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err;
|
|
|
|
--error 0,1
|
|
--remove_file $SEARCH_FILE
|
|
|
|
#Shutdown the server
|
|
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
|
--shutdown_server
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
#Start the server with --lower_case_table_names=0 in Windows.
|
|
--enable_reconnect
|
|
--error 1
|
|
--exec $MYSQLD_CMD --lower_case_table_names=0 > $SEARCH_FILE 2>&1
|
|
|
|
#Search for the error messege in the server error log.
|
|
let SEARCH_PATTERN= \[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\.;
|
|
--source include/search_pattern_in_file.inc
|
|
|
|
#Restart the server
|
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
|
--source include/wait_until_connected_again.inc
|
|
|
|
#Cleanup
|
|
--error 0,1
|
|
--remove_file $SEARCH_FILE
|