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.

81 lines
1.7 KiB

  1. #
  2. # #MW-329 Fix incorrect affected rows count after replay
  3. #
  4. --source include/galera_cluster.inc
  5. CREATE TABLE t1 (f1 INTEGER, f2 CHAR(20) DEFAULT 'abc') ENGINE=InnoDB;
  6. # We start with a populated table
  7. INSERT INTO t1 (f1) VALUES (1),(65535);
  8. # Clear the wsrep_local_replays counter
  9. FLUSH STATUS;
  10. SELECT VARIABLE_VALUE = 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays';
  11. #
  12. # Run concurrent INSERTs
  13. #
  14. DELIMITER |;
  15. CREATE PROCEDURE proc_insert ()
  16. BEGIN
  17. DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN END;
  18. SET SESSION wsrep_sync_wait = 0;
  19. WHILE 1 DO
  20. INSERT INTO t1 (f1) VALUES (FLOOR( 1 + RAND( ) * 65535 ));
  21. END WHILE;
  22. END|
  23. DELIMITER ;|
  24. --connect node_1b, 127.0.0.1, root, , test, $NODE_MYPORT_1
  25. --connection node_1b
  26. --let $connection_id = `SELECT CONNECTION_ID()`
  27. --send CALL proc_insert();
  28. #
  29. # Run concurrent UPDATEs. We expect that each UPDATE will report that
  30. # some rows were matched and updated
  31. #
  32. --connection node_2
  33. --let $count = 10
  34. while ($count)
  35. {
  36. --let $signature = `SELECT LEFT(MD5(RAND()), 10)`
  37. --disable_query_log
  38. --error 0,ER_LOCK_DEADLOCK
  39. --eval UPDATE t1 SET f2 = '$signature'
  40. --enable_query_log
  41. --let $row_count = `SELECT ROW_COUNT()`
  42. if (`SELECT @@error_count = 0`) {
  43. if (`SELECT $row_count = 0`) {
  44. --die ROW_COUNT() = 0
  45. }
  46. }
  47. --dec $count
  48. }
  49. #
  50. # Confirm that some transaction replays occurred
  51. #
  52. SELECT VARIABLE_VALUE > 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays';
  53. #
  54. # Terminate the stored procedure
  55. #
  56. --connection node_1
  57. --disable_query_log
  58. --eval KILL CONNECTION $connection_id
  59. --enable_query_log
  60. --connection node_1b
  61. --error 0,2013,1317
  62. --reap
  63. --connection node_1
  64. DROP PROCEDURE proc_insert;
  65. DROP TABLE t1;