Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /www/server/mysql/mysql-test/t/ |
Upload File : |
# Can't test with embedded server that doesn't support grants -- source include/not_embedded.inc call mtr.add_suppression("Column count of mysql.event is wrong. Expected .*, found .*\. The table is probably corrupted"); # # 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 SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; 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 SET sql_mode = default; 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 --echo # --echo # Test for bug#11748899 -- EVENT SET TO DISABLED AND ON COMPLETION --echo # NOT PRESERVE IS DELETED AT SERVER --echo # SELECT @@event_scheduler; USE test; --disable_warnings DROP EVENT IF EXISTS e1; --enable_warnings CREATE EVENT e1 ON SCHEDULE EVERY 1 SECOND DISABLE DO SELECT 1; --replace_column 6 # 9 # 10 # SHOW EVENTS; --echo "Now we restart the server" --source include/restart_mysqld.inc USE test; SELECT @@event_scheduler; --replace_column 6 # 9 # 10 # SHOW EVENTS; DROP EVENT e1; --echo # end test for bug#11748899