lock.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #
  2. # Testing of table locking
  3. #
  4. --disable_warnings
  5. drop table if exists t1,t2;
  6. --enable_warnings
  7. 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`)) ENGINE=MyISAM;
  8. insert into t1 (id,id2) values (1,1),(1,2),(1,3);
  9. LOCK TABLE t1 WRITE;
  10. select dummy1,count(distinct id) from t1 group by dummy1;
  11. update t1 set id=-1 where id=1;
  12. LOCK TABLE t1 READ;
  13. --error 1099
  14. update t1 set id=1 where id=1;
  15. --error 1100
  16. create table t2 SELECT * from t1;
  17. create temporary table t2 SELECT * from t1;
  18. drop table if exists t2;
  19. unlock tables;
  20. create table t2 SELECT * from t1;
  21. LOCK TABLE t1 WRITE,t2 write;
  22. insert into t2 SELECT * from t1;
  23. update t1 set id=1 where id=-1;
  24. drop table t1,t2;
  25. #
  26. # Check bug with INSERT ... SELECT with lock tables
  27. #
  28. CREATE TABLE t1 (
  29.   index1 smallint(6) default NULL,
  30.   nr smallint(6) default NULL,
  31.   KEY index1(index1)
  32. ) ENGINE=MyISAM;
  33. CREATE TABLE t2 (
  34.   nr smallint(6) default NULL,
  35.   name varchar(20) default NULL
  36. ) ENGINE=MyISAM;
  37. INSERT INTO t2 VALUES (1,'item1');
  38. INSERT INTO t2 VALUES (2,'item2');
  39. # problem begins here!
  40. lock tables t1 write, t2 read;
  41. insert into t1 select 1,nr from t2 where name='item1';
  42. insert into t1 select 2,nr from t2 where name='item2';
  43. unlock tables;
  44. check table t1;
  45. # Check error message
  46. lock tables t1 write;
  47. check table t2;
  48. --error 1100
  49. insert into t1 select nr from t1;
  50. unlock tables;
  51. lock tables t1 write, t1 as t1_alias read;
  52. insert into t1 select index1,nr from t1 as t1_alias;
  53. drop table t1,t2;
  54. #
  55. # Bug7241 - Invalid response when DELETE .. USING and LOCK TABLES used.
  56. #
  57. create table t1 ( a int(11) not null auto_increment, primary key(a));
  58. create table t2 ( a int(11) not null auto_increment, primary key(a));
  59. lock tables t1 write, t2 read;
  60. delete from t1 using t1,t2 where t1.a=t2.a;
  61. delete t1 from t1,t2 where t1.a=t2.a;
  62. --error 1099
  63. delete from t2 using t1,t2 where t1.a=t2.a;
  64. --error 1099
  65. delete t2 from t1,t2 where t1.a=t2.a;
  66. drop table t1,t2;
  67. # End of 4.1 tests