lock_multi.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. --disable_warnings
  9. drop table if exists t1,t2;
  10. --enable_warnings
  11. # Test to see if select will get the lock ahead of low priority update
  12. connect (locker,localhost,root,,);
  13. connect (reader,localhost,root,,);
  14. connect (writer,localhost,root,,);
  15. connection locker;
  16. create table t1(n int);
  17. insert into t1 values (1);
  18. lock tables t1 write;
  19. connection writer;
  20. send update low_priority t1 set n = 4;
  21. connection reader;
  22. --sleep 2
  23. send select n from t1;
  24. connection locker;
  25. --sleep 2
  26. unlock tables;
  27. connection writer;
  28. reap;
  29. connection reader;
  30. reap;
  31. drop table t1;
  32. connection locker;
  33. create table t1(n int);
  34. insert into t1 values (1);
  35. lock tables t1 read;
  36. connection writer;
  37. send update low_priority t1 set n = 4;
  38. connection reader;
  39. --sleep 2
  40. send select n from t1;
  41. connection locker;
  42. --sleep 2
  43. unlock tables;
  44. connection writer;
  45. reap;
  46. connection reader;
  47. reap;
  48. drop table t1;
  49. #
  50. # Test problem when using locks with multi-updates
  51. # It should not block when multi-update is reading on a read-locked table
  52. #
  53. connection locker;
  54. create table t1 (a int, b int);
  55. create table t2 (c int, d int);
  56. insert into t1 values(1,1);
  57. insert into t1 values(2,2);
  58. insert into t2 values(1,2);
  59. lock table t1 read;
  60. connection writer;
  61. --sleep 2
  62. send update t1,t2 set c=a where b=d;
  63. connection reader;
  64. --sleep 2
  65. select c from t2;
  66. connection writer;
  67. reap;
  68. connection locker;
  69. drop table t1;
  70. drop table t2;
  71. #
  72. # Test problem when using locks on many tables and droping a table that
  73. # is to-be-locked by another thread
  74. #
  75. connection locker;
  76. create table t1 (a int);
  77. create table t2 (a int);
  78. lock table t1 write, t2 write;
  79. connection reader;
  80. send insert t1 select * from t2;
  81. connection locker;
  82. drop table t2;
  83. connection reader;
  84. --error 1146
  85. reap;
  86. connection locker;
  87. drop table t1;
  88. # End of 4.1 tests