Changeset: 01da6b09632e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=01da6b09632e
Modified Files:
monetdb5/mal/mal_profiler.c
Branch: compactprofiler
Log Message:
When generating JSON profiler objects, emit commas at the beginning
diffs (183 lines):
diff --git a/monetdb5/mal/mal_profiler.c b/monetdb5/mal/mal_profiler.c
--- a/monetdb5/mal/mal_profiler.c
+++ b/monetdb5/mal/mal_profiler.c
@@ -159,33 +159,34 @@ renderProfilerEvent(Client cntxt, MalBlk
/* TODO: This could probably be optimized somehow to avoid the
* function call to mercurial_revision().
*/
- logadd("\"version\":\""VERSION" (hg id: %s)\",", mercurial_revision());
- logadd("\"user\":"OIDFMT",", cntxt->user);
- logadd("\"clk\":"LLFMT",", usec);
- logadd("\"mclk\":%"PRIu64",", microseconds);
- logadd("\"thread\":%d,", THRgettid());
- logadd("\"program\":\"%s.%s\",", getModuleId(getInstrPtr(mb, 0)),
getFunctionId(getInstrPtr(mb, 0)));
- logadd("\"pc\":%d,", mb?getPC(mb,pci):0);
- logadd("\"tag\":"OIDFMT",", stk?stk->tag:0);
+ // No comma at the beginning
+ logadd("\"version\":\""VERSION" (hg id: %s)\"", mercurial_revision());
+ logadd(",\"user\":"OIDFMT, cntxt->user);
+ logadd(",\"clk\":"LLFMT, usec);
+ logadd(",\"mclk\":%"PRIu64"", microseconds);
+ logadd(",\"thread\":%d", THRgettid());
+ logadd(",\"program\":\"%s.%s\"", getModuleId(getInstrPtr(mb, 0)),
getFunctionId(getInstrPtr(mb, 0)));
+ logadd(",\"pc\":%d", mb?getPC(mb,pci):0);
+ logadd(",\"tag\":"OIDFMT, stk?stk->tag:0);
if( pci->modname)
- logadd("\"module\":\"%s\",", pci->modname ? pci->modname : "");
+ logadd(",\"module\":\"%s\"", pci->modname ? pci->modname : "");
if( pci->fcnname)
- logadd("\"function\":\"%s\",", pci->fcnname ? pci->fcnname :
"");
+ logadd(",\"function\":\"%s\"", pci->fcnname ? pci->fcnname :
"");
if( pci->barrier)
- logadd("\"barrier\":\"%s\",", operatorName(pci->barrier));
+ logadd(",\"barrier\":\"%s\"", operatorName(pci->barrier));
if( pci->token < FCNcall || pci->token > PATcall)
- logadd("\"operator\":\"%s\",", operatorName(pci->token));
+ logadd(",\"operator\":\"%s\"", operatorName(pci->token));
if (!GDKinmemory()) {
char *uuid;
str c;
if ((c = msab_getUUID(&uuid)) == NULL) {
- logadd("\"session\":\"%s\",", uuid);
+ logadd(",\"session\":\"%s\"", uuid);
free(uuid);
} else
free(c);
}
- logadd("\"state\":\"%s\",", start?"start":"done");
- logadd("\"usec\":"LLFMT",", pci->ticks);
+ logadd(",\"state\":\"%s\"", start?"start":"done");
+ logadd(",\"usec\":"LLFMT, pci->ticks);
/* generate actual call statement */
stmt = instruction2str(mb, stk, pci, LIST_MAL_ALL);
@@ -203,7 +204,7 @@ renderProfilerEvent(Client cntxt, MalBlk
stmtq = truncated;
}
if (stmtq != NULL) {
- logadd("\"stmt\":\"%s\",", stmtq);
+ logadd(",\"stmt\":\"%s\"", stmtq);
GDKfree(stmtq);
}
}
@@ -225,7 +226,7 @@ This information can be used to determin
if(mb && pci->modname && pci->fcnname){
int j;
- logadd("\"args\":[");
+ logadd(",\"args\":[");
for(j=0; j< pci->argc; j++){
int tpe = getVarType(mb, getArg(pci,j));
str tname = 0, cv;
@@ -233,17 +234,23 @@ This information can be used to determin
BUN cnt = 0;
bat bid=0;
- logadd("{");
+ if (j == 0) {
+ // No comma at the beginning
+ logadd("{");
+ }
+ else {
+ logadd(",{");
+ }
if(j < pci->retc)
- logadd("\"ret\":%d,", j);
+ logadd("\"ret\":%d", j);
else
- logadd("\"arg\":%d,", j);
- logadd("\"var\":\"%s\",", getVarName(mb,
getArg(pci,j)));
+ logadd("\"arg\":%d", j);
+ logadd(",\"var\":\"%s\"", getVarName(mb,
getArg(pci,j)));
c =getVarName(mb, getArg(pci,j));
if(getVarSTC(mb,getArg(pci,j))){
InstrPtr stc = getInstrPtr(mb,
getVarSTC(mb,getArg(pci,j)));
if(stc &&
strcmp(getModuleId(stc),"sql") ==0 && strncmp(getFunctionId(stc),"bind",4)==0)
-
logadd("\"alias\":\"%s.%s.%s\",",
+
logadd(",\"alias\":\"%s.%s.%s\"",
getVarConstant(mb,
getArg(stc,stc->retc +1)).val.sval,
getVarConstant(mb,
getArg(stc,stc->retc +2)).val.sval,
getVarConstant(mb,
getArg(stc,stc->retc +3)).val.sval);
@@ -251,27 +258,27 @@ This information can be used to determin
if(isaBatType(tpe)){
BAT *d= BATdescriptor(bid =
stk->stk[getArg(pci,j)].val.bval);
tname = getTypeName(getBatType(tpe));
- logadd("\"type\":\"bat[:%s]\",", tname);
+ logadd(",\"type\":\"bat[:%s]\"", tname);
if(d) {
BAT *v;
cnt = BATcount(d);
if(isVIEW(d)){
-
logadd("\"view\":\"true\",");
-
logadd("\"parent\":%d,", VIEWtparent(d));
-
logadd("\"seqbase\":"BUNFMT",", d->hseqbase);
+
logadd(",\"view\":\"true\"");
+
logadd(",\"parent\":%d", VIEWtparent(d));
+
logadd(",\"seqbase\":"BUNFMT, d->hseqbase);
v=
BBPquickdesc(VIEWtparent(d), false);
-
logadd("\"persistence\":\"%s\",", (v && !v->batTransient ? "persistent" :
"transient"));
+
logadd(",\"persistence\":\"%s\"", (v && !v->batTransient ? "persistent" :
"transient"));
} else
-
logadd("\"persistence\":\"%s\",", (d->batTransient ? "transient" :
"persistent"));
- logadd("\"sorted\":%d,",
d->tsorted);
- logadd("\"revsorted\":%d,",
d->trevsorted);
- logadd("\"nonil\":%d,",
d->tnonil);
- logadd("\"nil\":%d,", d->tnil);
- logadd("\"key\":%d,", d->tkey);
+
logadd(",\"persistence\":\"%s\"", (d->batTransient ? "transient" :
"persistent"));
+ logadd(",\"sorted\":%d",
d->tsorted);
+ logadd(",\"revsorted\":%d",
d->trevsorted);
+ logadd(",\"nonil\":%d",
d->tnonil);
+ logadd(",\"nil\":%d", d->tnil);
+ logadd(",\"key\":%d", d->tkey);
cv =
VALformat(&stk->stk[getArg(pci,j)]);
c = strchr(cv, '>');
*c = 0;
- logadd("\"file\":\"%s\",", cv +
1);
+ logadd(",\"file\":\"%s\"", cv +
1);
GDKfree(cv);
total += cnt * d->twidth;
total += heapinfo(d->tvheap,
d->batCacheid);
@@ -280,14 +287,14 @@ This information can be used to determin
/* logadd("\"debug\":\"%s\",",
d->debugmessages); */
BBPunfix(d->batCacheid);
}
- logadd("\"bid\":%d,", bid);
- logadd("\"count\":"BUNFMT",", cnt);
- logadd("\"size\":" LLFMT",", total);
+ logadd(",\"bid\":%d", bid);
+ logadd(",\"count\":"BUNFMT, cnt);
+ logadd(",\"size\":" LLFMT, total);
} else{
char *truncated = NULL;
tname = getTypeName(tpe);
- logadd("\"type\":\"%s\",", tname);
- logadd("\"const\":%d,",
isVarConstant(mb, getArg(pci,j)));
+ logadd(",\"type\":\"%s\"", tname);
+ logadd(",\"const\":%d",
isVarConstant(mb, getArg(pci,j)));
cv =
VALformat(&stk->stk[getArg(pci,j)]);
stmtq = cv ? mal_quote(cv, strlen(cv))
: NULL;
if (stmtq != NULL && strlen(stmtq) >
LOGLEN/2) {
@@ -296,16 +303,16 @@ This information can be used to determin
stmtq = truncated;
}
if (stmtq)
- logadd("\"value\":\"%s\",",
stmtq);
+ logadd(",\"value\":\"%s\"",
stmtq);
GDKfree(cv);
GDKfree(stmtq);
}
- logadd("\"eol\":%d,",
getVarEolife(mb,getArg(pci,j)));
- logadd("\"used\":%d,",
isVarUsed(mb,getArg(pci,j)));
- logadd("\"fixed\":%d,",
isVarFixed(mb,getArg(pci,j)));
- logadd("\"udf\":%d",
isVarUDFtype(mb,getArg(pci,j)));
+ logadd(",\"eol\":%d",
getVarEolife(mb,getArg(pci,j)));
+ logadd(",\"used\":%d",
isVarUsed(mb,getArg(pci,j)));
+ logadd(",\"fixed\":%d",
isVarFixed(mb,getArg(pci,j)));
+ logadd(",\"udf\":%d",
isVarUDFtype(mb,getArg(pci,j)));
GDKfree(tname);
- logadd("}%s", (j< pci->argc-1?",":""));
+ logadd("}");
}
logadd("]"); // end marker for arguments
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list