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

MySQL数据库

开发平台:

Visual C++

  1. -- source include/have_ndb.inc
  2. -- source include/not_embedded.inc
  3. --disable_warnings
  4. DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7;
  5. drop database if exists mysqltest;
  6. --enable_warnings
  7. #
  8. # Transactionc test to show that the NDB 
  9. # table handler is working properly with
  10. # transactions
  11. #
  12. #
  13. # Create a normal table with primary key
  14. #
  15. CREATE TABLE t1 (
  16.   pk1 INT NOT NULL PRIMARY KEY,
  17.   attr1 INT NOT NULL
  18. ) ENGINE=ndbcluster;
  19. # insert
  20. begin;
  21. insert into t1 values(1,1);
  22. insert into t1 values(2,2);
  23. select count(*) from t1;
  24. select * from t1 where pk1 = 1;
  25. select t1.attr1 from t1, t1 as t1x where t1.pk1 = t1x.pk1 + 1;
  26. rollback;
  27. select count(*) from t1;
  28. select * from t1 where pk1 = 1;
  29. select t1.attr1 from t1, t1 as t1x where t1.pk1 = t1x.pk1 + 1;
  30. begin;
  31. insert into t1 values(1,1);
  32. insert into t1 values(2,2);
  33. commit;
  34. select count(*) from t1;
  35. select * from t1 where pk1 = 1;
  36. select t1.attr1 from t1, t1 as t1x where t1.pk1 = t1x.pk1 + 1;
  37. # update
  38. begin;
  39. update t1 set attr1 = attr1 * 2;
  40. select count(*) from t1;
  41. select * from t1 where pk1 = 1;
  42. select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
  43. rollback;
  44. select count(*) from t1;
  45. select * from t1 where pk1 = 1;
  46. select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
  47. begin;
  48. update t1 set attr1 = attr1 * 2;
  49. commit;
  50. select count(*) from t1;
  51. select * from t1 where pk1 = 1;
  52. select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
  53. # delete
  54. begin;
  55. delete from t1 where attr1 = 2;
  56. select count(*) from t1;
  57. select * from t1 where pk1 = 1;
  58. select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
  59. rollback;
  60. select count(*) from t1;
  61. select * from t1 where pk1 = 1;
  62. select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
  63. begin;
  64. delete from t1 where attr1 = 2;
  65. commit;
  66. select count(*) from t1;
  67. select * from t1 where pk1 = 1;
  68. select * from t1, t1 as t1x where t1x.attr1 = t1.attr1 - 2;
  69. DROP TABLE t1;
  70. #
  71. # Create table without primary key
  72. # a hidden primary key column is created by handler
  73. #
  74. CREATE TABLE t1 (id INT, id2 int) engine=ndbcluster;
  75. # insert
  76. begin;
  77. insert into t1 values(1,1);
  78. insert into t1 values(2,2);
  79. select sum(id) from t1;
  80. select * from t1 where id = 1;
  81. select t1.id from t1, t1 as t1x where t1.id2 = t1x.id2 + 1;
  82. rollback;
  83. select sum(id) from t1;
  84. select * from t1 where id = 1;
  85. select t1.id from t1, t1 as t1x where t1.id2 = t1x.id2 + 1;
  86. begin;
  87. insert into t1 values(1,1);
  88. insert into t1 values(2,2);
  89. commit;
  90. select sum(id) from t1;
  91. select * from t1 where id = 1;
  92. select t1.id from t1, t1 as t1x where t1.id2 = t1x.id2 + 1;
  93. # update
  94. begin;
  95. update t1 set id = id * 2;
  96. select sum(id) from t1;
  97. select * from t1 where id = 2;
  98. select * from t1, t1 as t1x where t1x.id = t1.id - 2;
  99. rollback;
  100. select sum(id) from t1;
  101. select * from t1 where id = 2;
  102. select * from t1, t1 as t1x where t1x.id = t1.id - 2;
  103. begin;
  104. update t1 set id = id * 2;
  105. commit;
  106. select sum(id) from t1;
  107. select * from t1 where id = 2;
  108. select * from t1, t1 as t1x where t1x.id = t1.id - 2;
  109. # delete
  110. DROP TABLE t1;
  111. #
  112. # A more extensive test with a lot more records
  113. #
  114. CREATE TABLE t2 (
  115.   a bigint unsigned NOT NULL PRIMARY KEY,
  116.   b int unsigned not null,
  117.   c int unsigned
  118. ) engine=ndbcluster;
  119. CREATE TABLE t3 (
  120.   a bigint unsigned NOT NULL,
  121.   b bigint unsigned not null,
  122.   c bigint unsigned,
  123.   PRIMARY KEY(a)
  124. ) engine=ndbcluster;
  125. CREATE TABLE t4 (
  126.   a bigint unsigned NOT NULL,
  127.   b bigint unsigned not null,
  128.   c bigint unsigned NOT NULL,
  129.   d int unsigned,
  130.   PRIMARY KEY(a, b, c)
  131. ) engine=ndbcluster;
  132. #
  133. # insert records into tables and rollback
  134. #
  135. let $1=100;
  136. disable_query_log;
  137. begin;
  138. while ($1)
  139. {
  140.  eval insert into t2 values($1, $1+9, 5);
  141.  eval insert into t3 values($1, $1+9, 5);
  142.  eval insert into t4 values($1, $1+9, 5, $1+26000);
  143.  dec $1;
  144. }
  145. rollback;
  146. enable_query_log;
  147. select count(*) from t2;
  148. select count(*) from t3;
  149. select count(*) from t4;
  150. #
  151. # insert records into tables and commit;
  152. #
  153. let $1=100;
  154. disable_query_log;
  155. begin;
  156. while ($1)
  157. {
  158.  eval insert into t2 values($1, $1+9, 5);
  159.  eval insert into t3 values($1, $1+9, 5);
  160.  eval insert into t4 values($1, $1+9, 5, $1+26000);
  161.  dec $1;
  162. }
  163. commit;
  164. enable_query_log;
  165. select count(*) from t2;
  166. select count(*) from t3;
  167. select count(*) from t4;
  168. #
  169. # delete every other record in the tables
  170. #
  171. let $1=100;
  172. disable_query_log;
  173. while ($1)
  174. {
  175.  eval delete from t2 where a=$1;
  176.  eval delete from t3 where a=$1;
  177.  eval delete from t4 where a=$1 and b=$1+9 and c=5;
  178.  dec $1;
  179.  dec $1;
  180. }
  181. enable_query_log;
  182. #
  183. # update records and rollback
  184. #
  185. begin;
  186. let $1=100;
  187. disable_query_log;
  188. while ($1)
  189. {
  190.  eval update t2 set c=$1 where a=$1;
  191.  eval update t3 set c=7 where a=$1 and b=$1+9 and c=5;
  192.  eval update t4 set d=$1+21987 where a=$1 and b=$1+9 and c=5;
  193.  dec $1;
  194.  dec $1;
  195. }
  196. rollback;
  197. enable_query_log;
  198. #
  199. # update records and commit
  200. #
  201. begin;
  202. let $1=100;
  203. disable_query_log;
  204. while ($1)
  205. {
  206.  eval update t2 set c=$1 where a=$1;
  207.  eval update t3 set c=7 where a=$1 and b=$1+9 and c=5;
  208.  eval update t4 set d=$1+21987 where a=$1 and b=$1+9 and c=5;
  209.  dec $1;
  210.  dec $1;
  211. }
  212. rollback;
  213. enable_query_log;
  214. drop table t2;
  215. drop table t3;
  216. drop table t4;
  217. #
  218. # Test multiple databases in one transaction
  219. #
  220. CREATE TABLE t1 (
  221.   pk1 INT NOT NULL PRIMARY KEY,
  222.   attr1 INT NOT NULL
  223. ) ENGINE=ndbcluster;
  224. create database mysqltest;
  225. use mysqltest;
  226. CREATE TABLE t2 (
  227.   a bigint unsigned NOT NULL PRIMARY KEY,
  228.   b int unsigned not null,
  229.   c int unsigned
  230. ) engine=ndbcluster;
  231. begin;
  232. insert into test.t1 values(1,1);
  233. insert into t2 values(1,1,1);
  234. insert into test.t1 values(2,2);
  235. insert into t2 values(2,2,2);
  236. select count(*) from test.t1;
  237. select count(*) from t2;
  238. select * from test.t1 where pk1 = 1;
  239. select * from t2 where a = 1;
  240. select test.t1.attr1 
  241. from test.t1, test.t1 as t1x where test.t1.pk1 = t1x.pk1 + 1;
  242. select t2.a 
  243. from t2, t2 as t2x where t2.a = t2x.a + 1;
  244. select test.t1.pk1, a from test.t1,t2 where b > test.t1.attr1;
  245. rollback;
  246. select count(*) from test.t1;
  247. select count(*) from t2;
  248. drop table test.t1, t2;
  249. drop database mysqltest;
  250. # End of 4.1 tests