Changeset: 74cd7c92a9cd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=74cd7c92a9cd
Modified Files:
        monetdb5/modules/mal/wlcr.c
        monetdb5/modules/mal/wlcr.h
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_transaction.c
        sql/server/Makefile.ag
        sql/server/sql_mvc.c
Branch: wlcr
Log Message:

Move WLCRcommit/rollback inside transaction bracket


diffs (194 lines):

diff --git a/monetdb5/modules/mal/wlcr.c b/monetdb5/modules/mal/wlcr.c
--- a/monetdb5/modules/mal/wlcr.c
+++ b/monetdb5/modules/mal/wlcr.c
@@ -124,7 +124,7 @@ WLCRloggerfile(Client cntxt)
        fd = fopen(path,"w");
        if( fd == NULL)
                throw(MAL,"wlcr.logger","Could not access %s\n",path);
-       fprintf(fd,"%d\n", wlcr_batch );
+       fprintf(fd,"%d %d\n", wlcr_start, wlcr_batch );
        fclose(fd);
        return MAL_SUCCEED;
 }
@@ -645,9 +645,9 @@ WLCRwrite(Client cntxt, str kind)
 }
 
 str
-WLCRcommit(Client cntxt)
+WLCRcommit(int clientid)
 {
-               return WLCRwrite(cntxt, "commit");
+               return WLCRwrite( &mal_clients[clientid], "commit");
 }
 
 str
@@ -656,13 +656,13 @@ WLCRcommitCmd(Client cntxt, MalBlkPtr mb
        (void) mb;
        (void) stk;
        (void) pci;
-       return WLCRcommit(cntxt);
+       return WLCRcommit(cntxt->idx);
 }
 
 str
-WLCRrollback(Client cntxt)
+WLCRrollback(int clientid)
 {
-       return WLCRwrite(cntxt, "rollback");
+       return WLCRwrite( &mal_clients[clientid], "rollback");
 }
 str
 WLCRrollbackCmd(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
@@ -670,5 +670,5 @@ WLCRrollbackCmd(Client cntxt, MalBlkPtr 
        (void) mb;
        (void) stk;
        (void) pci;
-       return WLCRrollback(cntxt);
+       return WLCRrollback(cntxt->idx);
 }
diff --git a/monetdb5/modules/mal/wlcr.h b/monetdb5/modules/mal/wlcr.h
--- a/monetdb5/modules/mal/wlcr.h
+++ b/monetdb5/modules/mal/wlcr.h
@@ -38,8 +38,8 @@ mal_export str WLCRappend(Client cntxt, 
 mal_export str WLCRdelete(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 mal_export str WLCRupdate(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
pci);
 mal_export str WLCRclear_table(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
-mal_export str WLCRcommit(Client cntxt);
+mal_export str WLCRcommit(int clientid);
 mal_export str WLCRcommitCmd(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
-mal_export str WLCRrollback(Client cntxt);
+mal_export str WLCRrollback(int clientid);
 mal_export str WLCRrollbackCmd(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr pci);
 #endif /* _WLCR_H */
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -240,10 +240,8 @@ SQLcommit(Client cntxt, MalBlkPtr mb, Ma
                throw(SQL, "sql.trans", "2DM30!COMMIT: not allowed in auto 
commit mode");
        ret = mvc_commit(sql, 0, 0);
        if (ret < 0) {
-               WLCRrollback(cntxt);
                throw(SQL, "sql.trans", "2D000!COMMIT: failed");
        }
-       WLCRcommit(cntxt);
        return msg;
 }
 
diff --git a/sql/backends/monet5/sql_scenario.c 
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -381,13 +381,10 @@ SQLautocommit(Client c, mvc *m)
 {
        if (m->session->auto_commit && m->session->active) {
                if (mvc_status(m) < 0) {
-                       WLCRrollback(c);
                        mvc_rollback(m, 0, NULL);
                } else if (mvc_commit(m, 0, NULL) < 0) {
-                       WLCRrollback(c);
                        return handle_error(m, c->fdout, 0);
-               } else
-                       WLCRcommit(c);
+               } 
        }
        return TRUE;
 }
@@ -608,13 +605,10 @@ SQLexitClient(Client c)
                assert(m->session);
                if (m->session->auto_commit && m->session->active) {
                        if (mvc_status(m) >= 0 && mvc_commit(m, 0, NULL) < 0){
-                               WLCRrollback(c);
                                (void) handle_error(m, c->fdout, 0);
-                       } else
-                               WLCRcommit(c);
+                       } 
                }
                if (m->session->active) {
-                       WLCRrollback(c);
                        mvc_rollback(m, 0, NULL);
                }
 
@@ -993,15 +987,12 @@ SQLparser(Client c)
                        m->session->ac_on_commit = m->session->auto_commit;
                        if (m->session->active) {
                                if (commit && mvc_commit(m, 0, NULL) < 0) {
-                                       WLCRrollback(c);
                                        mnstr_printf(out, "!COMMIT: commit 
failed while " "enabling auto_commit\n");
                                        msg = createException(SQL, "SQLparser", 
"Xauto_commit (commit) failed");
                                } else if (!commit && mvc_rollback(m, 0, NULL) 
< 0) {
-                                       WLCRrollback(c);
                                        mnstr_printf(out, "!COMMIT: rollback 
failed while " "disabling auto_commit\n");
                                        msg = createException(SQL, "SQLparser", 
"Xauto_commit (rollback) failed");
-                               } else
-                                       WLCRcommit(c);
+                               } 
                        }
                        in->pos = in->len;      /* HACK: should use parsed 
length */
                        if (msg != NULL)
diff --git a/sql/backends/monet5/sql_transaction.c 
b/sql/backends/monet5/sql_transaction.c
--- a/sql/backends/monet5/sql_transaction.c
+++ b/sql/backends/monet5/sql_transaction.c
@@ -85,10 +85,6 @@ SQLtransaction_commit(Client cntxt, MalB
                        throw(SQL, "sql.trans", "2DM30!COMMIT: not allowed in 
auto commit mode");
        }
        ret = mvc_commit(sql, chain, name);
-       if ( ret < 0)
-               WLCRrollback(cntxt);
-       else
-               WLCRcommit(cntxt);
        if (ret < 0 && !name)
                throw(SQL, "sql.trans", "2D000!COMMIT: failed");
        if (ret < 0 && name)
diff --git a/sql/server/Makefile.ag b/sql/server/Makefile.ag
--- a/sql/server/Makefile.ag
+++ b/sql/server/Makefile.ag
@@ -9,6 +9,7 @@
 INCLUDES = ../include ../common ../storage \
                   ../../monetdb5/mal \
                   ../../monetdb5/modules/atoms \
+                  ../../monetdb5/modules/mal \
                   ../../monetdb5/extras/rapi \
                   ../../clients/mapilib \
                   ../../common/options \
diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c
--- a/sql/server/sql_mvc.c
+++ b/sql/server/sql_mvc.c
@@ -19,6 +19,7 @@
 #include "sql_privileges.h"
 #include "rel_rel.h"
 #include "gdk_logger.h"
+#include "wlcr.h"
 
 static int mvc_debug = 0;
 
@@ -306,6 +307,7 @@ mvc_commit(mvc *m, int chain, const char
                        fprintf(stderr, "#mvc_savepoint\n");
                store_lock();
                m->session->tr = sql_trans_create(m->session->stk, tr, name);
+               WLCRcommit(m->clientid);
                store_unlock();
                m->type = Q_TRANS;
                if (m->qc) /* clean query cache, protect against concurrent 
access on the hash tables (when functions already exists, concurrent mal will
@@ -341,6 +343,7 @@ build up the hash (not copied in the tra
                if (!chain) 
                        sql_trans_end(m->session);
                m->type = Q_TRANS;
+               WLCRcommit(m->clientid);
                if (mvc_debug)
                        fprintf(stderr, "#mvc_commit %s done\n", (name) ? name 
: "");
                store_unlock();
@@ -373,6 +376,7 @@ build up the hash (not copied in the tra
                mvc_rollback(m, chain, name);
                return -1;
        }
+       WLCRcommit(m->clientid);
        sql_trans_end(m->session);
        if (chain) 
                sql_trans_begin(m->session);
@@ -432,6 +436,7 @@ mvc_rollback(mvc *m, int chain, const ch
                if (chain) 
                        sql_trans_begin(m->session);
        }
+       WLCRrollback(m->clientid);
        store_unlock();
        m->type = Q_TRANS;
        if (mvc_debug)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to