Loading mysql-test/r/events.result +12 −2 Original line number Diff line number Diff line Loading @@ -4,8 +4,9 @@ drop event if exists event1; Warnings: Note 1305 Event event1 does not exist create event event1 on schedule every 15 minute starts now() ends date_add(now(), interval 5 hour) DO begin end; alter event event1 rename to event2; alter event event2 disabled; alter event event1 rename to event2 enable; alter event event2 disable; alter event event2 enable; alter event event2 on completion not preserve; alter event event2 on schedule every 1 year on completion preserve rename to event3 comment "new comment" do begin select 1; end__ alter event event3 rename to event2; Loading Loading @@ -40,6 +41,15 @@ count(*) 0 drop event event3; drop table t_event3; create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5; select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event; db name body definer convert_tz(execute_at, 'UTC', 'SYSTEM') on_completion events_test e_26 set @a = 5 root@localhost 2017-01-01 00:00:00 DROP drop event e_26; create event e_26 on schedule at NULL disabled do set @a = 5; ERROR HY000: Incorrect AT value: 'NULL' create event e_26 on schedule at 'definitely not a datetime' disabled do set @a = 5; ERROR HY000: Incorrect AT value: 'definitely not a datetime' set names utf8; create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1; drop event задачка; Loading mysql-test/t/events.test +12 −2 Original line number Diff line number Diff line Loading @@ -2,8 +2,9 @@ create database if not exists events_test; use events_test; drop event if exists event1; create event event1 on schedule every 15 minute starts now() ends date_add(now(), interval 5 hour) DO begin end; alter event event1 rename to event2; alter event event2 disabled; alter event event1 rename to event2 enable; alter event event2 disable; alter event event2 enable; alter event event2 on completion not preserve; delimiter __; alter event event2 on schedule every 1 year on completion preserve rename to event3 comment "new comment" do begin select 1; end__ Loading Loading @@ -32,6 +33,15 @@ select count(*) from t_event3; drop event event3; drop table t_event3; create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5; select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event; drop event e_26; --error 1503 create event e_26 on schedule at NULL disabled do set @a = 5; --error 1503 create event e_26 on schedule at 'definitely not a datetime' disabled do set @a = 5; set names utf8; create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1; drop event задачка; Loading sql/event_timed.cc +15 −7 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ event_timed::init_body(THD *thd) 0 - OK EVEX_PARSE_ERROR - fix_fields failed EVEX_BAD_PARAMS - datetime is in the past ER_WRONG_VALUE - wrong value for execute at */ int Loading @@ -148,19 +149,19 @@ event_timed::init_execute_at(THD *thd, Item *expr) if (expr->fix_fields(thd, &expr)) DBUG_RETURN(EVEX_PARSE_ERROR); if (expr->val_int() == MYSQL_TIMESTAMP_ERROR) DBUG_RETURN(EVEX_BAD_PARAMS); // let's check whether time is in the past thd->variables.time_zone->gmt_sec_to_TIME(&time_tmp, (my_time_t) thd->query_start()); if (expr->val_int() < TIME_to_ulonglong_datetime(&time_tmp)) DBUG_RETURN(EVEX_BAD_PARAMS); if ((not_used= expr->get_date(<ime, TIME_NO_ZERO_DATE))) DBUG_RETURN(ER_WRONG_VALUE); if (TIME_to_ulonglong_datetime(<ime) < TIME_to_ulonglong_datetime(&time_tmp)) DBUG_RETURN(EVEX_BAD_PARAMS); /* This may result in a 1970-01-01 date if ltime is > 2037-xx-xx CONVERT_TZ has similar problem Loading Loading @@ -292,8 +293,7 @@ int event_timed::init_starts(THD *thd, Item *new_starts) { my_bool not_used; TIME ltime; my_time_t my_time_tmp; TIME ltime, time_tmp; DBUG_ENTER("event_timed::init_starts"); Loading @@ -306,6 +306,14 @@ event_timed::init_starts(THD *thd, Item *new_starts) if ((not_used= new_starts->get_date(<ime, TIME_NO_ZERO_DATE))) DBUG_RETURN(EVEX_BAD_PARAMS); // let's check whether time is in the past thd->variables.time_zone->gmt_sec_to_TIME(&time_tmp, (my_time_t) thd->query_start()); if (TIME_to_ulonglong_datetime(<ime) < TIME_to_ulonglong_datetime(&time_tmp)) DBUG_RETURN(EVEX_BAD_PARAMS); /* This may result in a 1970-01-01 date if ltime is > 2037-xx-xx CONVERT_TZ has similar problem Loading sql/lex.h +0 −2 Original line number Diff line number Diff line Loading @@ -168,7 +168,6 @@ static SYMBOL symbols[] = { { "DETERMINISTIC", SYM(DETERMINISTIC_SYM)}, { "DIRECTORY", SYM(DIRECTORY_SYM)}, { "DISABLE", SYM(DISABLE_SYM)}, { "DISABLED", SYM(DISABLED_SYM)}, { "DISCARD", SYM(DISCARD)}, { "DISK", SYM(DISK_SYM)}, { "DISTINCT", SYM(DISTINCT)}, Loading @@ -185,7 +184,6 @@ static SYMBOL symbols[] = { { "ELSE", SYM(ELSE)}, { "ELSEIF", SYM(ELSEIF_SYM)}, { "ENABLE", SYM(ENABLE_SYM)}, { "ENABLED", SYM(ENABLED_SYM)}, { "ENCLOSED", SYM(ENCLOSED)}, { "END", SYM(END)}, { "ENDS", SYM(ENDS_SYM)}, Loading sql/share/errmsg.txt +1 −1 Original line number Diff line number Diff line Loading @@ -5793,7 +5793,7 @@ ER_EVENT_DATA_TOO_LONG eng "Data for column '%s' too long" ER_DROP_INDEX_FK eng "Cannot drop index '%-.64s': needed in a foreign key constraint" ger "Kann Index '%-.64s' nicht lschen: wird fr einen einen Fremdschlssel bentigt" ger "Kann Index '%-.64s' nicht lschen: wird fr einen Fremdschlssel bentigt" ER_CANT_WRITE_LOCK_LOG_TABLE eng "You can't write-lock a log table. Only read access is possible." ER_CANT_READ_LOCK_LOG_TABLE Loading Loading
mysql-test/r/events.result +12 −2 Original line number Diff line number Diff line Loading @@ -4,8 +4,9 @@ drop event if exists event1; Warnings: Note 1305 Event event1 does not exist create event event1 on schedule every 15 minute starts now() ends date_add(now(), interval 5 hour) DO begin end; alter event event1 rename to event2; alter event event2 disabled; alter event event1 rename to event2 enable; alter event event2 disable; alter event event2 enable; alter event event2 on completion not preserve; alter event event2 on schedule every 1 year on completion preserve rename to event3 comment "new comment" do begin select 1; end__ alter event event3 rename to event2; Loading Loading @@ -40,6 +41,15 @@ count(*) 0 drop event event3; drop table t_event3; create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5; select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event; db name body definer convert_tz(execute_at, 'UTC', 'SYSTEM') on_completion events_test e_26 set @a = 5 root@localhost 2017-01-01 00:00:00 DROP drop event e_26; create event e_26 on schedule at NULL disabled do set @a = 5; ERROR HY000: Incorrect AT value: 'NULL' create event e_26 on schedule at 'definitely not a datetime' disabled do set @a = 5; ERROR HY000: Incorrect AT value: 'definitely not a datetime' set names utf8; create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1; drop event задачка; Loading
mysql-test/t/events.test +12 −2 Original line number Diff line number Diff line Loading @@ -2,8 +2,9 @@ create database if not exists events_test; use events_test; drop event if exists event1; create event event1 on schedule every 15 minute starts now() ends date_add(now(), interval 5 hour) DO begin end; alter event event1 rename to event2; alter event event2 disabled; alter event event1 rename to event2 enable; alter event event2 disable; alter event event2 enable; alter event event2 on completion not preserve; delimiter __; alter event event2 on schedule every 1 year on completion preserve rename to event3 comment "new comment" do begin select 1; end__ Loading Loading @@ -32,6 +33,15 @@ select count(*) from t_event3; drop event event3; drop table t_event3; create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5; select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event; drop event e_26; --error 1503 create event e_26 on schedule at NULL disabled do set @a = 5; --error 1503 create event e_26 on schedule at 'definitely not a datetime' disabled do set @a = 5; set names utf8; create event задачка on schedule every 123 minute starts now() ends now() + interval 1 month do select 1; drop event задачка; Loading
sql/event_timed.cc +15 −7 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ event_timed::init_body(THD *thd) 0 - OK EVEX_PARSE_ERROR - fix_fields failed EVEX_BAD_PARAMS - datetime is in the past ER_WRONG_VALUE - wrong value for execute at */ int Loading @@ -148,19 +149,19 @@ event_timed::init_execute_at(THD *thd, Item *expr) if (expr->fix_fields(thd, &expr)) DBUG_RETURN(EVEX_PARSE_ERROR); if (expr->val_int() == MYSQL_TIMESTAMP_ERROR) DBUG_RETURN(EVEX_BAD_PARAMS); // let's check whether time is in the past thd->variables.time_zone->gmt_sec_to_TIME(&time_tmp, (my_time_t) thd->query_start()); if (expr->val_int() < TIME_to_ulonglong_datetime(&time_tmp)) DBUG_RETURN(EVEX_BAD_PARAMS); if ((not_used= expr->get_date(<ime, TIME_NO_ZERO_DATE))) DBUG_RETURN(ER_WRONG_VALUE); if (TIME_to_ulonglong_datetime(<ime) < TIME_to_ulonglong_datetime(&time_tmp)) DBUG_RETURN(EVEX_BAD_PARAMS); /* This may result in a 1970-01-01 date if ltime is > 2037-xx-xx CONVERT_TZ has similar problem Loading Loading @@ -292,8 +293,7 @@ int event_timed::init_starts(THD *thd, Item *new_starts) { my_bool not_used; TIME ltime; my_time_t my_time_tmp; TIME ltime, time_tmp; DBUG_ENTER("event_timed::init_starts"); Loading @@ -306,6 +306,14 @@ event_timed::init_starts(THD *thd, Item *new_starts) if ((not_used= new_starts->get_date(<ime, TIME_NO_ZERO_DATE))) DBUG_RETURN(EVEX_BAD_PARAMS); // let's check whether time is in the past thd->variables.time_zone->gmt_sec_to_TIME(&time_tmp, (my_time_t) thd->query_start()); if (TIME_to_ulonglong_datetime(<ime) < TIME_to_ulonglong_datetime(&time_tmp)) DBUG_RETURN(EVEX_BAD_PARAMS); /* This may result in a 1970-01-01 date if ltime is > 2037-xx-xx CONVERT_TZ has similar problem Loading
sql/lex.h +0 −2 Original line number Diff line number Diff line Loading @@ -168,7 +168,6 @@ static SYMBOL symbols[] = { { "DETERMINISTIC", SYM(DETERMINISTIC_SYM)}, { "DIRECTORY", SYM(DIRECTORY_SYM)}, { "DISABLE", SYM(DISABLE_SYM)}, { "DISABLED", SYM(DISABLED_SYM)}, { "DISCARD", SYM(DISCARD)}, { "DISK", SYM(DISK_SYM)}, { "DISTINCT", SYM(DISTINCT)}, Loading @@ -185,7 +184,6 @@ static SYMBOL symbols[] = { { "ELSE", SYM(ELSE)}, { "ELSEIF", SYM(ELSEIF_SYM)}, { "ENABLE", SYM(ENABLE_SYM)}, { "ENABLED", SYM(ENABLED_SYM)}, { "ENCLOSED", SYM(ENCLOSED)}, { "END", SYM(END)}, { "ENDS", SYM(ENDS_SYM)}, Loading
sql/share/errmsg.txt +1 −1 Original line number Diff line number Diff line Loading @@ -5793,7 +5793,7 @@ ER_EVENT_DATA_TOO_LONG eng "Data for column '%s' too long" ER_DROP_INDEX_FK eng "Cannot drop index '%-.64s': needed in a foreign key constraint" ger "Kann Index '%-.64s' nicht lschen: wird fr einen einen Fremdschlssel bentigt" ger "Kann Index '%-.64s' nicht lschen: wird fr einen Fremdschlssel bentigt" ER_CANT_WRITE_LOCK_LOG_TABLE eng "You can't write-lock a log table. Only read access is possible." ER_CANT_READ_LOCK_LOG_TABLE Loading