summaryrefslogtreecommitdiff
path: root/mysql-test/r/lowercase_table4.result
Commit message (Collapse)AuthorAgeFilesLines
* Fix main test suite on WindowsVladislav Vaintroub2013-07-151-24/+2
|
* few fixes for test failures on windowsSergei Golubchik2012-10-301-0/+22
| | | | | | | | | | | | (and collateral changes) mysql-test/t/innodb_mysql_lock.test: change the variable from the test, not from the .opt file. one mysqld restart less. mysql-test/t/lowercase_table4.test: fix dos line endings sql/handler.cc: don't access the uninitialized variable
* Bug#55222 - RB://517 - Approved by Sunnyunknown2010-11-301-0/+108
| | | | | | | | | | | | | | | | | | | | | InnoDB does not attempt to handle lower_case_table_names == 2 when looking up foreign table names and referenced table name. It turned that server variable into a boolean and ignored the possibility of it being '2'. The setting lower_case_table_names == 2 means that it should be stored and displayed in mixed case as given, but compared internally in lower case. Normally the server deals with this since it stores table names. But InnoDB stores referential constraints for the server, so it needs to keep track of both lower case and given names. This solution creates two table name pointers for each foreign and referenced table name. One to display the name, and one to look it up. Both pointers point to the same allocated string unless this setting is 2. So the overhead added is not too much. Two functions are created in dict0mem.c to populate the ..._lookup versions of these pointers. Both dict_mem_foreign_table_name_lookup_set() and dict_mem_referenced_table_name_lookup_set() are called 5 times each.
* Bug #46941 crash with lower_case_table_names=2 and foreign key Magne Mahre2010-10-191-0/+7
data dictionary confusion On file systems with case insensitive file names, and lower_case_table_names set to '2', the server could crash due to a table definition cache inconsistency. This is the default setting on MacOSX, but may also be set and used on MS Windows. The bug is caused by using two different strategies for creating the hash key for the table definition cache, resulting in failure to look up an entry which is present in the cache, or failure to delete an existing entry. One strategy was to use the real table name (with case preserved), and the other to use a normalized table name (i.e a lower case version). This is manifested in two cases. One is during 'DROP DATABASE', where all known files are removed. The removal from the table definition cache is done via a generated list of TABLE_LIST with keys (wrongly) created using the case preserved name. The other is during CREATE TABLE, where the cache lookup is also (wrongly) based on the case preserved name. The fix was to use only the normalized table name when creating hash keys. sql/sql_db.cc: Normalize table name (i.e lower case it) sql/sql_table.cc: table_name contains the normalized name alias contains the real table name