You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

255 lines
5.8 KiB

  1. --source include/galera_cluster.inc
  2. --source include/have_sequence.inc
  3. --disable_ps2_protocol
  4. #
  5. # Case 1: Separate transactions from few connections
  6. #
  7. --connection node_1
  8. CREATE SEQUENCE s INCREMENT=0 CACHE=5 ENGINE=InnoDB;
  9. CREATE TABLE t1 (f1 INT PRIMARY KEY DEFAULT NEXTVAL(s), f2 INT) ENGINE=InnoDB;
  10. --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
  11. --connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2
  12. --connection node_1
  13. BEGIN;
  14. INSERT INTO t1(f2) values (1);
  15. INSERT INTO t1(f2) values (1);
  16. INSERT INTO t1(f2) values (1);
  17. INSERT INTO t1(f2) values (1);
  18. INSERT INTO t1(f2) values (1);
  19. INSERT INTO t1(f2) values (1);
  20. INSERT INTO t1(f2) values (1);
  21. INSERT INTO t1(f2) values (1);
  22. INSERT INTO t1(f2) values (1);
  23. INSERT INTO t1(f2) values (1);
  24. COMMIT;
  25. --connection node_2
  26. BEGIN;
  27. INSERT INTO t1(f2) values (1);
  28. INSERT INTO t1(f2) values (1);
  29. INSERT INTO t1(f2) values (1);
  30. INSERT INTO t1(f2) values (1);
  31. INSERT INTO t1(f2) values (1);
  32. INSERT INTO t1(f2) values (1);
  33. INSERT INTO t1(f2) values (1);
  34. INSERT INTO t1(f2) values (1);
  35. INSERT INTO t1(f2) values (1);
  36. INSERT INTO t1(f2) values (1);
  37. COMMIT;
  38. --connection node_2a
  39. BEGIN;
  40. INSERT INTO t1(f2) values (1);
  41. INSERT INTO t1(f2) values (1);
  42. INSERT INTO t1(f2) values (1);
  43. INSERT INTO t1(f2) values (1);
  44. INSERT INTO t1(f2) values (1);
  45. INSERT INTO t1(f2) values (1);
  46. INSERT INTO t1(f2) values (1);
  47. INSERT INTO t1(f2) values (1);
  48. INSERT INTO t1(f2) values (1);
  49. INSERT INTO t1(f2) values (1);
  50. COMMIT;
  51. --connection node_1a
  52. BEGIN;
  53. INSERT INTO t1(f2) values (1);
  54. INSERT INTO t1(f2) values (1);
  55. INSERT INTO t1(f2) values (1);
  56. INSERT INTO t1(f2) values (1);
  57. INSERT INTO t1(f2) values (1);
  58. INSERT INTO t1(f2) values (1);
  59. INSERT INTO t1(f2) values (1);
  60. INSERT INTO t1(f2) values (1);
  61. INSERT INTO t1(f2) values (1);
  62. INSERT INTO t1(f2) values (1);
  63. COMMIT;
  64. --connection node_2
  65. SELECT LASTVAL(s);
  66. --connection node_1
  67. SELECT LASTVAL(s);
  68. --connection node_2a
  69. SELECT LASTVAL(s);
  70. --connection node_1a
  71. SELECT LASTVAL(s);
  72. --connection node_1
  73. SELECT * FROM t1;
  74. --connection node_2
  75. SELECT * FROM t1;
  76. --connection node_1
  77. DROP TABLE t1;
  78. DROP SEQUENCE s;
  79. #
  80. # Case 2: All rollback
  81. #
  82. --connection node_1
  83. CREATE SEQUENCE s INCREMENT=0 CACHE=5 ENGINE=InnoDB;
  84. CREATE TABLE t1 (f1 INT PRIMARY KEY DEFAULT NEXTVAL(s), f2 INT) ENGINE=InnoDB;
  85. --connection node_1
  86. BEGIN;
  87. INSERT INTO t1(f2) values (1);
  88. INSERT INTO t1(f2) values (1);
  89. INSERT INTO t1(f2) values (1);
  90. INSERT INTO t1(f2) values (1);
  91. INSERT INTO t1(f2) values (1);
  92. INSERT INTO t1(f2) values (1);
  93. INSERT INTO t1(f2) values (1);
  94. INSERT INTO t1(f2) values (1);
  95. INSERT INTO t1(f2) values (1);
  96. INSERT INTO t1(f2) values (1);
  97. ROLLBACK;
  98. --connection node_2
  99. BEGIN;
  100. INSERT INTO t1(f2) values (1);
  101. INSERT INTO t1(f2) values (1);
  102. INSERT INTO t1(f2) values (1);
  103. INSERT INTO t1(f2) values (1);
  104. INSERT INTO t1(f2) values (1);
  105. INSERT INTO t1(f2) values (1);
  106. INSERT INTO t1(f2) values (1);
  107. INSERT INTO t1(f2) values (1);
  108. INSERT INTO t1(f2) values (1);
  109. INSERT INTO t1(f2) values (1);
  110. ROLLBACK;
  111. --connection node_2a
  112. BEGIN;
  113. INSERT INTO t1(f2) values (1);
  114. INSERT INTO t1(f2) values (1);
  115. INSERT INTO t1(f2) values (1);
  116. INSERT INTO t1(f2) values (1);
  117. INSERT INTO t1(f2) values (1);
  118. INSERT INTO t1(f2) values (1);
  119. INSERT INTO t1(f2) values (1);
  120. INSERT INTO t1(f2) values (1);
  121. INSERT INTO t1(f2) values (1);
  122. INSERT INTO t1(f2) values (1);
  123. ROLLBACK;
  124. --connection node_1a
  125. BEGIN;
  126. INSERT INTO t1(f2) values (1);
  127. INSERT INTO t1(f2) values (1);
  128. INSERT INTO t1(f2) values (1);
  129. INSERT INTO t1(f2) values (1);
  130. INSERT INTO t1(f2) values (1);
  131. INSERT INTO t1(f2) values (1);
  132. INSERT INTO t1(f2) values (1);
  133. INSERT INTO t1(f2) values (1);
  134. INSERT INTO t1(f2) values (1);
  135. INSERT INTO t1(f2) values (1);
  136. ROLLBACK;
  137. --connection node_2
  138. SELECT LASTVAL(s);
  139. --connection node_1
  140. SELECT LASTVAL(s);
  141. --connection node_2a
  142. SELECT LASTVAL(s);
  143. --connection node_1a
  144. SELECT LASTVAL(s);
  145. --connection node_1
  146. SELECT * FROM t1;
  147. --connection node_2
  148. SELECT * FROM t1;
  149. --connection node_1
  150. DROP TABLE t1;
  151. DROP SEQUENCE s;
  152. #
  153. # Case 3: Mixed transactions
  154. #
  155. --connection node_1
  156. CREATE SEQUENCE s INCREMENT=0 CACHE=5 ENGINE=InnoDB;
  157. CREATE TABLE t1 (f1 INT PRIMARY KEY DEFAULT NEXTVAL(s), f2 INT) ENGINE=InnoDB;
  158. --connection node_1
  159. BEGIN;
  160. INSERT INTO t1(f2) values (1);
  161. INSERT INTO t1(f2) values (1);
  162. INSERT INTO t1(f2) values (1);
  163. INSERT INTO t1(f2) values (1);
  164. INSERT INTO t1(f2) values (1);
  165. INSERT INTO t1(f2) values (1);
  166. INSERT INTO t1(f2) values (1);
  167. INSERT INTO t1(f2) values (1);
  168. INSERT INTO t1(f2) values (1);
  169. INSERT INTO t1(f2) values (1);
  170. --connection node_1a
  171. BEGIN;
  172. INSERT INTO t1(f2) values (1);
  173. INSERT INTO t1(f2) values (1);
  174. INSERT INTO t1(f2) values (1);
  175. INSERT INTO t1(f2) values (1);
  176. INSERT INTO t1(f2) values (1);
  177. INSERT INTO t1(f2) values (1);
  178. INSERT INTO t1(f2) values (1);
  179. INSERT INTO t1(f2) values (1);
  180. INSERT INTO t1(f2) values (1);
  181. INSERT INTO t1(f2) values (1);
  182. --connection node_2a
  183. BEGIN;
  184. INSERT INTO t1(f2) values (1);
  185. INSERT INTO t1(f2) values (1);
  186. INSERT INTO t1(f2) values (1);
  187. INSERT INTO t1(f2) values (1);
  188. INSERT INTO t1(f2) values (1);
  189. INSERT INTO t1(f2) values (1);
  190. INSERT INTO t1(f2) values (1);
  191. INSERT INTO t1(f2) values (1);
  192. INSERT INTO t1(f2) values (1);
  193. INSERT INTO t1(f2) values (1);
  194. --connection node_2
  195. BEGIN;
  196. INSERT INTO t1(f2) values (1);
  197. INSERT INTO t1(f2) values (1);
  198. INSERT INTO t1(f2) values (1);
  199. INSERT INTO t1(f2) values (1);
  200. INSERT INTO t1(f2) values (1);
  201. INSERT INTO t1(f2) values (1);
  202. INSERT INTO t1(f2) values (1);
  203. INSERT INTO t1(f2) values (1);
  204. INSERT INTO t1(f2) values (1);
  205. INSERT INTO t1(f2) values (1);
  206. --connection node_1
  207. COMMIT;
  208. --connection node_1a
  209. ROLLBACK;
  210. --connection node_2
  211. --error ER_LOCK_DEADLOCK
  212. COMMIT;
  213. --connection node_2a
  214. --error ER_LOCK_DEADLOCK
  215. ROLLBACK;
  216. --connection node_2
  217. SELECT LASTVAL(s);
  218. --connection node_1
  219. SELECT LASTVAL(s);
  220. --connection node_2a
  221. SELECT LASTVAL(s);
  222. --connection node_1a
  223. SELECT LASTVAL(s);
  224. --connection node_1
  225. SELECT * FROM t1;
  226. --connection node_2
  227. SELECT * FROM t1;
  228. --connection node_1
  229. DROP TABLE t1;
  230. DROP SEQUENCE s;