-
unknown authored
corruption errors: 126,134,145 When one thread attempts to lock two (or more) tables and another thread executes statement that aborts these locks (e.g. REPAIR TABLE) we may get a table object with wrong lock type in a table cache. For example if SELECT FROM t1,t2 was aborted, subsequent INSERT INTO t1 may be executed under read lock. As a result we may get various table corruptions and even a server crash. This is fixed by resetting lock type in case lock was aborted by another thread. I failed to create reasonable test case for this bug. sql/lock.cc: If thr_multi_lock was aborted by another thread, it unlocks tables that were locked before one that was aborted. Lock type for tables that were after a table that was aborted preserved. Thus we need to reset lock data in case thr_multi_lock was aborted.
93b10124