mariadb/mysys
Jon Olav Hauglid 0bd5741022 Backport of revno: 2617.68.18
Bug #42147 Concurrent DML and LOCK TABLE ... READ for InnoDB 
           table cause warnings in errlog

Concurrent execution of LOCK TABLES ... READ statement and DML statements 
affecting the same InnoDB table on debug builds of MySQL server might lead 
to "Found lock of type 6 that is write and read locked" warnings appearing 
in error log.

The problem is that the table-level locking code allows a thread to acquire
TL_READ_NO_INSERT lock on a table even if there is another thread which holds 
TL_WRITE_ALLOW_WRITE lock on the same table. At the same time, the locking
code assumes that that such locks are incompatible (for example, see check_locks()).

This doesn't lead to any problems other than warnings in error log for
debug builds of server since for InnoDB tables TL_READ_NO_INSERT type of
lock is only used for LOCK TABLES and for this statement InnoDB also
performs its own table-level locking.

Unfortunately, the table lock compatibility matrix cannot be updated to disallow
TL_READ_NO_INSERT when another thread holds TL_WRITE_ALLOW_WRITE without 
causing starvation of LOCK TABLE READ in InnoDB under high write load. 
This patch therefore contains no code changes.

The issue will be fixed later when LOCK TABLE READ has been updated
to not use table locks. This bug will therefore be marked as 
"To be fixed later".

Code comment in thr_lock.c expanded to clarify the issue and a 
test case based on the bug description added to innodb_mysql_lock.test.
Note that a global suppression rule has been added to both MTR v1 and v2
for the "Found lock of type 6 that is write and read locked" warning.
These suppression rules must be removed once this bug is properly fixed.
2009-12-09 16:13:00 +01:00
..
.cvsignore
array.c Fix for a few assorted compiler warnings. 2009-08-28 12:06:59 -03:00
base64.c fixed compilation warnings. addendum to the fix for bug 29125 2009-03-20 16:27:53 +02:00
ChangeLog
charset-def.c Bsckporting WL#3764 Sinhala Collation 2009-10-06 15:34:49 +05:00
charset.c Backporting WL#4164 Two-byte collation IDs 2009-10-15 15:17:32 +05:00
checksum.c Bug#29125 Windows Server X64: so many compiler warnings 2009-02-13 11:41:47 -05:00
CMakeLists.txt WL#2373 Use cycle counter for timing 2009-11-24 16:36:31 -07:00
default.c Backport post fix compiler warnings and test failures for BUG#25192 BUG#12190 2009-10-02 16:40:06 +08:00
default_modify.c This is the downport of 2009-09-11 22:26:35 +02:00
errors.c Backport of: 2009-11-24 16:54:59 +03:00
hash.c Backport of: 2009-11-24 16:54:59 +03:00
lf_alloc-pin.c WL#3230 concurrent hash 2009-11-17 19:31:40 -07:00
lf_dynarray.c WL#3230 concurrent hash 2009-11-17 19:31:40 -07:00
lf_hash.c WL#3230 concurrent hash 2009-11-17 19:31:40 -07:00
list.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
make-ccc Remove unused (and incorrect) my_lread() and my_lwrite() 2006-09-14 23:29:44 -06:00
make-conf.c Many files: 2006-12-23 20:17:15 +01:00
Makefile.am WL#2373 Use cycle counter for timing 2009-11-24 16:36:31 -07:00
md5.c Bug #42434: license of mysys MD5 implementation is not GPL-compatible 2009-03-09 20:57:03 +02:00
mf_arr_appstr.c Bug #20748: Configuration files should not be read more than once 2007-11-07 15:23:50 -07:00
mf_brkhant.c Many files: 2006-12-23 20:17:15 +01:00
mf_cache.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
mf_dirname.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
mf_fn_ext.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
mf_format.c BUG#43949 Initialization of slave produces a warning message in Valgrind 2009-04-19 02:21:33 +01:00
mf_getdate.c Merge from 5.0-bugteam 2009-05-13 08:48:00 -07:00
mf_iocache.c Manual merge. 2009-09-02 09:12:18 -03:00
mf_iocache2.c Backport of: 2009-11-24 16:54:59 +03:00
mf_keycache.c Merge from mysql-5.1. 2009-10-19 17:28:31 +04:00
mf_keycaches.c Backport of: 2009-10-14 20:37:38 +04:00
mf_loadpath.c Backport of: 2009-11-24 16:54:59 +03:00
mf_pack.c Merge from 5.0 for 43414 2009-08-28 18:21:54 +02:00
mf_path.c Backport of: 2009-11-24 16:54:59 +03:00
mf_qsort.c Fix for bug #31207: Test "join_nested" shows different strategy on IA64 2007-10-17 20:08:58 +04:00
mf_qsort2.c Many files: 2006-12-23 20:17:15 +01:00
mf_radix.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
mf_same.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
mf_sort.c Merge polly.(none):/home/kaa/src/maint/mysql-5.0-maint 2007-10-18 14:32:43 +04:00
mf_soundex.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
mf_tempdir.c Bug#29125 Windows Server X64: so many compiler warnings 2009-02-13 11:41:47 -05:00
mf_tempfile.c Moved a lot of old bug fixes and safe cleanups from Maria 5.1 tree to 5.1 2007-10-11 18:07:40 +03:00
mf_unixpath.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
mf_util.c Many files: 2006-12-23 20:17:15 +01:00
mf_wcomp.c Many files: 2006-12-23 20:17:15 +01:00
mf_wfile.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
mulalloc.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
my_access.c Merge mysql.com:/home/kent/bk/main/mysql-5.0 2006-12-23 20:20:40 +01:00
my_aes.c my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
my_alarm.c Many files: 2006-12-23 20:17:15 +01:00
my_alloc.c Backport of Bug#15192 to mysql-next-mr 2009-11-10 18:31:28 -02:00
my_append.c Backport of: 2009-11-24 16:54:59 +03:00
my_atomic.c WL#2595 kernel-independent atomic operations 2009-11-17 17:11:32 -07:00
my_bit.c Moved a lot of old bug fixes and safe cleanups from Maria 5.1 tree to 5.1 2007-10-11 18:07:40 +03:00
my_bitmap.c Moved a lot of old bug fixes and safe cleanups from Maria 5.1 tree to 5.1 2007-10-11 18:07:40 +03:00
my_chsize.c This is the downport of 2009-09-11 22:26:35 +02:00
my_clock.c Backport of: 2009-11-24 16:54:59 +03:00
my_compress.c Bug#29125 Windows Server X64: so many compiler warnings 2009-02-13 11:41:47 -05:00
my_conio.c Bug#29125 Windows Server X64: so many compiler warnings 2009-02-13 11:41:47 -05:00
my_copy.c Backport of: 2009-11-24 16:54:59 +03:00
my_crc32.c Many files: 2006-12-23 20:17:15 +01:00
my_create.c This is the downport of 2009-09-11 22:26:35 +02:00
my_delete.c Manual resolving for the following files 2009-12-01 21:07:18 +02:00
my_div.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
my_dup.c This is the downport of 2009-09-11 22:26:35 +02:00
my_error.c WL#4903 Plugin Service API part I 2009-11-02 21:05:42 +01:00
my_file.c This is the downport of 2009-09-11 22:26:35 +02:00
my_fopen.c This is the downport of 2009-09-11 22:26:35 +02:00
my_fstream.c Backport of: 2009-11-24 16:54:59 +03:00
my_gethostbyname.c Merge mysql.com:/home/kent/bk/main/mysql-5.0 2006-12-31 01:32:21 +01:00
my_gethwaddr.c fix compile error. definition of VOID in trunk still conflicts with windows headers. that was fixed in 6.0 2009-09-13 19:38:06 +02:00
my_getncpus.c WL#2595 kernel-independent atomic operations 2009-11-17 17:11:32 -07:00
my_getopt.c merging from 5.1 to rep+2 starting at gca(5.1, next-mr) == build@mysql.com-20091104182209-iui387z35159aoyw 2009-11-30 14:34:39 +02:00
my_getpagesize.c Many files: 2006-12-23 20:17:15 +01:00
my_getsystime.c Reverted wrong patch, fix for Windows 32bit build. 2008-02-26 18:44:04 +02:00
my_getwd.c Backport of: 2009-11-24 16:54:59 +03:00
my_handler.c Fixed problem with non-synchronous error lists 2008-03-28 18:45:03 +02:00
my_handler_errors.h WL#5016: Fix header file include guards 2009-09-23 23:32:31 +02:00
my_init.c Backport of the patch 2009-09-30 03:39:37 +02:00
my_largepage.c Merge from mysql-next-mr. 2009-10-23 15:22:21 +04:00
my_lib.c Backport of: 2009-11-24 16:54:59 +03:00
my_libwrap.c Many files: 2006-12-23 20:17:15 +01:00
my_lock.c This is the downport of 2009-09-11 22:26:35 +02:00
my_lockmem.c Backport of: 2009-11-24 16:54:59 +03:00
my_malloc.c Backport of my_malloc() changes from 5.1 to make it 64-bit safe on Unix platforms. 2007-08-29 19:20:18 +04:00
my_memmem.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
my_messnc.c WL#2110 (SIGNAL) 2009-09-10 03:18:29 -06:00
my_mkdir.c Merge mysql.com:/home/kent/bk/main/mysql-5.0 2006-12-23 20:20:40 +01:00
my_mmap.c This is the downport of 2009-09-11 22:26:35 +02:00
my_net.c Merge mysql.com:/home/kent/bk/main/mysql-5.0 2006-12-23 20:20:40 +01:00
my_netware.c Many files: 2006-12-23 20:17:15 +01:00
my_new.cc Bug#43461: invalid comparison with string literal in default.c 2009-03-19 17:20:15 -03:00
my_once.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
my_open.c This is the downport of 2009-09-11 22:26:35 +02:00
my_port.c my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
my_pread.c This is the downport of 2009-09-11 22:26:35 +02:00
my_pthread.c Backport of: 2009-11-24 16:54:59 +03:00
my_quick.c This is the downport of 2009-09-11 22:26:35 +02:00
my_rdtsc.c WL#2373 Use cycle counter for timing 2009-11-24 16:36:31 -07:00
my_read.c This is the downport of 2009-09-11 22:26:35 +02:00
my_realloc.c Moved a lot of old bug fixes and safe cleanups from Maria 5.1 tree to 5.1 2007-10-11 18:07:40 +03:00
my_redel.c Backport of: 2009-11-24 16:54:59 +03:00
my_rename.c Moved a lot of old bug fixes and safe cleanups from Maria 5.1 tree to 5.1 2007-10-11 18:07:40 +03:00
my_seek.c This is the downport of 2009-09-11 22:26:35 +02:00
my_sleep.c Merge mysql.com:/home/kent/bk/main/mysql-5.0 2006-12-23 20:20:40 +01:00
my_static.c Backport of: 2009-12-03 21:59:52 +03:00
my_static.h WL#5016: Fix header file include guards 2009-09-23 23:32:31 +02:00
my_symlink.c Bug#39102 valgrind build does not compile in realpath, which make DATA/INDEX DIR fail 2008-10-27 19:25:11 +04:00
my_symlink2.c Merge mysql.com:/home/svoj/devel/mysql/BUG32111/mysql-5.0-engines 2007-11-12 15:26:37 +04:00
my_sync.c This is the downport of 2009-09-11 22:26:35 +02:00
my_thr_init.c WL#3230 concurrent hash 2009-11-17 19:31:40 -07:00
my_timer_cycles.il WL#2373 Use cycle counter for timing 2009-11-24 16:36:31 -07:00
my_vle.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
my_wincond.c A follow up for the fix for Bug#35164 (remove priorities on Windows). 2009-11-23 20:08:37 +03:00
my_windac.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
my_winerr.c This is the downport of 2009-09-11 22:26:35 +02:00
my_winfile.c backport of 2009-09-30 22:10:22 +02:00
my_winthread.c Backport of this changeset 2009-09-30 17:40:12 +02:00
my_write.c This is the downport of 2009-09-11 22:26:35 +02:00
mysys_priv.h This is the downport of 2009-09-11 22:26:35 +02:00
ptr_cmp.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
queues.c Fix for server bug experienced in Maria (wrong "Truncated incorrect <var_name> 2008-02-18 23:29:39 +01:00
rijndael.c my_strtoll10-x86.s: 2006-12-31 01:02:27 +01:00
safemalloc.c Bug#43932 myisam index corruption with large index and large 2009-04-29 13:51:10 +02:00
sha1.c Merge bk-internal.mysql.com:/home/bk/mysql-5.0 2007-01-22 14:04:40 +02:00
stacktrace.c Backport of: 2009-11-24 16:54:59 +03:00
string.c Bug#29125 Windows Server X64: so many compiler warnings 2009-02-13 11:41:47 -05:00
test_charset.c Fix doxygen warnings. 2007-08-15 17:43:08 +04:00
test_dir.c Merge mysql.com:/home/kent/bk/main/mysql-5.0 2006-12-23 20:20:40 +01:00
test_fn.c Many files: 2006-12-23 20:17:15 +01:00
test_xml.c Many files: 2006-12-23 20:17:15 +01:00
testhash.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
thr_alarm.c Backport of: 2009-11-24 16:54:59 +03:00
thr_lock.c Backport of revno: 2617.68.18 2009-12-09 16:13:00 +01:00
thr_mutex.c Bug#38941: fast mutexes in MySQL 5.1 have mutex contention when calling random() 2008-10-15 19:21:00 -03:00
thr_rwlock.c Many files: 2006-12-23 20:17:15 +01:00
tree.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
trie.c WL#3817: Simplify string / memory area types and make things more consistent (first part) 2007-05-10 12:59:39 +03:00
typelib.c Bug#46586: When using the plugin interface the type "set" for options caused a crash. 2009-10-27 06:16:02 -07:00