From a06ff97656cf8882cd87f23b206a92646be4fa0e Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 6 Apr 2007 01:53:15 +0400 Subject: [PATCH] A fix for events_trans.test failure on many hosts (5.1-runtime) sql/event_data_objects.cc: Disable an event if its data in the table is corrupted. sql/events.cc: A fix for events_trans failure on most of the hosts. A better error message if the event table is old (don't suggest it's corrupted, it may simply have bad data). --- sql/event_data_objects.cc | 1 + sql/events.cc | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sql/event_data_objects.cc b/sql/event_data_objects.cc index 1881a3540e4..3d2a5b277fe 100644 --- a/sql/event_data_objects.cc +++ b/sql/event_data_objects.cc @@ -1043,6 +1043,7 @@ Event_queue_element::load_from_row(THD *thd, TABLE *table) status = Event_queue_element::SLAVESIDE_DISABLED; break; case 'D' : + default: status = Event_queue_element::DISABLED; break; } diff --git a/sql/events.cc b/sql/events.cc index 10a002121a0..200f46b7f7a 100644 --- a/sql/events.cc +++ b/sql/events.cc @@ -387,7 +387,7 @@ Events::create_event(THD *thd, Event_parse_data *parse_data, if (check_db_dir_existence(parse_data->dbname.str)) { - my_error(ER_BAD_DB_ERROR, MYF(0)); + my_error(ER_BAD_DB_ERROR, MYF(0), parse_data->dbname.str); DBUG_RETURN(TRUE); } @@ -508,7 +508,7 @@ Events::update_event(THD *thd, Event_parse_data *parse_data, /* Check that the target database exists */ if (check_db_dir_existence(new_dbname->str)) { - my_error(ER_BAD_DB_ERROR, MYF(0)); + my_error(ER_BAD_DB_ERROR, MYF(0), new_dbname->str); DBUG_RETURN(TRUE); } } @@ -1116,7 +1116,7 @@ Events::load_events_from_db(THD *thd) DBUG_ENTER("Events::load_events_from_db"); DBUG_PRINT("enter", ("thd: 0x%lx", (long) thd)); - if ((ret= db_repository->open_event_table(thd, TL_WRITE, &table))) + if (db_repository->open_event_table(thd, TL_WRITE, &table)) { sql_print_error("Event Scheduler: Failed to open table mysql.event"); DBUG_RETURN(TRUE); @@ -1137,8 +1137,8 @@ Events::load_events_from_db(THD *thd) if (et->load_from_row(thd, table)) { sql_print_error("Event Scheduler: " - "Error while reading from mysql.event. " - "The table is probably corrupted"); + "Error while loading events from mysql.event. " + "The table probably contains bad data or is corrupted"); delete et; goto end; }