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

Reply via email to