Below is the list of changes that have just been committed into a local
5.1 repository of hf. When hf does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-11-09 11:47:51+04:00, holyfoot@stripped +2 -0
Bug #31868 mysql_server_init crash when language path is not correctly set.
When mysql_server_init() interrupts on some error (wrong errmsg file
for example) in the middle of it's execution, it doesn't call
execute_ddl_log_recovery() so LOCK_gdl mutex isn't init-ed.
In this case we shouldn't call release_ddl_log during cleanup
as it uses that mutex inside.
BitKeeper/etc/ignore@stripped, 2007-11-09 11:47:49+04:00, holyfoot@stripped +4 -0
Added libmysqld/scheduler.cc libmysqld/sql_connect.cc libmysqld/sql_tablespace.cc libmysql_r/client_settings.h to the ignore list
libmysqld/lib_sql.cc@stripped, 2007-11-09 11:47:49+04:00, holyfoot@stripped +7 -1
Bug #31868 mysql_server_init crash when language path is not correctly set.
do not release ddl log if it wasn't initialized
diff -Nrup a/BitKeeper/etc/ignore b/BitKeeper/etc/ignore
--- a/BitKeeper/etc/ignore 2007-09-06 18:51:38 +05:00
+++ b/BitKeeper/etc/ignore 2007-11-09 11:47:49 +04:00
@@ -3004,3 +3004,7 @@ win/vs71cache.txt
win/vs8cache.txt
zlib/*.ds?
zlib/*.vcproj
+libmysqld/scheduler.cc
+libmysqld/sql_connect.cc
+libmysqld/sql_tablespace.cc
+libmysql_r/client_settings.h
diff -Nrup a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
--- a/libmysqld/lib_sql.cc 2007-10-10 05:12:09 +05:00
+++ b/libmysqld/lib_sql.cc 2007-11-09 11:47:49 +04:00
@@ -38,6 +38,7 @@ C_MODE_START
#include <sql_common.h>
#include "embedded_priv.h"
+static int do_release_ddl_log= 0;
static my_bool emb_read_query_result(MYSQL *mysql);
@@ -544,6 +545,7 @@ int init_embedded_server(int argc, char
}
execute_ddl_log_recovery();
+ do_release_ddl_log= 1;
return 0;
}
@@ -551,7 +553,11 @@ void end_embedded_server()
{
my_free((char*) copy_arguments_ptr, MYF(MY_ALLOW_ZERO_PTR));
copy_arguments_ptr=0;
- release_ddl_log();
+ if (do_release_ddl_log)
+ {
+ release_ddl_log();
+ do_release_ddl_log= 0;
+ }
clean_up(0);
}