>Description:
The following sequencee of statements should cause a deadlock.
transaction | operation | object
------------+-----------+-------
1 | write | a
2 | write | b
2 | read | a
1 | read | b
It fails to do so with mysql-3.23.32 compiled with db-3.2.3h.
Instead the last read returns an empty set, although "b" exists --
it is just locked.
>How-To-Repeat:
Setup:
create table ta (id integer, x integer) type=BDB;
create table tb (id integer, x integer) type=BDB;
insert into ta values(0, 0);
insert into tb values(0, 0);
Then open 2 "mysql" shells end set AUTOCOMMIT=0 in both of them.
Then type in the first:
update ta set x = 1 where id = 0;
Then in the second:
update tb set x = 1 where id = 0;
select x from ta where id = 0;
And then in the first again:
select x from tb where id = 0;
This will return "Empty set (0.00 sec)", but it should detected
a deadlock.
>Fix:
I didn't look at the MySQL/BDB code.
>Submitter-Id: <submitter ID>
>Originator: Stefan Proels
>Organization: i-TV-T AG
>MySQL support: none
>Synopsis: Fails to detect a deadlock and returns an empty set instead.
>Severity: critical
>Priority: high
>Category: mysql
>Class: sw-bug
>Release: mysql-3.23.32 (Source distribution)
>Environment:
System: Linux itvt1 2.2.14 #1 Mon Mar 13 10:51:48 GMT 2000 i686 unknown
Architecture: i686
Some paths: /usr/local/bin/perl /usr/bin/make /usr/bin/gmake /usr/bin/gcc /usr/bin/cc
GCC: Reading specs from /usr/lib/gcc-lib/i486-suse-linux/2.95.2/specs
gcc version 2.95.2 19991024 (release)
Compilation info: CC='gcc' CFLAGS='' CXX='c++' CXXFLAGS='' LDFLAGS=''
LIBC:
lrwxrwxrwx 1 root root 13 Mar 4 2000 /lib/libc.so.4 -> libc.so.4.7.6
-rwxr-xr-x 1 root root 634880 Apr 29 1996 /lib/libc.so.4.7.6
-rwxr-xr-x 1 root root 4061504 Mar 11 2000 /lib/libc.so.6
-rw-r--r-- 1 root root 19182842 Mar 11 2000 /usr/lib/libc.a
-rw-r--r-- 1 root root 178 Mar 11 2000 /usr/lib/libc.so
Configure command: ./configure --with-tcp-port=3406
--with-unix-socket-path=/tmp/mysql-bdb.sock --prefix=/usr/local/mysql-bdb
Perl: This is perl, version 5.005_03 built for i586-linux
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php