Changeset: 9a583b9ebabd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9a583b9ebabd
Modified Files:
        monetdb5/modules/mal/remote.c
        monetdb5/modules/mal/remote.h
        monetdb5/modules/mal/remote.mal
        sql/backends/monet5/sql_gencode.c
Branch: default
Log Message:

Add an extra parameter to the supervisor_register

For each plan the supervisor generates a UUID and sends it to the
remote.


diffs (98 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
@@ -1407,8 +1407,9 @@ RMTisalive(int *ret, str *conn)
 
 // This is basically a no op
 str
-RMTsupervisorRegister(int *ret, str *sup_uuid) {
+RMTsupervisorRegister(int *ret, str *sup_uuid, str *query_uuid) {
        (void)sup_uuid;
+       (void)query_uuid;
 
        *ret = 0;
        return MAL_SUCCEED;
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,7 +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);
+mal_export str RMTsupervisorRegister(int *ret, str *sup_uuid, str *query_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,7 +72,7 @@ pattern bintype():void
 address RMTbintype
 comment "print the binary type of this mserver5";
 
-command supervisor_register(sup_uuid:str):int
+command supervisor_register(sup_uuid:str, query_uuid:str):int
 address RMTsupervisorRegister
 comment "Register the supervisor uuid at a remote site";
 
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
@@ -52,6 +52,8 @@
 #include "rel_dump.h"
 #include "rel_remote.h"
 
+#include "muuid.h"
+
 int
 constantAtom(backend *sql, MalBlkPtr mb, atom *a)
 {
@@ -436,18 +438,19 @@ 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);
-               */
+               str remote_session_uuid = GDKstrdup(mal_session_uuid);
+               str query_uuid = generateUUID();
+               str local_query_uuid = GDKstrdup(query_uuid);
+               if (remote_session_uuid == NULL) {
+                       return -1;
+               }
 
                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);
@@ -455,11 +458,19 @@ static int
 
                o = newFcnCall(curBlk, remoteRef, putRef);
                o = pushArgument(curBlk, o, q);
-               o = pushStr(curBlk, o, session_uuid);
+               o = pushStr(curBlk, o, remote_session_uuid);
+               p = pushArgument(curBlk, p, getArg(o, 0));
+
+               o = newFcnCall(curBlk, remoteRef, putRef);
+               o = pushArgument(curBlk, o, q);
+               o = pushStr(curBlk, o, query_uuid);
                p = pushArgument(curBlk, p, getArg(o, 0));
 
                pushInstruction(curBlk, p);
-               GDKfree(session_uuid);
+
+               free(query_uuid);
+               GDKfree(local_query_uuid);
+               GDKfree(remote_session_uuid);
        }
 
        /* (x1, x2, ..., xn) := remote.exec(q, "mod", "fcn"); */
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to