Changeset: 50d53946e051 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=50d53946e051 Modified Files: gdk/gdk_utils.c monetdb5/mal/Makefile.ag monetdb5/mal/mal.c monetdb5/mal/mal_linker.c monetdb5/optimizer/opt_statistics.c monetdb5/optimizer/optimizer.c tools/embedded/embedded.c Branch: Jun2016 Log Message:
shutdown and restart diffs (156 lines): diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -1350,7 +1350,9 @@ GDKexit(int status) } GDKprepareExit(); GDKreset(status); +#ifndef HAVE_EMBEDDED MT_exit_thread(-1); +#endif } /* diff --git a/monetdb5/mal/Makefile.ag b/monetdb5/mal/Makefile.ag --- a/monetdb5/mal/Makefile.ag +++ b/monetdb5/mal/Makefile.ag @@ -9,6 +9,7 @@ INCLUDES = ../../common/options \ ../../common/utils \ HAVE_MAPI?../../clients/mapilib \ ../../gdk \ + ../optimizer \ $(READLINE_INCS) MTSAFE diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c --- a/monetdb5/mal/mal.c +++ b/monetdb5/mal/mal.c @@ -34,7 +34,7 @@ int have_hge; #include "mal_private.h" #include "mal_runtime.h" #include "mal_resource.h" - +#include "opt_statistics.h" MT_Lock mal_contextLock MT_LOCK_INITIALIZER("mal_contextLock"); MT_Lock mal_namespaceLock MT_LOCK_INITIALIZER("mal_namespaceLock"); @@ -125,6 +125,7 @@ void mserver_reset(void) MCstopClients(0); setHeartbeat(-1); stopProfiler(); + QOTstatisticsExit(); RECYCLEdrop(mal_clients); AUTHreset(); if ((err = msab_wildRetreat()) != NULL) { diff --git a/monetdb5/mal/mal_linker.c b/monetdb5/mal/mal_linker.c --- a/monetdb5/mal/mal_linker.c +++ b/monetdb5/mal/mal_linker.c @@ -60,12 +60,13 @@ getAddress(stream *out, str filename, st if( adr != NULL) return adr; /* found it */ } - if( filename && prev >= 0) { - if( strcmp(filename, filesLoaded[prev].filename)==0) { - adr = (MALfcn) dlsym(filesLoaded[prev].handle, fcnname); - if( adr != NULL) - return adr; /* found it */ - } + if( prev >= 0 && filename && + filesLoaded[prev].filename && + strcmp(filename, filesLoaded[prev].filename) == 0) { + + adr = (MALfcn) dlsym(filesLoaded[prev].handle, fcnname); + if( adr != NULL) + return adr; /* found it */ } /* * Search for occurrence of the function in any library already loaded. diff --git a/monetdb5/optimizer/opt_statistics.c b/monetdb5/optimizer/opt_statistics.c --- a/monetdb5/optimizer/opt_statistics.c +++ b/monetdb5/optimizer/opt_statistics.c @@ -45,6 +45,22 @@ QOT_create(str hnme, str tnme, int tt) return b; } +static void QOTstatisticsSave(void) { + bat names[5]; + + if( qotStat[QOTnames] == NULL) + return; + MT_lock_set(&qotlock); + names[0] = 0; + names[1] = abs(qotStat[QOTnames]->batCacheid); + names[2] = abs(qotStat[QOTcalls]->batCacheid); + names[3] = abs(qotStat[QOTactions]->batCacheid); + names[4] = abs(qotStat[QOTtimings]->batCacheid); + + TMsubcommit_list(names, 5); + MT_lock_unset(&qotlock); +} + static void QOTstatisticsInit(void){ oid o=0; int i,j; @@ -74,7 +90,7 @@ static void QOTstatisticsInit(void){ } MT_lock_unset(&qotlock); /* save them at least once */ - QOTstatisticsExit(); + QOTstatisticsSave(); } void @@ -150,19 +166,8 @@ QOTupdateStatistics(str nme, int actions void QOTstatisticsExit(void) { - bat names[5]; - - if( qotStat[QOTnames] == NULL) - return; - MT_lock_set(&qotlock); - names[0] = 0; - names[1] = abs(qotStat[QOTnames]->batCacheid); - names[2] = abs(qotStat[QOTcalls]->batCacheid); - names[3] = abs(qotStat[QOTactions]->batCacheid); - names[4] = abs(qotStat[QOTtimings]->batCacheid); - - TMsubcommit_list(names, 5); - MT_lock_unset(&qotlock); + QOTstatisticsSave(); + qotStat[QOTnames] = NULL; } static int diff --git a/monetdb5/optimizer/optimizer.c b/monetdb5/optimizer/optimizer.c --- a/monetdb5/optimizer/optimizer.c +++ b/monetdb5/optimizer/optimizer.c @@ -64,7 +64,7 @@ QOTclrdebugOptimizers(Client cntxt, MalB /* * MAL functions can be optimized explicitly using the routines below. - * Beware, the function names should be known as literalstrings, because + * Beware, the function names should be known as literal strings, because * you may not know the runtime situation. */ diff --git a/tools/embedded/embedded.c b/tools/embedded/embedded.c --- a/tools/embedded/embedded.c +++ b/tools/embedded/embedded.c @@ -278,11 +278,10 @@ str monetdb_get_columns(void* conn, cons return msg; } -// TODO: fix this, it is not working correctly void monetdb_shutdown(void) { - // kill SQL - // SQLepilogue(NULL); - // kill MAL & GDK - // mal_exit(); - // monetdb_embedded_initialized = 0; + if (monetdb_embedded_initialized) { + SQLepilogue(NULL); + mal_exit(); + monetdb_embedded_initialized = 0; + } } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list