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.

525 lines
20 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. #
  2. # ================================================================================
  3. # SETUP
  4. # ================================================================================
  5. SET @@session.sql_log_bin=OFF;
  6. #
  7. # CREATE 3 CLIENTS, 3 CONNECTIONS, RESULTS TABLE
  8. connection default;
  9. USE test;
  10. #
  11. # Create results table
  12. CREATE TABLE test.status_results
  13. (variable_name VARCHAR(64), start INT DEFAULT 0, stop INT DEFAULT 0, delta INT DEFAULT 0,
  14. t1 INT DEFAULT 0, t2 INT DEFAULT 0, t3 INT DEFAULT 0, thread INT DEFAULT 0,
  15. u1 INT DEFAULT 0, u2 INT DEFAULT 0, u3 INT DEFAULT 0, user INT DEFAULT 0,
  16. h1 INT DEFAULT 0, h2 INT DEFAULT 0, h3 INT DEFAULT 0, host INT DEFAULT 0,
  17. a1 INT DEFAULT 0, a2 INT DEFAULT 0, a3 INT DEFAULT 0, acct INT DEFAULT 0);
  18. INSERT INTO test.status_results (variable_name, start)
  19. SELECT sg.variable_name, sg.variable_value+0 FROM performance_schema.global_status sg
  20. WHERE variable_name IN ('handler_delete', 'handler_rollback');
  21. # Create test tables
  22. CREATE TABLE t1 (s1 int) ENGINE=InnoDB;
  23. INSERT INTO t1 VALUES (1), (2), (2), (3), (3), (3);
  24. CREATE TABLE t2 (s1 int) ENGINE=InnoDB;
  25. CREATE TABLE t3 (s1 int) ENGINE=InnoDB;
  26. #
  27. set @orig_sql_mode= @@sql_mode;
  28. set sql_mode= (select replace(@@sql_mode,'NO_AUTO_CREATE_USER',''));
  29. GRANT ALL ON *.* to 'user1'@localhost;
  30. GRANT ALL ON *.* to 'user2'@localhost;
  31. GRANT ALL ON *.* to 'user3'@localhost;
  32. set sql_mode= @orig_sql_mode;
  33. #
  34. # ================================================================================
  35. # CONNECTION 1: DELETE 1, ROLLBACK x 1
  36. # ================================================================================
  37. connect con1, localhost, user1,,;
  38. SET @@session.sql_log_bin=OFF;
  39. DELETE FROM t1 WHERE s1 = 1;
  40. START TRANSACTION;
  41. INSERT INTO t1 VALUES (1);
  42. ROLLBACK;
  43. #
  44. # ================================================================================
  45. # CONNECTION 2: DELETE 2, ROLLBACK x 2
  46. # ================================================================================
  47. connect con2, localhost, user2,,;
  48. SET @@session.sql_log_bin=OFF;
  49. DELETE FROM t1 WHERE s1 = 2;
  50. #
  51. START TRANSACTION;
  52. INSERT INTO t1 VALUES (2);
  53. ROLLBACK;
  54. #
  55. START TRANSACTION;
  56. INSERT INTO t1 VALUES (2);
  57. ROLLBACK;
  58. #
  59. # ================================================================================
  60. # CONNECTION 3: DELETE 3, ROLLBACK x 3
  61. # ================================================================================
  62. connect con3, localhost, user3,,;
  63. SET @@session.sql_log_bin=OFF;
  64. DELETE FROM t1 WHERE s1 = 3;
  65. #
  66. START TRANSACTION;
  67. INSERT INTO t1 VALUES (3);
  68. ROLLBACK;
  69. #
  70. START TRANSACTION;
  71. INSERT INTO t1 VALUES (3);
  72. ROLLBACK;
  73. #
  74. START TRANSACTION;
  75. INSERT INTO t1 VALUES (3);
  76. ROLLBACK;
  77. #
  78. # ================================================================================
  79. # CONNECTION DEFAULT: Gather results, compare session and global status counts
  80. # ================================================================================
  81. connection default;
  82. # Get thread ids for each connection.
  83. USE performance_schema;
  84. SELECT thread_id INTO @con1_id FROM threads WHERE processlist_user IN ('user1');
  85. SELECT thread_id INTO @con2_id FROM threads WHERE processlist_user IN ('user2');
  86. SELECT thread_id INTO @con3_id FROM threads WHERE processlist_user IN ('user3');
  87. #=================
  88. # Global results
  89. #=================
  90. USE test;
  91. UPDATE test.status_results sr, performance_schema.global_status sg
  92. SET sr.stop = sg.variable_value
  93. WHERE sr.variable_name = sg.variable_name
  94. AND sg.variable_name IN ('handler_delete', 'handler_rollback');
  95. #
  96. # Global deltas: END - START.
  97. UPDATE test.status_results sr
  98. SET sr.delta = sr.stop - sr.start;
  99. #=================
  100. # Status by thread
  101. #=================
  102. # Thread results from CON1.
  103. UPDATE test.status_results sr, performance_schema.status_by_thread sbt
  104. SET sr.t1 = sbt.variable_value
  105. WHERE sr.variable_name = sbt.variable_name
  106. AND sbt.variable_name IN ('handler_delete', 'handler_rollback')
  107. AND sbt.thread_id = @con1_id;
  108. #
  109. # Thread results from CON2.
  110. UPDATE test.status_results sr, performance_schema.status_by_thread sbt
  111. SET sr.t2 = sbt.variable_value
  112. WHERE sr.variable_name = sbt.variable_name
  113. AND sbt.variable_name IN ('handler_delete', 'handler_rollback')
  114. AND sbt.thread_id = @con2_id;
  115. #
  116. # Thread results from CON3.
  117. UPDATE test.status_results sr, performance_schema.status_by_thread sbt
  118. SET sr.t3 = sbt.variable_value
  119. WHERE sr.variable_name = sbt.variable_name
  120. AND sbt.variable_name IN ('handler_delete', 'handler_rollback')
  121. AND sbt.thread_id = @con3_id;
  122. #
  123. # Thread totals for 3 connections.
  124. UPDATE test.status_results sr
  125. SET sr.thread = sr.t1 + sr.t2 + sr.t3;
  126. #=================
  127. # Status by user
  128. #=================
  129. # User1
  130. UPDATE test.status_results sr, performance_schema.status_by_user sbu
  131. SET sr.u1 = sbu.variable_value
  132. WHERE sr.variable_name = sbu.variable_name
  133. AND sbu.variable_name IN ('handler_delete', 'handler_rollback')
  134. AND sbu.user IN ('user1');
  135. #
  136. # User2
  137. UPDATE test.status_results sr, performance_schema.status_by_user sbu
  138. SET sr.u2 = sbu.variable_value
  139. WHERE sr.variable_name = sbu.variable_name
  140. AND sbu.variable_name IN ('handler_delete', 'handler_rollback')
  141. AND sbu.user IN ('user2');
  142. #
  143. # User3
  144. UPDATE test.status_results sr, performance_schema.status_by_user sbu
  145. SET sr.u3 = sbu.variable_value
  146. WHERE sr.variable_name = sbu.variable_name
  147. AND sbu.variable_name IN ('handler_delete', 'handler_rollback')
  148. AND sbu.user IN ('user3');
  149. #
  150. # Status totals for 3 users.
  151. UPDATE test.status_results sr
  152. SET sr.user = sr.u1 + sr.u2 + sr.u3;
  153. #===========================
  154. # Status by host (localhost)
  155. #===========================
  156. #
  157. # host1 = localhost
  158. UPDATE test.status_results sr, performance_schema.status_by_host sbh
  159. SET sr.h1 = sbh.variable_value
  160. WHERE sr.variable_name = sbh.variable_name
  161. AND sbh.variable_name IN ('handler_delete', 'handler_rollback')
  162. AND sbh.host IN ('localhost');
  163. #
  164. # Status totals for 'localhost' only.
  165. UPDATE test.status_results sr
  166. SET sr.host = sr.h1 + sr.h2 + sr.h3;
  167. #==================
  168. # Status by account
  169. #==================
  170. # User1@localhost
  171. UPDATE test.status_results sr, performance_schema.status_by_account sba
  172. SET sr.a1 = sba.variable_value
  173. WHERE sr.variable_name = sba.variable_name
  174. AND sba.variable_name IN ('handler_delete', 'handler_rollback')
  175. AND sba.user IN ('user1');
  176. #
  177. # User2@localhost
  178. UPDATE test.status_results sr, performance_schema.status_by_account sba
  179. SET sr.a2 = sba.variable_value
  180. WHERE sr.variable_name = sba.variable_name
  181. AND sba.variable_name IN ('handler_delete', 'handler_rollback')
  182. AND sba.user IN ('user2');
  183. #
  184. # User3@localhost
  185. UPDATE test.status_results sr, performance_schema.status_by_account sba
  186. SET sr.a3 = sba.variable_value
  187. WHERE sr.variable_name = sba.variable_name
  188. AND sba.variable_name IN ('handler_delete', 'handler_rollback')
  189. AND sba.user IN ('user3');
  190. #
  191. #
  192. # Status totals for 3 accounts.
  193. UPDATE test.status_results sr
  194. SET sr.acct = sr.a1 + sr.a2 + sr.a3;
  195. #
  196. # ================================================================================
  197. # TEST 1: STATUS_BY_THREAD: Verify expected status counts per thread (1,2,3)
  198. # ================================================================================
  199. #
  200. # Review per-thread status counts
  201. #
  202. USE performance_schema;
  203. #
  204. # Verify expected counts for 'handler_delete' per thread
  205. #
  206. SELECT *, IF (variable_value = 1,'OK','ERROR') AS Expected FROM status_by_thread WHERE thread_id = @con1_id AND variable_name IN ('handler_delete', 'handler_rollback');
  207. THREAD_ID VARIABLE_NAME VARIABLE_VALUE Expected
  208. con_1 Handler_delete 1 OK
  209. con_1 Handler_rollback 1 OK
  210. #
  211. SELECT *, IF (variable_value = 2,'OK','ERROR') AS Expected FROM status_by_thread WHERE thread_id = @con2_id AND variable_name IN ('handler_delete', 'handler_rollback');
  212. THREAD_ID VARIABLE_NAME VARIABLE_VALUE Expected
  213. con_2 Handler_delete 2 OK
  214. con_2 Handler_rollback 2 OK
  215. #
  216. SELECT *, IF (variable_value = 3,'OK','ERROR') AS Expected FROM status_by_thread WHERE thread_id = @con3_id AND variable_name IN ('handler_delete', 'handler_rollback');
  217. THREAD_ID VARIABLE_NAME VARIABLE_VALUE Expected
  218. con_3 Handler_delete 3 OK
  219. con_3 Handler_rollback 3 OK
  220. #
  221. # STATUS_BY_THREAD vs. GLOBAL_STATUS
  222. #
  223. SELECT variable_name, t1, t2, t3, delta, thread, IF(thread=delta,'OK','ERROR') Expected
  224. FROM test.status_results
  225. ORDER BY variable_name;
  226. variable_name t1 t2 t3 delta thread Expected
  227. Handler_delete 1 2 3 6 6 OK
  228. Handler_rollback 1 2 3 6 6 OK
  229. #
  230. # ================================================================================
  231. # TEST 2: STATUS_BY_USER: Verify expected status counts per user (1,2,3)
  232. # ================================================================================
  233. SELECT *, IF (variable_value = 1,'OK','ERROR') AS Expected FROM status_by_user WHERE user IN ('user1') AND variable_name IN ('handler_delete');
  234. USER VARIABLE_NAME VARIABLE_VALUE Expected
  235. user1 Handler_delete 1 OK
  236. #
  237. SELECT *, IF (variable_value = 2,'OK','ERROR') AS Expected FROM status_by_user WHERE user IN ('user2') AND variable_name IN ('handler_delete');
  238. USER VARIABLE_NAME VARIABLE_VALUE Expected
  239. user2 Handler_delete 2 OK
  240. #
  241. SELECT *, IF (variable_value = 3,'OK','ERROR') AS Expected FROM status_by_user WHERE user IN ('user3') AND variable_name IN ('handler_delete');
  242. USER VARIABLE_NAME VARIABLE_VALUE Expected
  243. user3 Handler_delete 3 OK
  244. #
  245. # STATUS_BY_USER vs. GLOBAL_STATUS
  246. #
  247. SELECT variable_name, u1, u2, u3, delta, user, IF(user=delta,'OK','ERROR') Expected
  248. FROM test.status_results
  249. ORDER BY variable_name;
  250. variable_name u1 u2 u3 delta user Expected
  251. Handler_delete 1 2 3 6 6 OK
  252. Handler_rollback 1 2 3 6 6 OK
  253. #
  254. # ================================================================================
  255. # TEST 3: STATUS_BY_ACCOUNT: Verify expected status counts per user, host (1,2,3)
  256. # ================================================================================
  257. SELECT *, IF (variable_value = 1,'OK','ERROR') AS Expected FROM status_by_account WHERE user IN ('user1') AND variable_name IN ('handler_delete');
  258. USER HOST VARIABLE_NAME VARIABLE_VALUE Expected
  259. user1 localhost Handler_delete 1 OK
  260. #
  261. SELECT *, IF (variable_value = 2,'OK','ERROR') AS Expected FROM status_by_account WHERE user IN ('user2') AND variable_name IN ('handler_delete');
  262. USER HOST VARIABLE_NAME VARIABLE_VALUE Expected
  263. user2 localhost Handler_delete 2 OK
  264. #
  265. SELECT *, IF (variable_value = 3,'OK','ERROR') AS Expected FROM status_by_account WHERE user IN ('user3') AND variable_name IN ('handler_delete');
  266. USER HOST VARIABLE_NAME VARIABLE_VALUE Expected
  267. user3 localhost Handler_delete 3 OK
  268. #
  269. # STATUS_BY_ACCOUNT vs. GLOBAL_STATUS
  270. #
  271. SELECT variable_name, a1, a2, a3, delta, acct, IF(acct=delta,'OK','ERROR') Expected
  272. FROM test.status_results
  273. ORDER BY variable_name;
  274. variable_name a1 a2 a3 delta acct Expected
  275. Handler_delete 1 2 3 6 6 OK
  276. Handler_rollback 1 2 3 6 6 OK
  277. # ================================================================================
  278. # TEST 4: STATUS_BY_HOST: Verify expected status counts per host (6)
  279. # ================================================================================
  280. SELECT *, IF (variable_value = 6,'OK','ERROR') AS Expected FROM status_by_host WHERE host IN ('localhost') AND variable_name IN ('handler_delete');
  281. HOST VARIABLE_NAME VARIABLE_VALUE Expected
  282. localhost Handler_delete 6 OK
  283. #
  284. # STATUS_BY_HOST vs. GLOBAL_STATUS
  285. #
  286. # Special case: No way to isolate pre-existing 'localhost' activity, so
  287. # just check global totals = sum(status_by_host).
  288. #
  289. SELECT variable_name, h1, h2, h3, delta, host, IF(host=delta,'OK','ERROR') Expected
  290. FROM test.status_results
  291. ORDER BY variable_name;
  292. variable_name h1 h2 h3 delta host Expected
  293. Handler_delete 6 0 0 6 6 OK
  294. Handler_rollback 6 0 0 6 6 OK
  295. #
  296. # ================================================================================
  297. # DISCONNECT ALL USERS AND RUN THE TESTS AGAIN. RESULTS SHOULD NOT CHANGE.
  298. # ================================================================================
  299. connection default;
  300. disconnect con1;
  301. disconnect con2;
  302. disconnect con3;
  303. #
  304. USE test;
  305. #
  306. # Clear results table, leave initial global_status counts
  307. UPDATE test.status_results
  308. SET stop=0, delta=0,
  309. t1=0, t2=0, t3=0, thread=0,
  310. u1=0, u2=0, u3=0, user=0,
  311. h1=0, h2=0, h3=0, host=0,
  312. a1=0, a2=0, a3=0, acct=0;
  313. #
  314. #=================
  315. # Global results
  316. #=================
  317. USE test;
  318. UPDATE test.status_results sr, performance_schema.global_status sg
  319. SET sr.stop = sg.variable_value
  320. WHERE sr.variable_name = sg.variable_name
  321. AND sg.variable_name IN ('handler_delete', 'handler_rollback');
  322. #
  323. # Global deltas: END - START.
  324. UPDATE test.status_results sr
  325. SET sr.delta = sr.stop - sr.start;
  326. #=================
  327. # Status by thread
  328. #=================
  329. # Thread results from CON1.
  330. UPDATE test.status_results sr, performance_schema.status_by_thread sbt
  331. SET sr.t1 = sbt.variable_value
  332. WHERE sr.variable_name = sbt.variable_name
  333. AND sbt.variable_name IN ('handler_delete', 'handler_rollback')
  334. AND sbt.thread_id = @con1_id;
  335. #
  336. # Thread results from CON2.
  337. UPDATE test.status_results sr, performance_schema.status_by_thread sbt
  338. SET sr.t2 = sbt.variable_value
  339. WHERE sr.variable_name = sbt.variable_name
  340. AND sbt.variable_name IN ('handler_delete', 'handler_rollback')
  341. AND sbt.thread_id = @con2_id;
  342. #
  343. # Thread results from CON3.
  344. UPDATE test.status_results sr, performance_schema.status_by_thread sbt
  345. SET sr.t3 = sbt.variable_value
  346. WHERE sr.variable_name = sbt.variable_name
  347. AND sbt.variable_name IN ('handler_delete', 'handler_rollback')
  348. AND sbt.thread_id = @con3_id;
  349. #
  350. # Thread totals for 3 connections.
  351. UPDATE test.status_results sr
  352. SET sr.thread = sr.t1 + sr.t2 + sr.t3;
  353. #=================
  354. # Status by user
  355. #=================
  356. # User1
  357. UPDATE test.status_results sr, performance_schema.status_by_user sbu
  358. SET sr.u1 = sbu.variable_value
  359. WHERE sr.variable_name = sbu.variable_name
  360. AND sbu.variable_name IN ('handler_delete', 'handler_rollback')
  361. AND sbu.user IN ('user1');
  362. #
  363. # User2
  364. UPDATE test.status_results sr, performance_schema.status_by_user sbu
  365. SET sr.u2 = sbu.variable_value
  366. WHERE sr.variable_name = sbu.variable_name
  367. AND sbu.variable_name IN ('handler_delete', 'handler_rollback')
  368. AND sbu.user IN ('user2');
  369. #
  370. # User3
  371. UPDATE test.status_results sr, performance_schema.status_by_user sbu
  372. SET sr.u3 = sbu.variable_value
  373. WHERE sr.variable_name = sbu.variable_name
  374. AND sbu.variable_name IN ('handler_delete', 'handler_rollback')
  375. AND sbu.user IN ('user3');
  376. #
  377. # Status totals for 3 users.
  378. UPDATE test.status_results sr
  379. SET sr.user = sr.u1 + sr.u2 + sr.u3;
  380. #===========================
  381. # Status by host (localhost)
  382. #===========================
  383. #
  384. # host1 = localhost
  385. UPDATE test.status_results sr, performance_schema.status_by_host sbh
  386. SET sr.h1 = sbh.variable_value
  387. WHERE sr.variable_name = sbh.variable_name
  388. AND sbh.variable_name IN ('handler_delete', 'handler_rollback')
  389. AND sbh.host IN ('localhost');
  390. #
  391. # Status totals for 'localhost' only.
  392. UPDATE test.status_results sr
  393. SET sr.host = sr.h1 + sr.h2 + sr.h3;
  394. #==================
  395. # Status by account
  396. #==================
  397. # User1@localhost
  398. UPDATE test.status_results sr, performance_schema.status_by_account sba
  399. SET sr.a1 = sba.variable_value
  400. WHERE sr.variable_name = sba.variable_name
  401. AND sba.variable_name IN ('handler_delete', 'handler_rollback')
  402. AND sba.user IN ('user1');
  403. #
  404. # User2@localhost
  405. UPDATE test.status_results sr, performance_schema.status_by_account sba
  406. SET sr.a2 = sba.variable_value
  407. WHERE sr.variable_name = sba.variable_name
  408. AND sba.variable_name IN ('handler_delete', 'handler_rollback')
  409. AND sba.user IN ('user2');
  410. #
  411. # User3@localhost
  412. UPDATE test.status_results sr, performance_schema.status_by_account sba
  413. SET sr.a3 = sba.variable_value
  414. WHERE sr.variable_name = sba.variable_name
  415. AND sba.variable_name IN ('handler_delete', 'handler_rollback')
  416. AND sba.user IN ('user3');
  417. #
  418. #
  419. # Status totals for 3 accounts.
  420. UPDATE test.status_results sr
  421. SET sr.acct = sr.a1 + sr.a2 + sr.a3;
  422. USE performance_schema;
  423. #
  424. # ================================================================================
  425. # TEST X: STATUS_BY_THREAD: Connections are gone--nothing to verify.
  426. # ================================================================================
  427. #
  428. # ================================================================================
  429. # TEST 5: STATUS_BY_USER: Verify expected status counts per user (1,2,3)
  430. # ================================================================================
  431. SELECT *, IF (variable_value = 1,'OK','ERROR') AS Expected FROM status_by_user WHERE user IN ('user1') AND variable_name IN ('handler_delete');
  432. USER VARIABLE_NAME VARIABLE_VALUE Expected
  433. user1 Handler_delete 1 OK
  434. #
  435. SELECT *, IF (variable_value = 2,'OK','ERROR') AS Expected FROM status_by_user WHERE user IN ('user2') AND variable_name IN ('handler_delete');
  436. USER VARIABLE_NAME VARIABLE_VALUE Expected
  437. user2 Handler_delete 2 OK
  438. #
  439. SELECT *, IF (variable_value = 3,'OK','ERROR') AS Expected FROM status_by_user WHERE user IN ('user3') AND variable_name IN ('handler_delete');
  440. USER VARIABLE_NAME VARIABLE_VALUE Expected
  441. user3 Handler_delete 3 OK
  442. #
  443. # STATUS_BY_USER vs. GLOBAL_STATUS
  444. #
  445. SELECT variable_name, u1, u2, u3, delta, user, IF(user=delta,'OK','ERROR') Expected
  446. FROM test.status_results
  447. ORDER BY variable_name;
  448. variable_name u1 u2 u3 delta user Expected
  449. Handler_delete 1 2 3 6 6 OK
  450. Handler_rollback 1 2 3 6 6 OK
  451. #
  452. # ================================================================================
  453. # TEST 6: STATUS_BY_ACCOUNT: Verify expected status counts per user:host (1,2,3)
  454. # ================================================================================
  455. SELECT *, IF (variable_value = 1,'OK','ERROR') AS Expected FROM status_by_account WHERE user IN ('user1') AND variable_name IN ('handler_delete');
  456. USER HOST VARIABLE_NAME VARIABLE_VALUE Expected
  457. user1 localhost Handler_delete 1 OK
  458. #
  459. SELECT *, IF (variable_value = 2,'OK','ERROR') AS Expected FROM status_by_account WHERE user IN ('user2') AND variable_name IN ('handler_delete');
  460. USER HOST VARIABLE_NAME VARIABLE_VALUE Expected
  461. user2 localhost Handler_delete 2 OK
  462. #
  463. SELECT *, IF (variable_value = 3,'OK','ERROR') AS Expected FROM status_by_account WHERE user IN ('user3') AND variable_name IN ('handler_delete');
  464. USER HOST VARIABLE_NAME VARIABLE_VALUE Expected
  465. user3 localhost Handler_delete 3 OK
  466. #
  467. # STATUS_BY_ACCOUNT vs. GLOBAL_STATUS
  468. #
  469. SELECT variable_name, a1, a2, a3, delta, acct, IF(acct=delta,'OK','ERROR') Expected
  470. FROM test.status_results
  471. ORDER BY variable_name;
  472. variable_name a1 a2 a3 delta acct Expected
  473. Handler_delete 1 2 3 6 6 OK
  474. Handler_rollback 1 2 3 6 6 OK
  475. # ================================================================================
  476. # TEST 7: STATUS_BY_HOST: Verify expected status counts per host (6)
  477. # ================================================================================
  478. SELECT *, IF (variable_value = 6,'OK','ERROR') AS Expected FROM status_by_host WHERE host IN ('localhost') AND variable_name IN ('handler_delete');
  479. HOST VARIABLE_NAME VARIABLE_VALUE Expected
  480. localhost Handler_delete 6 OK
  481. #
  482. # STATUS_BY_HOST vs. GLOBAL_STATUS
  483. #
  484. # Special case: No way to isolate pre-existing 'localhost' activity, so
  485. # just check global totals = sum(status_by_host).
  486. #
  487. SELECT variable_name, h1, h2, h3, delta, host, IF(host=delta,'OK','ERROR') Expected
  488. FROM test.status_results
  489. ORDER BY variable_name;
  490. variable_name h1 h2 h3 delta host Expected
  491. Handler_delete 6 0 0 6 6 OK
  492. Handler_rollback 6 0 0 6 6 OK
  493. # ================================================================================
  494. # TEST 8: FLUSH STATUS should clear account, host and user status
  495. # ================================================================================
  496. #
  497. FLUSH STATUS;
  498. #
  499. SELECT * FROM status_by_account WHERE user IN ('user1', 'user2', 'user3') AND variable_name IN ('handler_delete');
  500. USER HOST VARIABLE_NAME VARIABLE_VALUE
  501. user1 localhost Handler_delete 0
  502. user2 localhost Handler_delete 0
  503. user3 localhost Handler_delete 0
  504. #
  505. SELECT * FROM status_by_host WHERE host IN ('localhost') AND variable_name IN ('handler_delete');
  506. HOST VARIABLE_NAME VARIABLE_VALUE
  507. localhost Handler_delete 0
  508. #
  509. SELECT * FROM status_by_user WHERE user IN ('user1', 'user2', 'user3') AND variable_name IN ('handler_delete');
  510. USER VARIABLE_NAME VARIABLE_VALUE
  511. user1 Handler_delete 0
  512. user2 Handler_delete 0
  513. user3 Handler_delete 0
  514. # ================================================================================
  515. # CLEANUP
  516. # ================================================================================
  517. DROP TABLE test.t1;
  518. DROP TABLE test.t2;
  519. DROP TABLE test.t3;
  520. DROP TABLE test.status_results;
  521. DROP USER 'user1'@localhost;
  522. DROP USER 'user2'@localhost;
  523. DROP USER 'user3'@localhost;
  524. #