mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Post-merge and post-review fixes for the patch for
Bug#23631 "Events: SHOW VARIABLES doesn't work when mysql.event is damaged:
This commit is contained in:
@ -34,34 +34,73 @@ CREATE TABLE table_1(a int);
|
||||
CREATE TABLE table_2(a int);
|
||||
CREATE TABLE table_3(a int);
|
||||
CREATE TABLE table_4(a int);
|
||||
CREATE TABLE T19170(s1 TIMESTAMP);
|
||||
|
||||
SET GLOBAL event_scheduler=ON;
|
||||
# We need to have 2 to make it safe with valgrind. This is probably because
|
||||
# of when we calculate the timestamp value
|
||||
CREATE EVENT two_sec ON SCHEDULE EVERY 2 SECOND DO INSERT INTO table_1 VALUES(1);
|
||||
CREATE EVENT start_n_end
|
||||
ON SCHEDULE EVERY 1 SECOND
|
||||
ENDS NOW() + INTERVAL 6 SECOND
|
||||
ON COMPLETION PRESERVE
|
||||
DO INSERT INTO table_2 VALUES(1);
|
||||
--sleep 5
|
||||
CREATE EVENT only_one_time ON SCHEDULE EVERY 2 SECOND ENDS NOW() + INTERVAL 1 SECOND DO INSERT INTO table_3 VALUES(1);
|
||||
CREATE EVENT two_time ON SCHEDULE EVERY 1 SECOND ENDS NOW() + INTERVAL 1 SECOND ON COMPLETION PRESERVE DO INSERT INTO table_4 VALUES(1);
|
||||
--sleep 5
|
||||
CREATE EVENT event_1 ON SCHEDULE EVERY 2 SECOND
|
||||
DO
|
||||
INSERT INTO table_1 VALUES (1);
|
||||
|
||||
CREATE EVENT event_2 ON SCHEDULE EVERY 1 SECOND
|
||||
ENDS NOW() + INTERVAL 6 SECOND
|
||||
ON COMPLETION PRESERVE
|
||||
DO
|
||||
INSERT INTO table_2 VALUES (1);
|
||||
|
||||
CREATE EVENT event_3 ON SCHEDULE EVERY 2 SECOND ENDS NOW() + INTERVAL 1 SECOND
|
||||
ON COMPLETION NOT PRESERVE
|
||||
DO
|
||||
INSERT INTO table_3 VALUES (1);
|
||||
|
||||
CREATE EVENT event_4 ON SCHEDULE EVERY 1 SECOND ENDS NOW() + INTERVAL 1 SECOND
|
||||
ON COMPLETION PRESERVE
|
||||
DO
|
||||
INSERT INTO table_4 VALUES (1);
|
||||
|
||||
# Let event_1 insert at least 4 records into the table
|
||||
let $wait_condition=select count(*) >= 4 from table_1;
|
||||
--source include/wait_condition.inc
|
||||
|
||||
# Let event_2 reach the end of its execution interval
|
||||
let $wait_condition=select count(*) = 0 from information_schema.events
|
||||
where event_name='event_2' and status='enabled';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
# Let event_3, which is ON COMPLETION NOT PRESERVE execute and drop itself
|
||||
let $wait_condition=select count(*) = 0 from information_schema.events
|
||||
where event_name='event_3';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
# Let event_4 reach the end of its execution interval
|
||||
let $wait_condition=select count(*) = 0 from information_schema.events
|
||||
where event_name='event_4' and status='enabled';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
# check the data
|
||||
|
||||
SELECT IF(SUM(a) >= 4, 'OK', 'ERROR') FROM table_1;
|
||||
SELECT IF(SUM(a) >= 5, 'OK', 'ERROR') FROM table_2;
|
||||
SELECT IF(SUM(a) > 0, 'OK', 'ERROR') FROM table_3;
|
||||
SELECT IF(SUM(a) > 0, 'OK', 'ERROR') FROM table_4;
|
||||
DROP EVENT two_sec;
|
||||
SELECT IF(TIME_TO_SEC(TIMEDIFF(ENDS,STARTS))=6, 'OK', 'ERROR') FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA=DATABASE() AND EVENT_NAME='start_n_end' AND ENDS IS NOT NULL;
|
||||
SELECT IF(LAST_EXECUTED-ENDS < 3, 'OK', 'ERROR') FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA=DATABASE() AND EVENT_NAME='start_n_end' AND ENDS IS NOT NULL;
|
||||
DROP EVENT IF EXISTS events_test.start_n_end;
|
||||
SELECT IF(SUM(a) >= 1, 'OK', 'ERROR') FROM table_3;
|
||||
SELECT IF(SUM(a) >= 1, 'OK', 'ERROR') FROM table_4;
|
||||
|
||||
SELECT IF(TIME_TO_SEC(TIMEDIFF(ENDS,STARTS))=6, 'OK', 'ERROR')
|
||||
FROM INFORMATION_SCHEMA.EVENTS
|
||||
WHERE EVENT_SCHEMA=DATABASE() AND EVENT_NAME='event_2';
|
||||
|
||||
SELECT IF(LAST_EXECUTED-ENDS < 3, 'OK', 'ERROR')
|
||||
FROM INFORMATION_SCHEMA.EVENTS
|
||||
WHERE EVENT_SCHEMA=DATABASE() AND EVENT_NAME='event_2';
|
||||
|
||||
--echo "Already dropped because ended. Therefore an error."
|
||||
--error ER_EVENT_DOES_NOT_EXIST
|
||||
DROP EVENT only_one_time;
|
||||
DROP EVENT event_3;
|
||||
|
||||
DROP EVENT event_1;
|
||||
--echo "Should be preserved"
|
||||
SELECT EVENT_NAME, STATUS FROM INFORMATION_SCHEMA.EVENTS ORDER BY EVENT_NAME;
|
||||
DROP EVENT two_time;
|
||||
DROP EVENT event_2;
|
||||
DROP EVENT event_4;
|
||||
DROP TABLE table_1;
|
||||
DROP TABLE table_2;
|
||||
DROP TABLE table_3;
|
||||
|
Reference in New Issue
Block a user