Changeset: a591f9210b69 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a591f9210b69
Modified Files:
sql/backends/monet5/sql.mx
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_user.c
Branch: default
Log Message:
Drop the recycle cache upon rollback
diffs (109 lines):
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -1921,6 +1921,7 @@ SQLtransaction(Client cntxt, MalBlkPtr m
case DDL_ROLLBACK:
if (sql->session->auto_commit == 1)
throw(SQL, "sql.trans", "2DM30!ROLLBACK: not allowed in
auto commit mode");
+ RECYCLEdrop(0);
ret = mvc_rollback(sql, chain, name);
if (ret < 0 && name) {
snprintf(buf, BUFSIZ, "3B000!ROLLBACK TO SAVEPOINT:
(%s) failed", name);
@@ -1930,8 +1931,10 @@ SQLtransaction(Client cntxt, MalBlkPtr m
case DDL_TRANS:
if (sql->session->auto_commit == 0)
throw(SQL, "sql.trans", "25001!START TRANSACTION:
cannot start a transaction within a transaction");
- if (sql->session->active)
+ if (sql->session->active){
+ RECYCLEdrop(0);
mvc_rollback(sql, 0, NULL);
+ }
sql->session->auto_commit = 0;
sql->session->ac_on_commit = 1;
sql->session->level = chain;
@@ -1968,8 +1971,10 @@ SQLabort(Client cntxt, MalBlkPtr mb, Mal
(void) stk;
(void) pci;
- if (sql->session->active)
+ if (sql->session->active){
+ RECYCLEdrop(0);
mvc_rollback(sql, 0, NULL);
+ }
return msg;
}
@@ -1983,8 +1988,10 @@ SQLtransaction2(Client cntxt, MalBlkPtr
(void) pci;
if (sql->session->auto_commit == 0)
throw(SQL, "sql.trans", "25001!START TRANSACTION: cannot start
a transaction within a transaction");
- if (sql->session->active)
+ if (sql->session->active){
+ RECYCLEdrop(0);
mvc_rollback(sql, 0, NULL);
+ }
sql->session->auto_commit = 0;
sql->session->ac_on_commit = 1;
sql->session->level = 0;
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
@@ -975,8 +975,10 @@ SQLexitClient(Client c)
if (mvc_status(m) >= 0 && mvc_commit(m, 0, NULL) < 0)
(void) handle_error(m, c->fdout, 0);
}
- if (m->session->active)
+ if (m->session->active){
+ RECYCLEdrop(0);
mvc_rollback(m, 0, NULL);
+ }
res_tables_destroy(m->results);
m->results= NULL;
@@ -1329,6 +1331,7 @@ SQLinclude(Client cntxt, MalBlkPtr mb, M
static int SQLautocommit(Client c, mvc *m){
if (m->session->auto_commit && m->session->active) {
if (mvc_status(m) < 0) {
+ RECYCLEdrop(0);
mvc_rollback(m, 0, NULL);
} else if (mvc_commit(m, 0, NULL) < 0) {
return handle_error(m, c->fdout, 0);
@@ -1723,6 +1726,7 @@ SQLparser(Client c)
msg = createException(SQL, "SQLparser",
"Xauto_commit (commit)
failed");
} else if (!commit && mvc_rollback(m, 0, NULL)
< 0) {
+ RECYCLEdrop(0);
mnstr_printf(out, "!COMMIT: rollback
failed while "
"disabling
auto_commit\n");
msg = createException(SQL, "SQLparser",
diff --git a/sql/backends/monet5/sql_user.c b/sql/backends/monet5/sql_user.c
--- a/sql/backends/monet5/sql_user.c
+++ b/sql/backends/monet5/sql_user.c
@@ -31,6 +31,7 @@
#include "sql_mvc.h"
#include "bat5.h"
#include "mal_authorize.h"
+#include "mal_recycle.h"
#include "mcrypt.h"
#if 0
@@ -490,8 +491,10 @@ monet5_user_get_def_schema(mvc *m, oid u
}
if (!schema || !mvc_set_schema(m, schema)) {
- if (m->session->active)
+ if (m->session->active){
+ RECYCLEdrop(0);
mvc_rollback(m, 0, NULL);
+ }
return NULL;
}
/* reset the user and schema names */
@@ -499,6 +502,7 @@ monet5_user_get_def_schema(mvc *m, oid u
stack_set_string(m, "current_user", username);
stack_set_string(m, "current_role", username);
GDKfree(username);
+ RECYCLEdrop(0);
mvc_rollback(m, 0, NULL);
return schema;
}
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list