[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