mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
3cf9e6eb6b
The event scheduler was not designed to work in embedded mode. This patch disables and excludes the event scheduler when the server is compiled for embedded build. libmysqld/Makefile.am: Reduce the amount of event code in an embedded build. mysql-test/t/events_trans.test: Disable test if run in embedded mode. sql/Makefile.am: Introduce definition HAVE_EVENT_SCHEDULER and one new source file. sql/event_data_objects.cc: Refactor Event_parse_data to new file. sql/event_data_objects.h: Refactor Event_parse_data to new file. Move global definitions to new file. sql/event_queue.cc: Move all parsed items to Event_parse_data for easier modularization. sql/events.cc: Move all parsed items to Event_parse_data for easier modularization. sql/mysqld.cc: Disable the event schedular subsystem if the server is compiled in embedded mode. sql/set_var.cc: Disable the event schedular subsystem if the server is compiled in embedded mode. sql/set_var.h: Disable the event schedular subsystem if the server is compiled in embedded mode. sql/sql_db.cc: Disable the event schedular subsystem if the server is compiled in embedded mode. sql/sql_parse.cc: Disable the event schedular subsystem if the server is compiled in embedded mode. sql/sql_show.cc: Disable the event schedular subsystem if the server is compiled in embedded mode. sql/sql_test.cc: Disable the event schedular subsystem if the server is compiled in embedded mode. sql/sql_yacc.yy: Only include event-code needed for parsing to reduce impact on embedded build. Move all constants to Event_parse_data class. mysql-test/r/events_embedded.result: Add test case to make sure the 'event_scheduler' can't be activated in embedded mode. mysql-test/r/is_embedded.require: Add test case to make sure the 'event_scheduler' can't be activated in embedded mode. mysql-test/t/events_embedded.test: Add test case to make sure the 'event_scheduler' can't be activated in embedded mode. sql/event_parse_data.cc: New file. Extracted Event_parse data into a new file. sql/event_parse_data.h: New file. Extracted Event_parse data into a new file.
123 lines
2.8 KiB
Text
123 lines
2.8 KiB
Text
#
|
|
# 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;
|
|
|