[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-checkins
Subject:    MonetDB: default - Add a remote.supervisor_register mal function
From:       Panagiotis Koutsourakis <commits+kutsurak=monetdbsolutions.com () monetdb ! org>
Date:       2018-03-30 15:05:24
Message-ID: hg.30d60b56c717.1522422324.6315528441665844383 () monetdb-vm0 ! spin-off ! cwi ! nl
[Download RAW message or body]

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
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic