diff options
author | Mattias Jonsson <mattias.jonsson@sun.com> | 2010-03-17 15:10:41 +0100 |
---|---|---|
committer | Mattias Jonsson <mattias.jonsson@sun.com> | 2010-03-17 15:10:41 +0100 |
commit | 3b897f2bc5de31e7f166a02fccf5f3e4017f4a5f (patch) | |
tree | 817537f1993a7a5dd2793a5a9122af60a9041efd /sql/authors.h | |
parent | 8d514f21459b2bc767d7be00ab05ccf615c33e6b (diff) | |
download | mariadb-git-3b897f2bc5de31e7f166a02fccf5f3e4017f4a5f.tar.gz |
Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
concurrent I_S query
There were two problem:
1) MYSQL_LOCK_IGNORE_FLUSH also ignored name locks
2) there was a race between abort_and_upgrade_locks and
alter_close_tables
(i.e. remove_table_from_cache and
close_data_files_and_morph_locks)
Which allowed the table to be opened with MYSQL_LOCK_IGNORE_FLUSH flag
resulting in renaming a partition that was already in use,
which could cause the table to be unusable.
Solution was to not allow IGNORE_FLUSH to skip waiting for
a named locked table.
And to not release the LOCK_open mutex between the
calls to remove_table_from_cache and
close_data_files_and_morph_locks by merging the functions
abort_and_upgrade_locks and alter_close_tables.
Diffstat (limited to 'sql/authors.h')
-rw-r--r-- | sql/authors.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/authors.h b/sql/authors.h index dfe3b143e2f..925c942fa24 100644 --- a/sql/authors.h +++ b/sql/authors.h @@ -76,6 +76,7 @@ struct show_table_authors_st show_table_authors[]= { { "Eric Herman", "Amsterdam, Netherlands", "Bug fixing - federated" }, { "Andrey Hristov", "Walldorf, Germany", "Event scheduler (5.1)" }, { "Alexander (Alexi) Ivanov", "St. Petersburg, Russia", "Replication" }, + { "Mattias Jonsson", "Uppsala, Sweden", "Partitioning" }, { "Alexander (Salle) Keremidarski", "Sofia, Bulgaria", "Bug fixing" }, { "Mats Kindahl", "Storvreta, Sweden", "Replication" }, |