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

MySQL数据库

开发平台:

Visual C++

  1. # Let's see if FLUSH TABLES WITH READ LOCK blocks COMMIT of existing
  2. # transactions.
  3. # We verify that we did not introduce a deadlock.
  4. # This is intended to mimick how mysqldump and innobackup work.
  5. # This test doesn't work with the embedded server
  6. -- source include/not_embedded.inc
  7. # And it requires InnoDB
  8. -- source include/have_innodb.inc
  9. connect (con1,localhost,root,,);
  10. connect (con2,localhost,root,,);
  11. connect (con3,localhost,root,,);
  12. connection con1;
  13. --disable_warnings
  14. drop table if exists t1;
  15. --enable_warnings
  16. create table t1 (a int) engine=innodb;
  17. # blocks COMMIT ?
  18. begin;
  19. insert into t1 values(1);
  20. connection con2;
  21. flush tables with read lock;
  22. select * from t1;
  23. connection con1;
  24. send commit; # blocked by con2
  25. sleep 1;
  26. connection con2;
  27. select * from t1; # verify con1 was blocked and data did not move
  28. unlock tables;
  29. connection con1;
  30. reap;
  31. # No deadlock ?
  32. connection con1;
  33. begin;
  34. select * from t1 for update;
  35. connection con2;
  36. begin;
  37. send select * from t1 for update; # blocked by con1
  38. sleep 1;
  39. connection con3;
  40. send flush tables with read lock; # blocked by con2
  41. connection con1;
  42. commit; # should not be blocked by con3
  43. connection con2;
  44. reap;
  45. connection con3;
  46. reap;
  47. unlock tables;
  48. # BUG#6732 FLUSH TABLES WITH READ LOCK + COMMIT hangs later FLUSH TABLES
  49. # WITH READ LOCK
  50. connection con2;
  51. commit; # unlock InnoDB row locks to allow insertions
  52. connection con1;
  53. begin;
  54. insert into t1 values(10);
  55. flush tables with read lock;
  56. commit;
  57. unlock tables;
  58. connection con2;
  59. flush tables with read lock; # bug caused hang here
  60. unlock tables;
  61. # BUG#7358 SHOW CREATE DATABASE fails if open transaction
  62. begin;
  63. select * from t1;
  64. show create database test;
  65. drop table t1;
  66. # End of 4.1 tests