Commit 4a56b284 authored by unknown's avatar unknown
Browse files

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

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

parents 6ed9208e e30bd1e4
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -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	179	Query	1	79	use `test`; insert into t1 values(18)
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;
+1 −0
Original line number Diff line number Diff line
--loose-innodb_lock_wait_timeout=2
+32 −0
Original line number Diff line number Diff line
@@ -175,4 +175,36 @@ select a from t1 order by a; # check that savepoints work :)

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;
+2 −1
Original line number Diff line number Diff line
@@ -1254,7 +1254,8 @@ bool MYSQL_LOG::write(Log_event* event_info)
      if (flush_io_cache(file))
	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