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
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to