diff options
author | unknown <monty@donna.mysql.fi> | 2001-03-27 13:05:48 +0300 |
---|---|---|
committer | unknown <monty@donna.mysql.fi> | 2001-03-27 13:05:48 +0300 |
commit | 475c3d52a9a8459d0e98769900ff345fc42fde88 (patch) | |
tree | 79556751870ab82c0f898e5350ffa270c21f1519 | |
parent | 5c548150fbcf34af721e98807c9c929caa4eccd8 (diff) | |
download | mariadb-git-mysql-3.23.36.tar.gz |
Fixed bug in lock tables introduced by shared locks.mysql-3.23.36
New lock test
Docs/manual.texi:
Small update
sql/sql_base.cc:
Fixed bug in lock tables introduced by shared locks.
-rw-r--r-- | Docs/manual.texi | 4 | ||||
-rw-r--r-- | mysql-test/r/lock.result | 2 | ||||
-rw-r--r-- | mysql-test/t/lock.test | 23 | ||||
-rw-r--r-- | sql/sql_base.cc | 2 |
4 files changed, 30 insertions, 1 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index 36090a4d6b9..4264827d51c 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -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 diff --git a/mysql-test/r/lock.result b/mysql-test/r/lock.result new file mode 100644 index 00000000000..7b116326fc4 --- /dev/null +++ b/mysql-test/r/lock.result @@ -0,0 +1,2 @@ +dummy1 count(distinct id) +NULL 1 diff --git a/mysql-test/t/lock.test b/mysql-test/t/lock.test new file mode 100644 index 00000000000..777129ec814 --- /dev/null +++ b/mysql-test/t/lock.test @@ -0,0 +1,23 @@ +# +# 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; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 0024e80219b..04ed72aec92 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -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; } |