Commit 295fc583 authored by Mattias Jonsson's avatar Mattias Jonsson
Browse files

Bug#37402: Mysql cant read partitioned table with capital letter in the name

Problem was that ha_partition had HA_FILE_BASED flag set
(since it uses a .par file), but after open it uses the first partitions
flags, which results in different case handling for create and for
open.

Solution was to change the underlying partition name so it was consistent.
(Only happens when lower_case_table_names = 2, i.e. Mac OS X and storage
engines without HA_FILE_BASED, like InnoDB and Memory.)

(Recommit after adding rename of check_lowercase_names to
get_canonical_filename, and moved it from handler.h to mysql_priv.h)

NOTE: if a mixed case name for a partitioned table was created when
lower_case_table_name = 2 it should be renamed or dropped before using
the updated version (See bug#37402 for more info)
parent 12846f41
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
--require r/case_insensitive_file_system.require
--disable_query_log
show variables like "lower_case_file_system";
--enable_query_log
+1 −1
Original line number Diff line number Diff line
--require r/lowercase0.require
--disable_query_log
show variables like "lower_case_%";
show variables like "lower_case_table_names";
--enable_query_log
+4 −0
Original line number Diff line number Diff line
--require r/lowercase2.require
--disable_query_log
show variables like 'lower_case_table_names';
--enable_query_log
+9 −2
Original line number Diff line number Diff line
@@ -327,7 +327,6 @@ sub mtr_report_stats ($) {
		/Sort aborted/ or
		/Time-out in NDB/ or
		/One can only use the --user.*root/ or
		/Setting lower_case_table_names=2/ or
		/Table:.* on (delete|rename)/ or
		/You have an error in your SQL syntax/ or
		/deprecated/ or
@@ -402,7 +401,15 @@ sub mtr_report_stats ($) {
		 )) or

                # Test case for Bug#31590 produces the following error:
                /Out of sort memory; increase server sort buffer size/
                /Out of sort memory; increase server sort buffer size/ or

                # lowercase_table3 using case sensitive option on
                # case insensitive filesystem (InnoDB error).
                /Cannot find or open table test\/BUG29839 from/ or

                # When trying to set lower_case_table_names = 2
                # on a case sensitive file system. Bug#37402.
                /lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive.  Now setting lower_case_table_names to 0 to avoid future problems./
		)
            {
              next;                       # Skip these lines
+2 −0
Original line number Diff line number Diff line
Variable_name	Value
lower_case_file_system	ON
Loading