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