Changeset: 30d60b56c717 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=30d60b56c717 Modified Files: monetdb5/modules/mal/remote.c monetdb5/modules/mal/remote.h monetdb5/modules/mal/remote.mal monetdb5/optimizer/opt_prelude.c monetdb5/optimizer/opt_prelude.h sql/backends/monet5/sql_gencode.c Branch: default Log Message:
Add a remote.supervisor_register mal function This is essentially a noop in order to be able to correlate supervisor and worker profiler traces. We still need to add a unique identifier for the query that will be shown in both traces. diffs (116 lines): diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c --- a/monetdb5/modules/mal/remote.c +++ b/monetdb5/modules/mal/remote.c @@ -1405,4 +1405,13 @@ RMTisalive(int *ret, str *conn) return MAL_SUCCEED; } +// This is basically a no op +str +RMTsupervisorRegister(int *ret, str *sup_uuid) { + (void)sup_uuid; + + *ret = 0; + return MAL_SUCCEED; +} + #endif // HAVE_MAPI diff --git a/monetdb5/modules/mal/remote.h b/monetdb5/modules/mal/remote.h --- a/monetdb5/modules/mal/remote.h +++ b/monetdb5/modules/mal/remote.h @@ -63,6 +63,7 @@ mal_export str RMTbincopyto(Client cntxt mal_export str RMTbincopyfrom(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str RMTbintype(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); mal_export str RMTisalive(int *ret, str *conn); +mal_export str RMTsupervisorRegister(int *ret, str *sup_uuid); #endif /* HAVE_MAPI */ #endif /* _REMOTE_DEF */ diff --git a/monetdb5/modules/mal/remote.mal b/monetdb5/modules/mal/remote.mal --- a/monetdb5/modules/mal/remote.mal +++ b/monetdb5/modules/mal/remote.mal @@ -72,4 +72,8 @@ pattern bintype():void address RMTbintype comment "print the binary type of this mserver5"; +command supervisor_register(sup_uuid:str):int +address RMTsupervisorRegister +comment "Register the supervisor uuid at a remote site"; + remote.prelude(); diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c --- a/monetdb5/optimizer/opt_prelude.c +++ b/monetdb5/optimizer/opt_prelude.c @@ -282,6 +282,7 @@ str subsliceRef; str subsumRef; str subuniformRef; str sumRef; +str supervisor_registerRef; str takeRef; str thetajoinRef; str thetaselectRef; @@ -568,6 +569,7 @@ void optimizerInit(void) sumRef = putName("sum"); subsumRef = putName("subsum"); subavgRef = putName("subavg"); + supervisor_registerRef = putName("supervisor_register"); sortRef = putName("sort"); takeRef= putName("take"); transactionRef= putName("transaction"); diff --git a/monetdb5/optimizer/opt_prelude.h b/monetdb5/optimizer/opt_prelude.h --- a/monetdb5/optimizer/opt_prelude.h +++ b/monetdb5/optimizer/opt_prelude.h @@ -290,6 +290,7 @@ mal_export str subsliceRef; mal_export str subsumRef; mal_export str subuniformRef; mal_export str sumRef; +mal_export str supervisor_registerRef; mal_export str takeRef; mal_export str thetajoinRef; mal_export str thetaselectRef; diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -354,7 +354,7 @@ static int lret[i] = getArg(p, 0); } - /* q := remote.connect("uri", "user", "pass"); */ + /* q := remote.connect("uri", "user", "pass", "language"); */ p = newStmt(curBlk, remoteRef, connectRef); p = pushStr(curBlk, p, uri); p = pushStr(curBlk, p, "monetdb"); @@ -435,6 +435,33 @@ static int } pushInstruction(curBlk, p); + if (mal_session_uuid) { + str session_uuid = GDKstrdup(mal_session_uuid); + /* + p = newStmt(curBlk, remoteRef, execRef); + p = newStmt(curBlk, remoteRef, supervisor_registerRef); + p = pushStr(curBlk, p, mal_session_uuid); + */ + + p = newInstruction(curBlk, remoteRef, execRef); + p = pushArgument(curBlk, p, q); + p = pushStr(curBlk, p, remoteRef); + p = pushStr(curBlk, p, supervisor_registerRef); + getArg(p, 0) = -1; + o = newFcnCall(curBlk, remoteRef, putRef); + o = pushArgument(curBlk, o, q); + o = pushInt(curBlk, o, TYPE_int); + p = pushReturn(curBlk, p, getArg(o, 0)); + + o = newFcnCall(curBlk, remoteRef, putRef); + o = pushArgument(curBlk, o, q); + o = pushStr(curBlk, o, session_uuid); + p = pushArgument(curBlk, p, getArg(o, 0)); + + pushInstruction(curBlk, p); + GDKfree(session_uuid); + } + /* (x1, x2, ..., xn) := remote.exec(q, "mod", "fcn"); */ p = newInstruction(curBlk, remoteRef, execRef); p = pushArgument(curBlk, p, q); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list