MariaDB server is a community developed fork of MySQL server. Started by core members of the original MySQL team, MariaDB actively works with outside developers to deliver the most featureful, stable, and sanely licensed open SQL server in the industry.
Find a file
unknown f57813e457 Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements
This deadlock occurs when a client issues a HANDLER ... OPEN statement
that tries to open a table that has a pending name-lock on it by another
client that also needs a name-lock on some other table which is already
open and associated to a HANDLER instance owned by the first client.
The deadlock happens because the open_table() function will back-off
and wait until the name-lock goes away, causing a circular wait if some
other name-lock is also pending for one of the open HANDLER tables.

Such situation, for example, can be easily repeated by issuing a RENAME
TABLE command in such a way that the existing table is already open
as a HANDLER table by another client and this client tries to open
a HANDLER to the new table name.

The solution is to allow handler tables with older versions (marked for
flush) to be closed before waiting for the name-lock completion. This is
safe because no other name-lock can be issued between the flush and the
check for pending name-locks.

The test case for this bug is going to be committed into 5.1 because it
requires a test feature only avaiable in 5.1 (wait_condition).


sql/sql_base.cc:
  Improve comments in the open_table() function, stating the importance
  of the handler tables flushing for the back-off process.
sql/sql_handler.cc:
  Allows handler tables flushes when opening new tables in order to avoid
  potential deadlocks. Add comments explaining the importance of the flush.
2007-10-09 12:02:59 -03:00
bdb my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
BitKeeper Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-4.1-build 2007-06-18 20:15:27 +02:00
BUILD Do not use $static_link for GCOV builds, 2007-08-22 18:11:01 -06:00
client Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base 2007-09-04 14:38:26 -06:00
cmd-line-utils Generate "config.h" directly into the "include" directory, later copied 2007-07-30 21:09:45 +02:00
config/ac-macros Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-build 2007-08-01 18:30:55 -06:00
dbug CMakeLists.txt, README, configure.js 2007-08-03 21:51:37 +02:00
debian Change mode to -rw-rw-r-- 2007-04-19 21:59:25 -07:00
Docs Merge mysql.com:/home/kent/bk/tmp/mysql-4.1-build 2007-03-22 19:43:41 +01:00
extra Import yaSSL version 1.7.2 2007-08-28 10:35:55 +02:00
heap Fixing crash when compiled using -DNEW_HASH_FUNCTIONS 2007-05-08 17:04:56 +05:00
include Merge kindahl-laptop.dnsalias.net:/home/bk/b30992-mysql-5.0-rpl 2007-10-01 15:14:58 +02:00
innobase NULL MERGE this ChangeSet to 5.1 2007-08-15 17:20:54 -06:00
libmysql Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt 2007-08-14 18:16:34 +04:00
libmysql_r my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
libmysqld Merge trift2.:/MySQL/M41/push-4.1 2007-06-18 19:44:58 +02:00
man my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
myisam Merge synthia.local:/home/mydev/mysql-5.0-amain 2007-08-13 20:45:36 +02:00
myisammrg BUG#26976 - Missing table in merge not noted in related error msg + 2007-06-06 04:42:41 +05:00
mysql-test Fix for BUG#31035: select from function, group by result crasher. 2007-10-04 17:19:14 +04:00
mysys Merge kindahl-laptop.dnsalias.net:/home/bk/b30992-mysql-5.0-rpl 2007-10-01 15:14:58 +02:00
ndb Bug #10776: Failure to compile ndb ReadNodesConf.cpp on AIX 5.2 2007-08-01 04:56:58 +02:00
netware Merge trift2.:/MySQL/M50/netware2-5.0 2007-08-24 23:40:36 +02:00
os2 Avoid the name conflict between the system-provided "md5.h" and the MySQL one 2007-07-19 14:14:03 +02:00
pstack my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
regex my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
scripts Merge ramayana.hindu.god:/home/tsmith/m/bk/maint/b27694/50 2007-08-28 13:24:31 -06:00
server-tools CMakeLists.txt, README, configure.js 2007-08-03 21:51:37 +02:00
sql Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements 2007-10-09 12:02:59 -03:00
sql-bench my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
sql-common Merge mysql.com:/home/hf/work/29494/my41-29494 2007-07-22 14:03:18 +05:00
SSL SSL/Makefile.am mysql-test/Makefile.am: 2007-07-27 17:39:07 +02:00
strings Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint 2007-08-07 06:53:40 -04:00
support-files Handle "support-files/mysqld_multi.server.sh" like other shell scripts. 2007-07-17 19:27:31 +02:00
tests mysql_client_test.c: 2007-08-15 18:21:58 +04:00
tools Avoid the name conflict between the system-provided "md5.h" and the MySQL one 2007-07-19 14:14:03 +02:00
VC++Files Merge trift2.:/MySQL/M41/clone-4.1 2007-06-18 19:16:12 +02:00
vio Bug#28812 rpl_ssl fails due to assert in extra/yassl/src/socket_wrapper.cpp:117 2007-08-28 11:34:43 +02:00
win CMakeLists.txt, README, configure.js 2007-08-03 21:51:37 +02:00
zlib CMakeLists.txt, README, configure.js 2007-08-03 21:51:37 +02:00
.bzrignore Bug#24732 Executables do not include Vista manifests 2007-07-25 13:18:12 -04:00
.cvsignore Import changeset 2000-07-31 21:29:14 +02:00
CMakeLists.txt CMakeLists.txt: 2007-08-04 00:26:46 +02:00
configure.in adjust version number 2007-08-27 11:38:32 +02:00
COPYING - manual.texi will be replaced with a manual written in DocBook/XML. This ChangeSet removes all 2005-04-13 11:51:38 +02:00
EXCEPTIONS-CLIENT EXCEPTIONS-CLIENT: 2007-03-14 18:28:16 +01:00
Makefile.am Remove the "row_lock" suite from the sources. 2007-07-26 17:25:03 +02:00
README make_binary_distribution.sh: 2006-11-07 22:26:37 +01:00

This is a release of MySQL, a dual-license SQL database server.
MySQL is brought to you by the MySQL team at MySQL AB.

License information can be found in these files:
- For GPL (free) distributions, see the COPYING file and
  the EXCEPTIONS-CLIENT file.
- For commercial distributions, see the LICENSE.mysql file.


For further information about MySQL or additional documentation, see:
- The latest information about MySQL: http://www.mysql.com
- The current MySQL documentation: http://dev.mysql.com/doc

Some manual sections of special interest:

- If you are migrating from an older version of MySQL, please read the
  "Upgrading from..." section first!
- To see what MySQL can do, take a look at the features section.
- For installation instructions, see the Installing and Upgrading chapter.
- For the new features/bugfix history, see the Change History appendix.
- For the currently known bugs/misfeatures (known errors) see the Problems
  and Common Errors appendix.
- For a list of developers and other contributors, see the Credits
  appendix.

A local copy of the MySQL Reference Manual can be found in the Docs
directory in GNU Info format.  You can also browse the manual online or
download it in any of several formats at the URL given earlier in this
file.

************************************************************

IMPORTANT:

Bug or error reports should be sent to http://bugs.mysql.com.