mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 11:27:39 +02:00
Reverted patch for new usage of open_count as it caused more problems than it solved
Cleaned up patch for checking locks for multi-table updates myisam/mi_close.c: Reverted patch for new usage of open_counts myisam/mi_locking.c: Reverted patch for new usage of open_counts sql/ha_myisam.cc: Reverted patch for new usage of open_counts sql/handler.cc: Removed compiler warning sql/sql_acl.cc: Removed compiler warning sql/sql_table.cc: No need to unlock after failed call to external_lock() sql/sql_update.cc: Cleaned up (and made it more secure) patch for checking locks for multi-table updates
This commit is contained in:
parent
c0364263d9
commit
0d76cb7ea4
7 changed files with 115 additions and 157 deletions
|
|
@ -998,32 +998,14 @@ int ha_myisam::delete_table(const char *name)
|
|||
return mi_delete_table(name);
|
||||
}
|
||||
|
||||
|
||||
int ha_myisam::external_lock(THD *thd, int lock_type)
|
||||
{
|
||||
int rc;
|
||||
|
||||
while ((! (rc= mi_lock_database(file, !table->tmp_table ?
|
||||
lock_type : ((lock_type == F_UNLCK) ?
|
||||
F_UNLCK : F_EXTRA_LCK)))) &&
|
||||
mi_is_crashed(file) && (myisam_recover_options != HA_RECOVER_NONE))
|
||||
{
|
||||
/*
|
||||
check_and_repair() implicitly write locks the table, unless a
|
||||
LOCK TABLES is in effect. It should be safer to always write lock here.
|
||||
The implicit lock by check_and_repair() will then be a no-op.
|
||||
check_and_repair() does not restore the original lock, but unlocks the
|
||||
table. So we have to get the requested lock type again. And then to
|
||||
check, if the table has been crashed again meanwhile by another server.
|
||||
If anything fails, we break.
|
||||
*/
|
||||
if (((lock_type != F_WRLCK) && (rc= mi_lock_database(file, F_WRLCK))) ||
|
||||
(rc= check_and_repair(thd)))
|
||||
break;
|
||||
}
|
||||
return rc;
|
||||
return mi_lock_database(file, !table->tmp_table ?
|
||||
lock_type : ((lock_type == F_UNLCK) ?
|
||||
F_UNLCK : F_EXTRA_LCK));
|
||||
}
|
||||
|
||||
|
||||
THR_LOCK_DATA **ha_myisam::store_lock(THD *thd,
|
||||
THR_LOCK_DATA **to,
|
||||
enum thr_lock_type lock_type)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue