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.

144 lines
6.0 KiB

  1. --source include/galera_cluster.inc
  2. # Save original auto_increment_offset values.
  3. --let $node_1=node_1
  4. --let $node_2=node_2
  5. --source include/auto_increment_offset_save.inc
  6. #
  7. # Test case 1: "ONE TIME" events should be dropped on slave nodes after expiring on master (event creator node)
  8. #
  9. --connection node_1
  10. CREATE TABLE event_table(a int) engine=innodb;
  11. CREATE EVENT event_2 ON SCHEDULE EVERY 1 SECOND
  12. ENDS NOW() + INTERVAL 6 SECOND
  13. ON COMPLETION NOT PRESERVE
  14. DO
  15. INSERT INTO event_table VALUES (1);
  16. --echo # node_1 event should be there
  17. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='event_2';
  18. --connection node_2
  19. --echo # node_2 event should be there
  20. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='event_2';
  21. --connection node_1
  22. SET GLOBAL event_scheduler=ON;
  23. SHOW VARIABLES LIKE 'event_scheduler';
  24. # Let event_2 reach the end of its execution interval
  25. let $wait_condition=select count(*) = 0 from information_schema.events where event_name='event_2';
  26. --source include/wait_condition.inc
  27. --echo # node_1 event should be removed
  28. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='event_2';
  29. --connection node_2
  30. --echo # node_2 event should be removed
  31. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='event_2';
  32. --connection node_1
  33. SET GLOBAL event_scheduler=OFF;
  34. DROP TABLE event_table;
  35. #
  36. # Test case 2: After doing ALTER EVENT, slave nodes should have same definer as master
  37. #
  38. --connection node_1
  39. CREATE DATABASE IF NOT EXISTS events_test;
  40. use events_test;
  41. CREATE USER ev_test@localhost;
  42. GRANT ALL ON events_test.* to ev_test@localhost;
  43. connect (ev_con1,localhost,ev_test,,events_test);
  44. CREATE EVENT one_event ON SCHEDULE EVERY 10 SECOND DO SELECT 123;
  45. --replace_column 8 # 9 #
  46. SHOW EVENTS;
  47. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_SCHEMA, EVENT_NAME;
  48. ALTER EVENT one_event ON SCHEDULE EVERY 10 SECOND;
  49. --echo "The definer should be ev_test@localhost"
  50. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event';
  51. --connection node_2
  52. use events_test;
  53. --echo "The definer should be ev_test@localhost"
  54. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event';
  55. --connection node_1
  56. --disconnect ev_con1
  57. use test;
  58. DROP EVENT events_test.one_event;
  59. DROP USER ev_test@localhost;
  60. DROP DATABASE events_test;
  61. #
  62. # Test case 3: After SST from master node (the one where event is ENABLED) , slave event status should be 'SLAVESIDE_DISABLED'
  63. #
  64. --connection node_1
  65. use test;
  66. CREATE EVENT one_event ON SCHEDULE EVERY 10 SECOND DO SELECT 123;
  67. --echo # node_1 Event should be enabled
  68. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event';
  69. --connection node_2
  70. use test;
  71. --echo # node_2 Event should be SERVERSIDE_DISABLED
  72. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event';
  73. CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 CHAR(1)) engine=InnoDB;
  74. INSERT INTO t1 VALUES (1, 'a'), (2, 'a'), (3, 'a');
  75. SELECT * FROM t1;
  76. # Initiate normal shutdown on the node 2 and wait until shutdown has been completed:
  77. --echo Shutting down server ...
  78. --source include/shutdown_mysqld.inc
  79. --connection node_1
  80. --let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
  81. --source include/wait_condition.inc
  82. UPDATE t1 SET f2 = 'b' WHERE f1 > 1;
  83. UPDATE t1 SET f2 = 'c' WHERE f1 > 2;
  84. SELECT * FROM t1;
  85. --connection node_2
  86. # Remove the "grastate.dat" file (to initiate new SST) and restart node 2
  87. --remove_file $MYSQLTEST_VARDIR/mysqld.2/data/grastate.dat
  88. --echo # Force SST from node_1 to node_2
  89. --let $start_mysqld_params=
  90. --echo Starting server ...
  91. --source include/start_mysqld.inc
  92. --let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
  93. --source include/wait_condition.inc
  94. # Sanity check (node 2 is running now and can perform SQL operators):
  95. SELECT * FROM t1;
  96. --echo # node_2 Event should be SERVERSIDE_DISABLED
  97. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event';
  98. --connection node_1
  99. SELECT * FROM t1;
  100. --echo # node_1 Event should be ENABLED
  101. SELECT EVENT_CATALOG, EVENT_SCHEMA, EVENT_NAME, DEFINER, EVENT_BODY, EVENT_DEFINITION, EVENT_TYPE, EXECUTE_AT, INTERVAL_VALUE, INTERVAL_FIELD, STATUS,ON_COMPLETION, EVENT_COMMENT FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_NAME='one_event';
  102. DROP TABLE t1;
  103. DROP EVENT one_event;
  104. --source include/auto_increment_offset_restore.inc