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