Commit e5da9a96 authored by monty@donna.mysql.fi's avatar monty@donna.mysql.fi

Fixed bug in lock tables introduced by shared locks.

New lock test
parent 62e6906b
......@@ -17995,6 +17995,10 @@ Addresses may be 4 or 8 byte addresses:
mysql> select INET_ATON("209.207.224.40");
-> 3520061480
@end example
The generated number is always in network byte order; For example the
above number is calculated as @code{209*255^3 + 207*255^2 + 224*255 +40}.
@findex MASTER_POS_WAIT()
@item MASTER_POS_WAIT(log_name, log_pos)
Blocks until the slave reaches the specified position in the master log during
dummy1 count(distinct id)
NULL 1
#
# Testing of table locking
#
drop table if exists t1,t2;
CREATE TABLE t1 ( `id` int(11) NOT NULL default '0', `id2` int(11) NOT NULL default '0', `id3` int(11) NOT NULL default '0', `dummy1` char(30) default NULL, PRIMARY KEY (`id`,`id2`), KEY `index_id3` (`id3`)) TYPE=MyISAM;
insert into t1 (id,id2) values (1,1),(1,2),(1,3);
LOCK TABLE t1 WRITE;
select dummy1,count(distinct id) from t1 group by dummy1;
update t1 set id=-1 where id=1;
LOCK TABLE t1 READ;
--error 1099
update t1 set id=1 where id=1;
--error 1100
create table t2 SELECT * from t1;
create temporary table t2 SELECT * from t1;
drop table if exists t2;
unlock tables;
create table t2 SELECT * from t1;
LOCK TABLE t1 WRITE,t2 write;
insert into t2 SELECT * from t1;
update t1 set id=1 where id=-1;
drop table t1,t2;
......@@ -1362,7 +1362,7 @@ int open_tables(THD *thd,TABLE_LIST *start)
result= -1; // Fatal error
break;
}
if (tables->lock_type != TL_UNLOCK)
if (tables->lock_type != TL_UNLOCK && ! thd->locked_tables)
tables->table->reginfo.lock_type=tables->lock_type;
tables->table->grant= tables->grant;
}
......
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