142 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			142 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								# Can't test with embedded server that doesn't support grants
							 | 
						||
| 
								 | 
							
								--source include/not_embedded.inc
							 | 
						||
| 
								 | 
							
								--source include/big_test.inc
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE DATABASE IF NOT EXISTS events_test;
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# DROP DATABASE test start (bug #16406)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								CREATE DATABASE events_conn1_test2;
							 | 
						||
| 
								 | 
							
								# BUG#20676: MySQL in debug mode has a limit of 100 waiters
							 | 
						||
| 
								 | 
							
								# (in mysys/thr_lock.c), so use three different tables to insert into.
							 | 
						||
| 
								 | 
							
								CREATE TABLE events_test.fill_it1(test_name varchar(20), occur datetime);
							 | 
						||
| 
								 | 
							
								CREATE TABLE events_test.fill_it2(test_name varchar(20), occur datetime);
							 | 
						||
| 
								 | 
							
								CREATE TABLE events_test.fill_it3(test_name varchar(20), occur datetime);
							 | 
						||
| 
								 | 
							
								CREATE USER event_user2@localhost;
							 | 
						||
| 
								 | 
							
								CREATE DATABASE events_conn2_db;
							 | 
						||
| 
								 | 
							
								GRANT ALL ON *.* TO event_user2@localhost;
							 | 
						||
| 
								 | 
							
								CREATE USER event_user3@localhost;
							 | 
						||
| 
								 | 
							
								CREATE DATABASE events_conn3_db;
							 | 
						||
| 
								 | 
							
								GRANT ALL ON *.* TO event_user3@localhost;
							 | 
						||
| 
								 | 
							
								connect (conn2,localhost,event_user2,,events_conn2_db);
							 | 
						||
| 
								 | 
							
								--echo "In the second connection we create some events which won't be dropped till the end"
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								let $1= 50;
							 | 
						||
| 
								 | 
							
								while ($1)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  eval CREATE EVENT conn2_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it1 VALUES("conn2_ev$1", NOW());
							 | 
						||
| 
								 | 
							
								  dec $1;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								connect (conn3,localhost,event_user3,,events_conn3_db);
							 | 
						||
| 
								 | 
							
								--echo "In the second connection we create some events which won't be dropped till the end"
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								let $1= 50;
							 | 
						||
| 
								 | 
							
								while ($1)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  eval CREATE EVENT conn3_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it1 VALUES("conn3_ev$1", NOW());
							 | 
						||
| 
								 | 
							
								  dec $1;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								USE events_conn1_test2;
							 | 
						||
| 
								 | 
							
								CREATE EVENT ev_drop1 ON SCHEDULE EVERY 10 MINUTE DISABLE DO SELECT 1;
							 | 
						||
| 
								 | 
							
								CREATE EVENT ev_drop2 ON SCHEDULE EVERY 10 MINUTE DISABLE DO SELECT 1;
							 | 
						||
| 
								 | 
							
								CREATE EVENT ev_drop3 ON SCHEDULE EVERY 10 MINUTE DISABLE DO SELECT 1;
							 | 
						||
| 
								 | 
							
								USE events_test;
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS;
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
							 | 
						||
| 
								 | 
							
								DROP DATABASE events_conn1_test2;
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								--echo "Now testing stability - dropping db -> events while they are running"
							 | 
						||
| 
								 | 
							
								CREATE DATABASE events_conn1_test2;
							 | 
						||
| 
								 | 
							
								USE events_conn1_test2;
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								let $1= 50;
							 | 
						||
| 
								 | 
							
								while ($1)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  eval CREATE EVENT conn1_round1_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it2 VALUES("conn1_round1_ev$1", NOW());
							 | 
						||
| 
								 | 
							
								  dec $1;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
							 | 
						||
| 
								 | 
							
								SET GLOBAL event_scheduler=on;
							 | 
						||
| 
								 | 
							
								--sleep 2.5
							 | 
						||
| 
								 | 
							
								DROP DATABASE events_conn1_test2;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								SET GLOBAL event_scheduler=off;
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
							 | 
						||
| 
								 | 
							
								CREATE DATABASE events_conn1_test3;
							 | 
						||
| 
								 | 
							
								USE events_conn1_test3;
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								let $1= 50;
							 | 
						||
| 
								 | 
							
								while ($1)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  eval CREATE EVENT conn1_round2_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it2 VALUES("conn1_round2_ev$1", NOW());
							 | 
						||
| 
								 | 
							
								  dec $1;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								SET GLOBAL event_scheduler=on;
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test3';
							 | 
						||
| 
								 | 
							
								CREATE DATABASE events_conn1_test4;
							 | 
						||
| 
								 | 
							
								USE events_conn1_test4;
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								let $1= 50;
							 | 
						||
| 
								 | 
							
								while ($1)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  eval CREATE EVENT conn1_round3_ev$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it3 VALUES("conn1_round3_ev$1", NOW());
							 | 
						||
| 
								 | 
							
								  dec $1;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CREATE DATABASE events_conn1_test2;
							 | 
						||
| 
								 | 
							
								USE events_conn1_test2;
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								let $1= 50;
							 | 
						||
| 
								 | 
							
								while ($1)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  eval CREATE EVENT ev_round4_drop$1 ON SCHEDULE EVERY 1 SECOND DO INSERT INTO events_test.fill_it3 VALUES("conn1_round4_ev$1", NOW());
							 | 
						||
| 
								 | 
							
								  dec $1;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								SELECT COUNT(*) FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA='events_conn1_test2';
							 | 
						||
| 
								 | 
							
								--sleep 2.5
							 | 
						||
| 
								 | 
							
								connection conn2;
							 | 
						||
| 
								 | 
							
								--send
							 | 
						||
| 
								 | 
							
								DROP DATABASE events_conn2_db;
							 | 
						||
| 
								 | 
							
								connection conn3;
							 | 
						||
| 
								 | 
							
								--send
							 | 
						||
| 
								 | 
							
								DROP DATABASE events_conn3_db;
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								# --send
							 | 
						||
| 
								 | 
							
								DROP DATABASE events_conn1_test2;
							 | 
						||
| 
								 | 
							
								DROP DATABASE events_conn1_test3;
							 | 
						||
| 
								 | 
							
								SET GLOBAL event_scheduler=off;
							 | 
						||
| 
								 | 
							
								DROP DATABASE events_conn1_test4;
							 | 
						||
| 
								 | 
							
								SET GLOBAL event_scheduler=on;
							 | 
						||
| 
								 | 
							
								connection conn2;
							 | 
						||
| 
								 | 
							
								reap;
							 | 
						||
| 
								 | 
							
								disconnect conn2;
							 | 
						||
| 
								 | 
							
								connection conn3;
							 | 
						||
| 
								 | 
							
								reap;
							 | 
						||
| 
								 | 
							
								disconnect conn3;
							 | 
						||
| 
								 | 
							
								connection default;
							 | 
						||
| 
								 | 
							
								USE events_test;
							 | 
						||
| 
								 | 
							
								DROP TABLE fill_it1;
							 | 
						||
| 
								 | 
							
								DROP TABLE fill_it2;
							 | 
						||
| 
								 | 
							
								DROP TABLE fill_it3;
							 | 
						||
| 
								 | 
							
								--disable_query_log
							 | 
						||
| 
								 | 
							
								DROP USER event_user2@localhost;
							 | 
						||
| 
								 | 
							
								DROP USER event_user3@localhost;
							 | 
						||
| 
								 | 
							
								--enable_query_log
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# DROP DATABASE test end (bug #16406)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DROP DATABASE events_test;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Cleanup
							 | 
						||
| 
								 | 
							
								SET GLOBAL event_scheduler=off;
							 | 
						||
| 
								 | 
							
								--source include/check_events_off.inc
							 |