Changeset: 2fd38e48c453 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/2fd38e48c453
Modified Files:
        monetdb5/mal/mal_interpreter.c
        monetdb5/mal/mal_runtime.c
Branch: default
Log Message:

Partly revert commit 7567eee12001 I can't figure out the query queue with 
recursive calls when multiple dataflow workers are present, but it's broken for 
sure


diffs (40 lines):

diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -751,8 +751,6 @@ str runMALsequence(Client cntxt, MalBlkP
                                nstk->stkdepth = nstk->stksize + stk->stkdepth;
                                nstk->calldepth = stk->calldepth + 1;
                                nstk->up = stk;
-                               /* inherit tag, because it will be used when 
doing profiling */
-                               nstk->tag = stk->tag;
                                if (nstk->calldepth > 256) {
                                        ret= createException(MAL, 
"mal.interpreter", MAL_CALLDEPTH_FAIL);
                                        GDKfree(nstk);
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -222,7 +222,9 @@ runtimeProfileInit(Client cntxt, MalBlkP
        if (stk->up) {
                i = qtail;
                while (i != qhead) {
-                       if (QRYqueue[i].tag == stk->tag) {
+                       if (QRYqueue[i].mb && QRYqueue[i].stk == stk->up) {
+                               QRYqueue[i].stk = stk;
+                               mb->tag = stk->tag = qtag++;
                                MT_lock_unset(&mal_delayLock);
                                return;
                        }
@@ -288,9 +290,11 @@ runtimeProfileFinish(Client cntxt, MalBl
        MT_lock_set(&mal_delayLock);
        i=qtail;
        while (i != qhead){
-               if (QRYqueue[i].tag == stk->tag) {
+               if (QRYqueue[i].stk == stk){
                        if (stk->up){
-                               // recursive call, just return
+                               // recursive call
+                               QRYqueue[i].stk = stk->up;
+                               mb->tag = stk->tag;
                                MT_lock_unset(&mal_delayLock);
                                return;
                        }
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to