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

MySQL数据库

开发平台:

Visual C++

  1. # This test doesn't work with the embedded version as this code
  2. # assumes that one query is running while we are doing queries on
  3. # a second connection.
  4. # This would work if mysqltest run would be threaded and handle each
  5. # connection in a separate thread.
  6. #
  7. -- source include/not_embedded.inc
  8. connect (con1,localhost,root,,);
  9. connect (con2,localhost,root,,);
  10. connection con1;
  11. --disable_warnings
  12. drop table if exists t1,t2;
  13. drop database if exists mysqltest;
  14. --enable_warnings
  15. create temporary table t1(n int not null primary key);
  16. create table t2(n int);
  17. insert into t2 values(3);
  18. let $1=100;
  19. disable_query_log;
  20. while ($1)
  21. {
  22.  connection con1;
  23.  send replace into t1 select n from t2;
  24.  connection con2;
  25.  send flush tables;
  26.  connection con1;
  27.  reap;
  28.  connection con2;
  29.  reap;
  30.  dec $1;
  31. }
  32. enable_query_log;
  33. connection con1;
  34. select * from t1;
  35. connection con2;
  36. flush tables with read lock;
  37. --error 1099
  38. drop table t2;
  39. connection con1;
  40. send drop table t2;
  41. connection con2;
  42. unlock tables;
  43. connection con1;
  44. reap;
  45. #test if drop database will wait until we release the global read lock
  46. connection con1;
  47. create database mysqltest;
  48. create table mysqltest.t1(n int);
  49. insert into mysqltest.t1 values (23);
  50. flush tables with read lock;
  51. connection con2;
  52. send drop database mysqltest;
  53. connection con1;
  54. select * from mysqltest.t1;
  55. unlock tables;
  56. connection con2;
  57. reap;
  58. # test if dirty close releases global read lock
  59. connection con1;
  60. create table t1 (n int);
  61. flush tables with read lock;
  62. dirty_close con1;
  63. connection con2;
  64. insert into t1 values (345);
  65. select * from t1;
  66. drop table t1;
  67. #
  68. # Bug#9459 - deadlock with flush with lock, and lock table write
  69. #
  70. create table t1 (c1 int);
  71. lock table t1 write;
  72. # Cannot get the global read lock with write locked tables.
  73. --error 1192
  74. flush tables with read lock;
  75. lock table t1 read;
  76. # Can get the global read lock with read locked tables.
  77. flush tables with read lock;
  78. --error 1223
  79. lock table t1 write;
  80. lock table t1 read;
  81. --error 1223
  82. lock table t1 write;
  83. # Release all table locks and the global read lock.
  84. unlock tables;
  85. create table t2 (c1 int);
  86. create table t3 (c1 int);
  87. lock table t1 read, t2 read, t3 write;
  88. # Cannot get the global read lock with write locked tables.
  89. --error 1192
  90. flush tables with read lock;
  91. lock table t1 read, t2 read, t3 read;
  92. # Can get the global read lock with read locked tables.
  93. flush tables with read lock;
  94. # Release all table locks and the global read lock.
  95. unlock tables;
  96. drop table t1, t2, t3;
  97. # End of 4.1 tests