Changeset: ad82887fd063 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ad82887fd063
Modified Files:
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_runtime.c
        monetdb5/mal/mal_runtime.h
Branch: Jan2014
Log Message:

Clean up query queue at end of session


diffs (66 lines):

diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -57,6 +57,7 @@
 #include "mal_parser.h"
 #include "mal_namespace.h"
 #include "mal_private.h"
+#include "mal_runtime.h"
 #include <mapi.h> /* for PROMPT1 */
 
 
@@ -186,6 +187,7 @@ MCexitClient(Client c)
 #ifdef MAL_CLIENT_DEBUG
        printf("# Exit client %d\n", c->idx);
 #endif
+    finishSessionProfiler(c);
        MPresetProfiler(c->fdout);
        if (c->father == NULL) { /* normal client */
                if (c->fdout && c->fdout != GDKstdout) {
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -130,6 +130,32 @@ runtimeProfileFinish(Client cntxt, MalBl
 }
 
 void
+finishSessionProfiler(Client cntxt)
+{
+    int i,j;
+
+    (void) cntxt;
+
+    MT_lock_set(&mal_delayLock, "sysmon");
+    for( i=j=0; i< qtop; i++)
+    if ( QRYqueue[i].cntxt != cntxt)
+        QRYqueue[j++] = QRYqueue[i];
+    else  {
+         //reset entry
+                if (QRYqueue[i].query)
+                GDKfree(QRYqueue[i].query);
+                QRYqueue[i].cntxt = 0;
+                QRYqueue[i].tag = 0;
+                QRYqueue[i].query = 0;
+                QRYqueue[i].status =0;
+                QRYqueue[i].stk =0;
+                QRYqueue[i].mb =0;
+        }
+        qtop = j;
+        MT_lock_unset(&mal_delayLock, "sysmon");
+}
+
+void
 runtimeProfileBegin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, int stkpc, 
RuntimeProfile prof, int start)
 {
        if ( mb->profiler == NULL)
diff --git a/monetdb5/mal/mal_runtime.h b/monetdb5/mal/mal_runtime.h
--- a/monetdb5/mal/mal_runtime.h
+++ b/monetdb5/mal/mal_runtime.h
@@ -50,6 +50,7 @@ mal_export void runtimeProfileInit(Clien
 mal_export void runtimeProfileFinish(Client cntxt, MalBlkPtr mb);
 mal_export void runtimeProfileBegin(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
int stkpc, RuntimeProfile prof, int start);
 mal_export void runtimeProfileExit(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci, RuntimeProfile prof);
+mal_export void finishSessionProfiler(Client cntxt);
 mal_export lng getVolume(MalStkPtr stk, InstrPtr pci, int rd);
 mal_export void displayVolume(Client cntxt, lng vol);
 mal_export void updateFootPrint(MalBlkPtr mb, MalStkPtr stk, int varid);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to