summaryrefslogtreecommitdiff
path: root/sql/mysqld.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/mysqld.cc')
-rw-r--r--sql/mysqld.cc26
1 files changed, 22 insertions, 4 deletions
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 316b97f5c52..78fcc2f563c 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -159,6 +159,7 @@ static bool opt_log,opt_update_log,opt_bin_log,opt_slow_log,opt_noacl,
opt_disable_networking=0, opt_bootstrap=0,opt_skip_show_db=0,
opt_ansi_mode=0,opt_myisam_log=0, opt_large_files=sizeof(my_off_t) > 4;
bool opt_sql_bin_update = 0, opt_log_slave_updates = 0;
+FILE *bootstrap_file=0;
extern MASTER_INFO glob_mi;
extern int init_master_info(MASTER_INFO* mi);
@@ -1001,7 +1002,8 @@ static void init_signals(void)
#elif defined(__EMX__)
static void sig_reload(int signo)
{
- reload_acl_and_cache(~0); // Flush everything
+ //reload_acl_and_cache(~0); // Flush everything
+ reload_acl_and_cache((THD*) 0,~0, (TABLE_LIST*) 0); // Flush everything
signal(signo, SIG_ACK);
}
@@ -1327,7 +1329,7 @@ int main(int argc, char **argv)
{
struct tm *start_tm;
start_tm=localtime(&start_time);
- strmov(time_zone=tzname[start_tm->tm_isdst == 1 ? 1 : 0]);
+ strmov(time_zone,tzname[start_tm->tm_isdst == 1 ? 1 : 0]);
}
#endif
#endif
@@ -1780,9 +1782,25 @@ static int bootstrap(FILE *file)
my_net_init(&thd->net,(Vio*) 0);
thd->max_packet_length=thd->net.max_packet;
thd->master_access= ~0;
+ thd->thread_id=thread_id++;
thread_count++;
- thd->real_id=pthread_self();
- error=handle_bootstrap(thd,file);
+
+ bootstrap_file=file;
+ if (pthread_create(&thd->real_id,&connection_attrib,handle_bootstrap,
+ (void*) thd))
+ {
+ sql_print_error("Warning: Can't create thread to handle bootstrap");
+ return -1;
+ }
+ /* Wait for thread to die */
+ (void) pthread_mutex_lock(&LOCK_thread_count);
+ while (thread_count)
+ {
+ (void) pthread_cond_wait(&COND_thread_count,&LOCK_thread_count);
+ DBUG_PRINT("quit",("One thread died (count=%u)",thread_count));
+ }
+ (void) pthread_mutex_unlock(&LOCK_thread_count);
+ error= thd->fatal_error;
net_end(&thd->net);
delete thd;
return error;