mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fixed bug#11764334 (formerly bug#57156): ALTER EVENT CHANGES
THE EVENT STATUS. Any ALTER EVENT statement on a disabled event enabled it back (unless this ALTER EVENT statement explicitly disabled the event). The problem was that during processing of an ALTER EVENT statement value of status field was overwritten unconditionally even if new value was not specified explicitly. As a consequence this field was set to default value for status which corresponds to ENABLE. The solution is to check if status field was explicitly specified in ALTER EVENT statement before assigning new value to status field.
This commit is contained in:
@ -46,9 +46,8 @@ Event_parse_data::new_instance(THD *thd)
|
||||
|
||||
Event_parse_data::Event_parse_data()
|
||||
:on_completion(Event_parse_data::ON_COMPLETION_DEFAULT),
|
||||
status(Event_parse_data::ENABLED),
|
||||
do_not_create(FALSE),
|
||||
body_changed(FALSE),
|
||||
status(Event_parse_data::ENABLED), status_changed(false),
|
||||
do_not_create(FALSE), body_changed(FALSE),
|
||||
item_starts(NULL), item_ends(NULL), item_execute_at(NULL),
|
||||
starts_null(TRUE), ends_null(TRUE), execute_at_null(TRUE),
|
||||
item_expression(NULL), expression(0)
|
||||
@ -140,6 +139,7 @@ Event_parse_data::check_if_in_the_past(THD *thd, my_time_t ltime_utc)
|
||||
else if (status == Event_parse_data::ENABLED)
|
||||
{
|
||||
status= Event_parse_data::DISABLED;
|
||||
status_changed= true;
|
||||
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
|
||||
ER_EVENT_EXEC_TIME_IN_THE_PAST,
|
||||
ER(ER_EVENT_EXEC_TIME_IN_THE_PAST));
|
||||
@ -569,7 +569,10 @@ void Event_parse_data::check_originator_id(THD *thd)
|
||||
DBUG_PRINT("info", ("Invoked object status set to SLAVESIDE_DISABLED."));
|
||||
if ((status == Event_parse_data::ENABLED) ||
|
||||
(status == Event_parse_data::DISABLED))
|
||||
status = Event_parse_data::SLAVESIDE_DISABLED;
|
||||
{
|
||||
status= Event_parse_data::SLAVESIDE_DISABLED;
|
||||
status_changed= true;
|
||||
}
|
||||
originator = thd->server_id;
|
||||
}
|
||||
else
|
||||
|
Reference in New Issue
Block a user