|
|||||||||||
|
bk commit into 5.1 tree (anozdrin:1.2600) BUG#31111
From: Alexander Nozdrin <alik(at)mysql.com>
Date: Tue Oct 16 2007 - 06:22:44 EDT
ChangeSet@1.2600, 2007-10-16 14:22:38+04:00, anozdrin@station. +4 -0 Patch for BUG#31111: --read-only crashes MySQL (events fail to load). There actually were several problems here:
The patch is to fix all these problems:
sql/event_db_repository.cc@1.37, 2007-10-16 14:22:36+04:00, anozdrin@station. +6 -0 Close tables if something went wrong in simple_open_n_lock_tables(). sql/events.cc@1.85, 2007-10-16 14:22:36+04:00, anozdrin@station. +1 -1 Use READ-lock for loading events. sql/mysqld.cc@1.670, 2007-10-16 14:22:36+04:00, anozdrin@station. +3 -0 If something went wrong with event loading, we the replication module should be deinitialized prior to general exit procedure. sql/sql_class.cc@1.351, 2007-10-16 14:22:36+04:00, anozdrin@station. +1 -0 Initialize Security_context::master_acces. diff -Nrup a/sql/event_db_repository.cc b/sql/event_db_repository.cc --- a/sql/event_db_repository.cc 2007-08-25 12:43:10 +04:00 +++ b/sql/event_db_repository.cc 2007-10-16 14:22:36 +04:00@@ -525,6 +525,9 @@ Event_db_repository::fill_schema_events(
+ Note, if the table can not be open, this operation will clean out all + table-related objects from the memory. + @param[in] thd Thread context @param[in] lock_type How to lock the table @param[out] table We will store the open table here @@ -544,7 +547,10 @@ Event_db_repository::open_event_table(TH tables.init_one_table("mysql", "event", lock_type);
if (simple_open_n_lock_tables(thd, &tables))
+ {
DBUG_RETURN(TRUE);
*table= tables.table;
--- a/sql/events.cc 2007-08-15 19:08:40 +04:00 +++ b/sql/events.cc 2007-10-16 14:22:36 +04:00@@ -1128,7 +1128,7 @@ Events::load_events_from_db(THD *thd) DBUG_ENTER("Events::load_events_from_db"); DBUG_PRINT("enter", ("thd: 0x%lx", (long) thd));
if (Events::init(opt_noacl))
unireg_abort(1);
sql_print_information(ER(ER_STARTUP),my_progname,server_version,
((unix_sock == INVALID_SOCKET) ? (char*) ""
diff -Nrup a/sql/sql_class.cc b/sql/sql_class.cc
--- a/sql/sql_class.cc 2007-10-15 16:42:39 +04:00
+++ b/sql/sql_class.cc 2007-10-16 14:22:36 +04:00
@@ -2404,6 +2404,7 @@ void Security_context::init()
host= user= priv_user= ip= 0;
-- MySQL Code Commits Mailing List For list archives: http://lists.mysql.com/commits To unsubscribe: http://lists.mysql.com/commits?unsub=lists@pantek.comReceived on Tue Oct 16 06:31:49 2007 This archive was generated by hypermail 2.1.8 : Thu Jul 03 2008 - 09:57:50 EDT |
||||||||||
|
|||||||||||