Commit 4a56b284 authored by unknown's avatar unknown

Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-4.0

into mysql.com:/home/mysql_src/mysql-4.0

parents 6ed9208e e30bd1e4
...@@ -177,4 +177,25 @@ master-bin.001 79 Query 1 79 use `test`; BEGIN ...@@ -177,4 +177,25 @@ master-bin.001 79 Query 1 79 use `test`; BEGIN
master-bin.001 119 Query 1 79 use `test`; insert into t1 values(16) master-bin.001 119 Query 1 79 use `test`; insert into t1 values(16)
master-bin.001 179 Query 1 79 use `test`; insert into t1 values(18) master-bin.001 179 Query 1 79 use `test`; insert into t1 values(18)
master-bin.001 239 Query 1 239 use `test`; COMMIT master-bin.001 239 Query 1 239 use `test`; COMMIT
delete from t1;
delete from t2;
alter table t2 type=MyISAM;
insert into t1 values (1);
begin;
select * from t1 for update;
a
1
select (@before:=unix_timestamp())*0;
(@before:=unix_timestamp())*0
0
begin;
select * from t1 for update;
insert into t2 values (20);
Lock wait timeout exceeded; Try restarting transaction
select (@after:=unix_timestamp())*0;
(@after:=unix_timestamp())*0
0
select (@after-@before) >= 2;
(@after-@before) >= 2
1
drop table t1,t2; drop table t1,t2;
--loose-innodb_lock_wait_timeout=2
...@@ -175,4 +175,36 @@ select a from t1 order by a; # check that savepoints work :) ...@@ -175,4 +175,36 @@ select a from t1 order by a; # check that savepoints work :)
show binlog events from 79; show binlog events from 79;
# Test for BUG#5714, where a MyISAM update in the transaction used to
# release row-level locks in InnoDB
connect (con3,localhost,root,,);
connection con3;
delete from t1;
delete from t2;
--disable_warnings
alter table t2 type=MyISAM;
--enable_warnings
insert into t1 values (1);
begin;
select * from t1 for update;
connection con2;
select (@before:=unix_timestamp())*0; # always give repeatable output
begin;
send select * from t1 for update;
connection con3;
insert into t2 values (20);
connection con2;
--error 1205
reap;
select (@after:=unix_timestamp())*0; # always give repeatable output
# verify that innodb_lock_wait_timeout was exceeded. When there was
# the bug, the reap would return immediately after the insert into t2.
select (@after-@before) >= 2;
# cleanup
drop table t1,t2; drop table t1,t2;
...@@ -1254,7 +1254,8 @@ bool MYSQL_LOG::write(Log_event* event_info) ...@@ -1254,7 +1254,8 @@ bool MYSQL_LOG::write(Log_event* event_info)
if (flush_io_cache(file)) if (flush_io_cache(file))
goto err; goto err;
if (opt_using_transactions && !my_b_tell(&thd->transaction.trans_log)) if (opt_using_transactions &&
!(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))
{ {
/* /*
LOAD DATA INFILE in AUTOCOMMIT=1 mode writes to the binlog LOAD DATA INFILE in AUTOCOMMIT=1 mode writes to the binlog
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment