summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorholyfoot/hf@hfmain.(none) <>2007-11-20 14:35:49 +0400
committerholyfoot/hf@hfmain.(none) <>2007-11-20 14:35:49 +0400
commit7435683dbf898b2340c04f7d3c4a7415bfb25e26 (patch)
treefba8a7e0fedb621fad497f7bf24ba21553d01dbc
parent4051d1cda219bcdbd79330774559c303772a32bf (diff)
parent18f832a7084d357fb2fd4c4482129ee14f0c9e7f (diff)
downloadmariadb-git-7435683dbf898b2340c04f7d3c4a7415bfb25e26.tar.gz
Merge bk@192.168.21.1:mysql-5.1-opt
into mysql.com:/home/hf/work/31868/my51-31868
-rw-r--r--.bzrignore3
-rw-r--r--libmysqld/lib_sql.cc1
-rw-r--r--sql/mysqld.cc3
-rw-r--r--sql/sql_table.cc13
4 files changed, 15 insertions, 5 deletions
diff --git a/.bzrignore b/.bzrignore
index 7a8066fdba1..d30466a0a36 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -1137,6 +1137,7 @@ libmysqld/rpl_filter.cc
libmysqld/rpl_injector.cc
libmysqld/rpl_record.cc
libmysqld/rpl_record_old.cc
+libmysqld/scheduler.cc
libmysqld/set_var.cc
libmysqld/simple-test
libmysqld/slave.cc
@@ -1153,6 +1154,7 @@ libmysqld/sql_builtin.cc
libmysqld/sql_cache.cc
libmysqld/sql_class.cc
libmysqld/sql_command
+libmysqld/sql_connect.cc
libmysqld/sql_crypt.cc
libmysqld/sql_cursor.cc
libmysqld/sql_cursor.h
@@ -1183,6 +1185,7 @@ libmysqld/sql_show.cc
libmysqld/sql_state.c
libmysqld/sql_string.cc
libmysqld/sql_table.cc
+libmysqld/sql_tablespace.cc
libmysqld/sql_test.cc
libmysqld/sql_trigger.cc
libmysqld/sql_udf.cc
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
index 4963d7fc978..f5bfe97a38e 100644
--- a/libmysqld/lib_sql.cc
+++ b/libmysqld/lib_sql.cc
@@ -546,7 +546,6 @@ void end_embedded_server()
{
my_free((char*) copy_arguments_ptr, MYF(MY_ALLOW_ZERO_PTR));
copy_arguments_ptr=0;
- release_ddl_log();
clean_up(0);
}
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 4cf6e05751f..752826662e4 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -1164,6 +1164,8 @@ void clean_up(bool print_message)
if (cleanup_done++)
return; /* purecov: inspected */
+ release_ddl_log();
+
/*
make sure that handlers finish up
what they have that is dependent on the binlog
@@ -3995,7 +3997,6 @@ we force server id to 2, but this MySQL server will not act as a slave.");
pthread_cond_wait(&COND_thread_count,&LOCK_thread_count);
(void) pthread_mutex_unlock(&LOCK_thread_count);
- release_ddl_log();
#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY)
if (Service.IsNT() && start_mode)
Service.Stop();
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index bf4a02ae5cc..6f0864cb1cf 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -279,7 +279,7 @@ uint build_tmptable_filename(THD* thd, char *buff, size_t bufflen)
*/
-typedef struct st_global_ddl_log
+struct st_global_ddl_log
{
/*
We need to adjust buffer size to be able to handle downgrades/upgrades
@@ -297,10 +297,12 @@ typedef struct st_global_ddl_log
uint name_len;
uint io_size;
bool inited;
+ bool do_release;
bool recovery_phase;
-} GLOBAL_DDL_LOG;
+ st_global_ddl_log() : inited(false), do_release(false) {}
+};
-GLOBAL_DDL_LOG global_ddl_log;
+st_global_ddl_log global_ddl_log;
pthread_mutex_t LOCK_gdl;
@@ -460,6 +462,7 @@ static uint read_ddl_log_header()
global_ddl_log.first_used= NULL;
global_ddl_log.num_entries= 0;
VOID(pthread_mutex_init(&LOCK_gdl, MY_MUTEX_INIT_FAST));
+ global_ddl_log.do_release= true;
DBUG_RETURN(entry_no);
}
@@ -1150,6 +1153,9 @@ void release_ddl_log()
DDL_LOG_MEMORY_ENTRY *used_list= global_ddl_log.first_used;
DBUG_ENTER("release_ddl_log");
+ if (!global_ddl_log.do_release)
+ DBUG_VOID_RETURN;
+
pthread_mutex_lock(&LOCK_gdl);
while (used_list)
{
@@ -1167,6 +1173,7 @@ void release_ddl_log()
global_ddl_log.inited= 0;
pthread_mutex_unlock(&LOCK_gdl);
VOID(pthread_mutex_destroy(&LOCK_gdl));
+ global_ddl_log.do_release= false;
DBUG_VOID_RETURN;
}