Changeset: 4a7a8181d617 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4a7a8181d617
Modified Files:
        monetdb5/mal/mal.c
        monetdb5/mal/mal_embedded.c
        monetdb5/mal/mal_namespace.c
        monetdb5/mal/mal_private.h
Branch: default
Log Message:

Reinstate mal_namespace_reset, and do it even more thoroughly.


diffs (66 lines):

diff --git a/monetdb5/mal/mal.c b/monetdb5/mal/mal.c
--- a/monetdb5/mal/mal.c
+++ b/monetdb5/mal/mal.c
@@ -146,6 +146,7 @@ mal_reset(void)
 
        memset((char *) monet_cwd, 0, sizeof(monet_cwd));
        memset((char *) monet_characteristics, 0, 
sizeof(monet_characteristics));
+       mal_namespace_reset();
        GDKreset(0);                            // terminate all other threads
 }
 
diff --git a/monetdb5/mal/mal_embedded.c b/monetdb5/mal/mal_embedded.c
--- a/monetdb5/mal/mal_embedded.c
+++ b/monetdb5/mal/mal_embedded.c
@@ -190,6 +190,7 @@ malEmbeddedReset(void)                      //remove extra 
 
        memset((char *) monet_cwd, 0, sizeof(monet_cwd));
        memset((char *) monet_characteristics, 0, 
sizeof(monet_characteristics));
+       mal_namespace_reset();
        GDKreset(0);                            // terminate all other threads
        embeddedinitialized = false;
 }
diff --git a/monetdb5/mal/mal_namespace.c b/monetdb5/mal/mal_namespace.c
--- a/monetdb5/mal/mal_namespace.c
+++ b/monetdb5/mal/mal_namespace.c
@@ -614,6 +614,27 @@ initNamespace(void)
 /* ! please keep this list sorted for easier maintenance ! */
 }
 
+void
+mal_namespace_reset(void)
+{
+       struct namespace *ns;
+
+       /* assume we are at the end of the server session */
+       MT_lock_set(&mal_namespaceLock);
+       memset(hash, 0, sizeof(hash));
+       while (namespace) {
+               ns = namespace->next;
+               if (namespace != &namespace1)
+                       GDKfree(namespace);
+               namespace = ns;
+       }
+       namespace1 = (struct namespace) {
+               .count = 0,
+       };
+       namespace = &namespace1;
+       MT_lock_unset(&mal_namespaceLock);
+}
+
 static const char *
 findName(const char *nme, size_t len, bool allocate)
 {
diff --git a/monetdb5/mal/mal_private.h b/monetdb5/mal/mal_private.h
--- a/monetdb5/mal/mal_private.h
+++ b/monetdb5/mal/mal_private.h
@@ -69,6 +69,9 @@ void mal_linker_reset(void)
 void mal_module_reset(void)
        __attribute__((__visibility__("hidden")));
 
+void mal_namespace_reset(void)
+       __attribute__((__visibility__("hidden")));
+
 void mal_resource_reset(void)
        __attribute__((__visibility__("hidden")));
 
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to