mariadb/storage
Vasil Dimov 17afdb9051 Fix Bug#11754376 45976: INNODB LOST FILES FOR TEMPORARY TABLES ON
GRACEFUL SHUTDOWN

During startup mysql picks up .frm files from the tmpdir directory and
tries to drop those tables in the storage engine.

The problem is that when tmpdir ends in / then ha_innobase::delete_table()
is passed a string like "/var/tmp//#sql123", then it wrongly normalizes it
to "/#sql123" and calls row_drop_table_for_mysql() which of course fails
to delete the table entry from the InnoDB dictionary cache.
ha_innobase::delete_table() returns an error but nevertheless mysql wipes
away the .frm file and the entry in the InnoDB dictionary cache remains
orphaned with no easy way to remove it.

The "no easy" way to remove it is to create a similar temporary table again,
copy its .frm file to tmpdir under "#sql123.frm" and restart mysqld with
tmpdir=/var/tmp (no trailing slash) - this way mysql will pick the .frm file
after restart and will try to issue drop table for "/var/tmp/#sql123"
(notice do double slash), ha_innobase::delete_table() will normalize it to
"tmp/#sql123" and row_drop_table_for_mysql() will successfully remove the
table entry from the dictionary cache.

The solution is to fix normalize_table_name_low() to normalize things like
"/var/tmp//table" correctly to "tmp/table".

This patch also adds a test function which invokes
normalize_table_name_low() with various inputs to make sure it works
correctly and a mtr test that calls this test function.

Reviewed by:	Marko (http://bur03.no.oracle.com/rb/r/929/)
2012-02-06 12:44:59 +02:00
..
archive BUG#11748748 - 37280: CHECK AND REPAIR TABLE REPORT TABLE 2012-02-03 19:37:00 +05:30
blackhole Updated/added copyright headers 2011-06-30 17:37:13 +02:00
csv Updated/added copyright headers 2011-06-30 17:37:13 +02:00
example Updated/added copyright headers 2011-06-30 17:37:13 +02:00
federated Fix for bug#11758931 - 51196: SLAVE SQL: GOT AN ERROR WRITING 2011-12-23 18:52:44 +04:00
heap BUG#11759349 - 51655: CREATE TABLE IN MEMORY ENGINE DOESN'T STORE 2011-09-27 17:38:51 +05:30
innobase Fix Bug#11754376 45976: INNODB LOST FILES FOR TEMPORARY TABLES ON 2012-02-06 12:44:59 +02:00
innodb_plugin Fix Bug#11754376 45976: INNODB LOST FILES FOR TEMPORARY TABLES ON 2012-02-06 12:44:59 +02:00
myisam BUG#11756869 - 48848: MYISAMCHK DOING SORT RECOVER IN CERTAIN 2012-02-02 14:19:38 +05:30
myisammrg Updated/added copyright headers 2011-07-03 17:47:37 +02:00
ndb Merge from mysql-5.1.58-release 2011-07-06 00:56:51 +02:00
Makefile.am Updated/added copyright headers 2011-06-30 17:37:13 +02:00
mysql_storage_engine.cmake Updated/added copyright headers 2011-06-30 17:37:13 +02:00