mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge pilot:mysql/mysql-5.1-rpl
into shellback.(none):/home/msvensson/mysql/mysql-5.1-new-rpl
This commit is contained in:
@ -13,7 +13,7 @@
|
||||
show global variables where Variable_name != 'timestamp';
|
||||
|
||||
# Dump all databases, there should be none
|
||||
# except mysql, test and information_schema
|
||||
# except those that was created during bootstrap
|
||||
show databases;
|
||||
|
||||
# The test database should not contain any tables
|
||||
|
15
mysql-test/include/restart_mysqld.inc
Normal file
15
mysql-test/include/restart_mysqld.inc
Normal file
@ -0,0 +1,15 @@
|
||||
|
||||
# Write file to make mysql-test-run.pl expect crash and restart
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
--exec $MYSQLADMIN --defaults-file=$MYSQLTEST_VARDIR/my.cnf shutdown
|
||||
|
||||
# Call script that will poll the server waiting for it to be gone
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
# Turn on reconnect
|
||||
--enable_reconnect
|
||||
|
||||
# Call script that will poll the server waiting for it to be back online again
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
21
mysql-test/include/wait_until_disconnected.inc
Normal file
21
mysql-test/include/wait_until_disconnected.inc
Normal file
@ -0,0 +1,21 @@
|
||||
#
|
||||
# Include this script to wait until the connection to the
|
||||
# server has been dropped
|
||||
--disable_result_log
|
||||
--disable_query_log
|
||||
let $counter= 500;
|
||||
let $mysql_errno= 9999;
|
||||
while (!$mysql_errno)
|
||||
{
|
||||
--error 0,2002,2006
|
||||
show status;
|
||||
|
||||
dec $counter;
|
||||
if (!$counter)
|
||||
{
|
||||
--die Server failed to dissapear
|
||||
}
|
||||
--sleep 0.1
|
||||
}
|
||||
--enable_query_log
|
||||
--enable_result_log
|
@ -736,3 +736,4 @@ select name from mysql.event where name = 'p' and sql_mode = @full_mode;
|
||||
name
|
||||
drop event e1;
|
||||
DROP DATABASE events_test;
|
||||
SET GLOBAL event_scheduler= 'ON';
|
||||
|
@ -1,3 +1,19 @@
|
||||
set global event_scheduler=off;
|
||||
drop database if exists events_test;
|
||||
create database events_test;
|
||||
use events_test;
|
||||
create table execution_log(name char(10));
|
||||
create event abc1 on schedule every 1 second do
|
||||
insert into execution_log value('abc1');
|
||||
create event abc2 on schedule every 1 second do
|
||||
insert into execution_log value('abc2');
|
||||
create event abc3 on schedule every 1 second do
|
||||
insert into execution_log value('abc3');
|
||||
create table event_like like mysql.event;
|
||||
insert into event_like select * from mysql.event;
|
||||
alter table mysql.event
|
||||
change column body body longtext character set utf8 collate utf8_bin;
|
||||
"Now we restart the server"
|
||||
use events_test;
|
||||
select @@event_scheduler;
|
||||
@@event_scheduler
|
||||
@ -40,3 +56,9 @@ Restore the original mysql.event table
|
||||
drop table mysql.event;
|
||||
rename table event_like to mysql.event;
|
||||
Now let's restart the server again
|
||||
use events_test;
|
||||
select @@event_scheduler;
|
||||
@@event_scheduler
|
||||
ON
|
||||
drop table execution_log;
|
||||
drop database events_test;
|
@ -1,16 +0,0 @@
|
||||
set global event_scheduler=off;
|
||||
drop database if exists events_test;
|
||||
create database events_test;
|
||||
use events_test;
|
||||
create table execution_log(name char(10));
|
||||
create event abc1 on schedule every 1 second do
|
||||
insert into execution_log value('abc1');
|
||||
create event abc2 on schedule every 1 second do
|
||||
insert into execution_log value('abc2');
|
||||
create event abc3 on schedule every 1 second do
|
||||
insert into execution_log value('abc3');
|
||||
create table event_like like mysql.event;
|
||||
insert into event_like select * from mysql.event;
|
||||
alter table mysql.event
|
||||
change column body body longtext character set utf8 collate utf8_bin;
|
||||
"Now we restart the server"
|
@ -1,6 +0,0 @@
|
||||
use events_test;
|
||||
select @@event_scheduler;
|
||||
@@event_scheduler
|
||||
ON
|
||||
drop table execution_log;
|
||||
drop database events_test;
|
@ -971,4 +971,7 @@ let $wait_condition=
|
||||
|
||||
DROP DATABASE events_test;
|
||||
|
||||
# Restore event_schedulre setting to how it was when test started
|
||||
SET GLOBAL event_scheduler= 'ON';
|
||||
|
||||
# THIS MUST BE THE LAST LINE in this file.
|
||||
|
1
mysql-test/t/events_restart-master.opt
Normal file
1
mysql-test/t/events_restart-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--event-scheduler
|
106
mysql-test/t/events_restart.test
Normal file
106
mysql-test/t/events_restart.test
Normal file
@ -0,0 +1,106 @@
|
||||
# Can't test with embedded server that doesn't support grants
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# Test that when the server is restarted, it checks mysql.event table,
|
||||
# and disables the scheduler if it's not up to date.
|
||||
#
|
||||
|
||||
# Switch off the scheduler for now.
|
||||
set global event_scheduler=off;
|
||||
|
||||
--disable_warnings
|
||||
drop database if exists events_test;
|
||||
--enable_warnings
|
||||
create database events_test;
|
||||
use events_test;
|
||||
create table execution_log(name char(10));
|
||||
|
||||
create event abc1 on schedule every 1 second do
|
||||
insert into execution_log value('abc1');
|
||||
create event abc2 on schedule every 1 second do
|
||||
insert into execution_log value('abc2');
|
||||
create event abc3 on schedule every 1 second do
|
||||
insert into execution_log value('abc3');
|
||||
#
|
||||
# There are various conditions when a server would regard mysql.event
|
||||
# table as damaged:
|
||||
# - the table has more column than specified in the compiled in value, but
|
||||
# the version of the server which created the table is the same
|
||||
# - the column count in the table is less than the compiled in value
|
||||
# - some column has an incompatible type specification (for what is an
|
||||
# incompatible type specification please refer to the comments in the source
|
||||
#
|
||||
# Unfortunately, in order to test a condition, we need to restart the
|
||||
# server. Therefore, here we test only one simple case: changing the data
|
||||
# type of the 'body' field to blob.
|
||||
#
|
||||
# First, let's do a backup to not depend on actual definition of mysql.event
|
||||
create table event_like like mysql.event;
|
||||
insert into event_like select * from mysql.event;
|
||||
# Now let's alter the table and restart the server
|
||||
alter table mysql.event
|
||||
change column body body longtext character set utf8 collate utf8_bin;
|
||||
--echo "Now we restart the server"
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
use events_test;
|
||||
# Event scheduler should be disabled: the system tables are damaged
|
||||
select @@event_scheduler;
|
||||
# Try various Event Scheduler operation and check the output.
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
show events;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
select event_name from information_schema.events;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
show create event intact_check;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
drop event no_such_event;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
create event intact_check_1 on schedule every 5 hour do select 5;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
alter event intact_check_1 on schedule every 8 hour do select 8;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
alter event intact_check_1 rename to intact_check_2;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
drop event intact_check_1;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
drop event intact_check_2;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
drop event intact_check;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
set global event_scheduler=on;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
set global event_scheduler=off;
|
||||
show variables like 'event_scheduler';
|
||||
--echo Make sure that we still can create and drop databases,
|
||||
--echo and no warnings are produced.
|
||||
drop database if exists mysqltest_database_not_exists;
|
||||
create database mysqltest_db1;
|
||||
drop database mysqltest_db1;
|
||||
--echo Restore the original mysql.event table
|
||||
drop table mysql.event;
|
||||
rename table event_like to mysql.event;
|
||||
--echo Now let's restart the server again
|
||||
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
# We need this file primarily to make sure that the scheduler is restarted
|
||||
# and enabled after we have restored mysql.event table.
|
||||
# This is the final step of the "cleanup".
|
||||
#
|
||||
# Make sure also that events are executed OK after restart, just in case.
|
||||
use events_test;
|
||||
# Make sure the scheduler was started successfully
|
||||
select @@event_scheduler;
|
||||
let $wait_condition=select count(distinct name)=3 from execution_log;
|
||||
--source include/wait_condition.inc
|
||||
drop table execution_log;
|
||||
# Will drop all events
|
||||
drop database events_test;
|
||||
|
||||
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
|
@ -1,43 +0,0 @@
|
||||
# Can't test with embedded server that doesn't support grants
|
||||
-- source include/not_embedded.inc
|
||||
#
|
||||
# Test that when the server is restarted, it checks mysql.event table,
|
||||
# and disables the scheduler if it's not up to date.
|
||||
#
|
||||
|
||||
# Switch off the scheduler for now.
|
||||
set global event_scheduler=off;
|
||||
|
||||
--disable_warnings
|
||||
drop database if exists events_test;
|
||||
--enable_warnings
|
||||
create database events_test;
|
||||
use events_test;
|
||||
create table execution_log(name char(10));
|
||||
|
||||
create event abc1 on schedule every 1 second do
|
||||
insert into execution_log value('abc1');
|
||||
create event abc2 on schedule every 1 second do
|
||||
insert into execution_log value('abc2');
|
||||
create event abc3 on schedule every 1 second do
|
||||
insert into execution_log value('abc3');
|
||||
#
|
||||
# There are various conditions when a server would regard mysql.event
|
||||
# table as damaged:
|
||||
# - the table has more column than specified in the compiled in value, but
|
||||
# the version of the server which created the table is the same
|
||||
# - the column count in the table is less than the compiled in value
|
||||
# - some column has an incompatible type specification (for what is an
|
||||
# incompatible type specification please refer to the comments in the source
|
||||
#
|
||||
# Unfortunately, in order to test a condition, we need to restart the
|
||||
# server. Therefore, here we test only one simple case: changing the data
|
||||
# type of the 'body' field to blob.
|
||||
#
|
||||
# First, let's do a backup to not depend on actual definition of mysql.event
|
||||
create table event_like like mysql.event;
|
||||
insert into event_like select * from mysql.event;
|
||||
# Now let's alter the table and restart the server
|
||||
alter table mysql.event
|
||||
change column body body longtext character set utf8 collate utf8_bin;
|
||||
--echo "Now we restart the server"
|
@ -1 +0,0 @@
|
||||
--event-scheduler=on --force-restart
|
@ -1,41 +0,0 @@
|
||||
# Can't test with embedded server that doesn't support grants
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
use events_test;
|
||||
# Event scheduler should be disabled: the system tables are damaged
|
||||
select @@event_scheduler;
|
||||
# Try various Event Scheduler operation and check the output.
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
show events;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
select event_name from information_schema.events;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
show create event intact_check;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
drop event no_such_event;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
create event intact_check_1 on schedule every 5 hour do select 5;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
alter event intact_check_1 on schedule every 8 hour do select 8;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
alter event intact_check_1 rename to intact_check_2;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
drop event intact_check_1;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
drop event intact_check_2;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
drop event intact_check;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
set global event_scheduler=on;
|
||||
--error ER_EVENTS_DB_ERROR
|
||||
set global event_scheduler=off;
|
||||
show variables like 'event_scheduler';
|
||||
--echo Make sure that we still can create and drop databases,
|
||||
--echo and no warnings are produced.
|
||||
drop database if exists mysqltest_database_not_exists;
|
||||
create database mysqltest_db1;
|
||||
drop database mysqltest_db1;
|
||||
--echo Restore the original mysql.event table
|
||||
drop table mysql.event;
|
||||
rename table event_like to mysql.event;
|
||||
--echo Now let's restart the server again
|
@ -1 +0,0 @@
|
||||
--event-scheduler=1
|
@ -1,21 +0,0 @@
|
||||
# Can't test with embedded server that doesn't support grants
|
||||
-- source include/not_embedded.inc
|
||||
#
|
||||
# We need this file primarily to make sure that the scheduler is restarted
|
||||
# and enabled after we have restored mysql.event table.
|
||||
# This is the final step of the "cleanup".
|
||||
#
|
||||
# Make sure also that events are executed OK after restart, just in case.
|
||||
use events_test;
|
||||
# Make sure the scheduler was started successfully
|
||||
select @@event_scheduler;
|
||||
let $wait_condition=select count(distinct name)=3 from execution_log;
|
||||
--source include/wait_condition.inc
|
||||
drop table execution_log;
|
||||
# Will drop all events
|
||||
drop database events_test;
|
||||
|
||||
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
|
Reference in New Issue
Block a user