summaryrefslogtreecommitdiff
path: root/sql/sql_parse.cc
diff options
context:
space:
mode:
authorunknown <monty@donna.mysql.com>2000-11-28 04:47:47 +0200
committerunknown <monty@donna.mysql.com>2000-11-28 04:47:47 +0200
commit746f0b3b762f2a9d31347dfddf4b07a1621fc15b (patch)
treee3d40dd7c6a7e86bd2388da19d59d5a372bf7bb8 /sql/sql_parse.cc
parent2700d28319bf29ee3957a357eaa102bcc72e1ac4 (diff)
downloadmariadb-git-746f0b3b762f2a9d31347dfddf4b07a1621fc15b.tar.gz
New thr_alarm struct for better integration with OS2
Run bootstrap in separate thread Fix bug in FLUSH TABLES table_name Docs/manual.texi: Updated ChangeLog client/mysql.cc: Added info about compressed protocol include/getopt.h: Fix for OS2 include/global.h: Fix for OS2 include/my_sys.h: Fix for OS2 include/mysql_com.h: Fix for OS2 include/thr_alarm.h: Cleanup up alarm struct for OS2 port isam/isamchk.c: Fix for OS2 libmysql/libmysql.c: cleanup libmysql/net.c: Use new thr_alarm libmysql/violite.c: Fix for OS2 myisam/ChangeLog: Changes myisam/mi_create.c: Use less stack myisam/myisamchk.c: Fix for OS2 mysys/default.c: Fix for OS2 mysys/getopt.c: Fix for OS2 mysys/mf_format.c: Safety mysys/mf_path.c: Fix for OS2 mysys/my_create.c: Fix for OS2 mysys/my_lock.c: Fix for OS2 mysys/my_open.c: Fix for OS2 mysys/thr_alarm.c: Use new thr_alarm struct readline/input.c: Fix for OS2 readline/rltty.c: Fix for OS2 sql/ha_myisam.cc: Remove unnecessary fn_format sql/my_lock.c: Use new thr_alarm sql/mysql_priv.h: Changed bootstrap to run in separate thread to avoid problem with small stack sql/mysqld.cc: Changed bootstrap to run in separate thread to avoid problem with small stack sql/net_serv.cc: Use new thr_alarm sql/sql_base.cc: Fix problem with FLUSH TABLE table_name sql/sql_class.cc: Fix for new bootstrap sql/sql_class.h: cleanup sql/sql_delete.cc: cleanup sql/sql_load.cc: Fix for OS2 sql/sql_parse.cc: Changed bootstrap to run in separate thread to avoid problem with small stack sql/sql_select.cc: Reset used structure elements sql/sql_table.cc: For OS2 sql/violite.c: For OS2
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r--sql/sql_parse.cc39
1 files changed, 27 insertions, 12 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 195a7a4f525..5eba2ab880b 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -428,19 +428,26 @@ end_thread:
return(0); /* purecov: deadcode */
}
+/*
+ Execute commands from bootstrap_file.
+ Used when creating the initial grant tables
+*/
-int handle_bootstrap(THD *thd,FILE *file)
+pthread_handler_decl(handle_bootstrap,arg)
{
+ THD *thd=(THD*) arg;
+ FILE *file=bootstrap_file;
+ char *buff;
DBUG_ENTER("handle_bootstrap");
+
+ pthread_detach_this_thread();
thd->thread_stack= (char*) &thd;
- if (init_thr_lock() ||
- my_pthread_setspecific_ptr(THR_THD, thd) ||
- my_pthread_setspecific_ptr(THR_MALLOC, &thd->mem_root) ||
- my_pthread_setspecific_ptr(THR_NET, &thd->net))
+ if (my_thread_init() || thd->store_globals())
{
close_connection(&thd->net,ER_OUT_OF_RESOURCES);
- DBUG_RETURN(-1);
+ thd->fatal_error=1;
+ goto end;
}
thd->mysys_var=my_thread_var;
thd->dbug_thread_id=my_thread_id();
@@ -455,8 +462,9 @@ int handle_bootstrap(THD *thd,FILE *file)
thd->proc_info=0;
thd->version=refresh_version;
+ thd->priv_user=thd->user="boot";
- char *buff= (char*) thd->net.buff;
+ buff= (char*) thd->net.buff;
init_sql_alloc(&thd->mem_root,8192,8192);
while (fgets(buff, thd->net.max_packet, file))
{
@@ -470,13 +478,20 @@ int handle_bootstrap(THD *thd,FILE *file)
mysql_parse(thd,thd->query,length);
close_thread_tables(thd); // Free tables
if (thd->fatal_error)
- {
- DBUG_RETURN(-1);
- }
+ break;
free_root(&thd->mem_root,MYF(MY_KEEP_PREALLOC));
}
- free_root(&thd->mem_root,MYF(0));
- DBUG_RETURN(0);
+ thd->priv_user=thd->user=0;
+
+ /* thd->fatal_error should be set in case something went wrong */
+end:
+ (void) pthread_mutex_lock(&LOCK_thread_count);
+ thread_count--;
+ (void) pthread_cond_broadcast(&COND_thread_count);
+ (void) pthread_mutex_unlock(&LOCK_thread_count);
+ my_thread_end();
+ pthread_exit(0);
+ DBUG_RETURN(0); // Never reached
}