mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#51851: Server with SBR locks mutex twice on
LOAD DATA into partitioned MyISAM table Problem was that both partitioning and myisam used the same table_share->mutex for different protections (auto inc and repair). Solved by adding a specific mutex for the partitioning auto_increment. Also adding destroying the ha_data structure in free_table_share (which is to be propagated into 5.5). This is a 5.1 ONLY patch, already fixed in 5.5+.
This commit is contained in:
10
sql/table.cc
10
sql/table.cc
@ -425,6 +425,11 @@ void free_table_share(TABLE_SHARE *share)
|
||||
key_info->flags= 0;
|
||||
}
|
||||
}
|
||||
if (share->ha_data_destroy)
|
||||
{
|
||||
share->ha_data_destroy(share->ha_data);
|
||||
share->ha_data_destroy= NULL;
|
||||
}
|
||||
/* We must copy mem_root from share because share is allocated through it */
|
||||
memcpy((char*) &mem_root, (char*) &share->mem_root, sizeof(mem_root));
|
||||
free_root(&mem_root, MYF(0)); // Free's share
|
||||
@ -1616,6 +1621,11 @@ static int open_binary_frm(THD *thd, TABLE_SHARE *share, uchar *head,
|
||||
delete crypted;
|
||||
delete handler_file;
|
||||
hash_free(&share->name_hash);
|
||||
if (share->ha_data_destroy)
|
||||
{
|
||||
share->ha_data_destroy(share->ha_data);
|
||||
share->ha_data_destroy= NULL;
|
||||
}
|
||||
|
||||
open_table_error(share, error, share->open_errno, errarg);
|
||||
DBUG_RETURN(error);
|
||||
|
Reference in New Issue
Block a user