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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list