124 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
#
 | 
						|
# Tests that require transactions
 | 
						|
#
 | 
						|
-- source include/have_innodb.inc
 | 
						|
-- source include/not_embedded.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
drop database if exists events_test;
 | 
						|
drop database if exists mysqltest_no_such_database;
 | 
						|
--enable_warnings
 | 
						|
create database events_test;
 | 
						|
use events_test;
 | 
						|
 | 
						|
--echo
 | 
						|
--echo Test that Events DDL issue an implicit COMMIT
 | 
						|
--echo
 | 
						|
--echo
 | 
						|
set autocommit=off;
 | 
						|
# Sanity check
 | 
						|
select @@autocommit;
 | 
						|
create table t1 (a varchar(255)) engine=innodb;
 | 
						|
# Basic: check that successful Events DDL commits pending transaction
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: create event");
 | 
						|
create event e1 on schedule every 1 day do select 1;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
#
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: alter event");
 | 
						|
alter event e1 on schedule every 2 day do select 2;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
#
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: alter event rename");
 | 
						|
alter event e1 rename to e2;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
#
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: drop event");
 | 
						|
drop event e2;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
#
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: drop event if exists");
 | 
						|
drop event if exists e2;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
#
 | 
						|
create event e1 on schedule every 1 day do select 1;
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: create event if not exists");
 | 
						|
create event if not exists e1 on schedule every 2 day do select 2;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
--echo
 | 
						|
--echo Now check various error conditions: make sure we issue an
 | 
						|
--echo implicit commit anyway
 | 
						|
--echo
 | 
						|
#
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: create event: event already exists");
 | 
						|
--error ER_EVENT_ALREADY_EXISTS
 | 
						|
create event e1 on schedule every 2 day do select 2;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
#
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: alter event rename: rename to same name");
 | 
						|
--error ER_EVENT_SAME_NAME
 | 
						|
alter event e1 rename to e1;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
#
 | 
						|
create event e2 on schedule every 3 day do select 3;
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: alter event rename: destination exists");
 | 
						|
--error ER_EVENT_ALREADY_EXISTS
 | 
						|
alter event e2 rename to e1;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
#
 | 
						|
begin work;
 | 
						|
insert into t1 (a) values ("OK: create event: database does not exist");
 | 
						|
--error ER_BAD_DB_ERROR
 | 
						|
create event mysqltest_no_such_database.e1 on schedule every 1 day do select 1;
 | 
						|
rollback work;
 | 
						|
select * from t1;
 | 
						|
delete from t1;
 | 
						|
commit work;
 | 
						|
 | 
						|
#
 | 
						|
# Cleanup
 | 
						|
#
 | 
						|
 | 
						|
let $wait_condition=
 | 
						|
  select count(*) = 0 from information_schema.processlist
 | 
						|
  where db='events_test' and command = 'Connect' and user=current_user();
 | 
						|
--source include/wait_condition.inc
 | 
						|
 | 
						|
drop database events_test;
 | 
						|
 |