Changeset: 88c85896a217 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=88c85896a217
Modified Files:
        sql/backends/monet5/sql.c
        sql/storage/bat/bat_storage.c
        sql/storage/sql_storage.h
        testing/suppres.txt
Branch: nospare
Log Message:

patched api for _prep to use sa allocators on mal calls and simple malloc/free 
on internal append/update calls


diffs (176 lines):

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
@@ -1816,14 +1816,14 @@ mvc_modify_prep(Client cntxt, MalBlkPtr 
                        sql_column *c = mvc_bind_column(m, t, cname);
                        if (c == NULL)
                                throw(SQL, "sql.modify_prep", SQLSTATE(42S02) 
"Column missing %s.%s.%s", sname, tname, cname);
-                       *cookie_out = colprep(m->session->tr, c);
+                       *cookie_out = colprep(m->session->tr, m->sa, c);
                        if (!(*cookie_out))
                                throw(SQL, "sql.modify_prep", SQLSTATE(42000) 
"Transaction conflict on %s.%s.%s", sname, tname, cname);
                } else {
                        sql_idx *i = mvc_bind_idx(m, s, cname + 1);
                        if (i == NULL)
                                throw(SQL, "sql.modify_prep", SQLSTATE(42S02) 
"Index missing %s.%s.%s", sname, tname, cname);
-                       *cookie_out = idxprep(m->session->tr, i);
+                       *cookie_out = idxprep(m->session->tr, m->sa, i);
                        if (!(*cookie_out))
                                throw(SQL, "sql.modify_prep", SQLSTATE(42000) 
"Transaction conflict on %s.%s.%s", sname, tname, cname);
                }
@@ -1927,11 +1927,13 @@ mvc_append_finish_wrap(Client cntxt, Mal
        *chain_out = chain_in;
 
        /* cleanup */
+       /*
        for( int i = 2; i < pci->argc; i++){
                ptr p = *getArgReference_ptr(stk, pci, i);
 
                _DELETE(p);
        }
+       */
        (void)cntxt;
        (void)mb;
        return MAL_SUCCEED;
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -56,10 +56,10 @@ struct prep_exec_cookie {
  * automatically freed even if errors occur
  */
 static struct prep_exec_cookie *
-make_cookie(sql_delta *delta, bool is_new)
+make_cookie(sql_allocator *sa, sql_delta *delta, bool is_new)
 {
        struct prep_exec_cookie *cookie;
-       cookie = MNEW(struct prep_exec_cookie);
+       cookie = SA_NEW(sa, struct prep_exec_cookie);
        if (!cookie)
                return NULL;
        cookie->delta = delta;
@@ -777,7 +777,7 @@ bind_col_data(sql_trans *tr, sql_column 
 }
 
 static void*
-update_col_prepare(sql_trans *tr, sql_column *c)
+update_col_prepare(sql_trans *tr, sql_allocator *sa, sql_column *c)
 {
        sql_delta *delta, *odelta = c->data;
 
@@ -787,7 +787,7 @@ update_col_prepare(sql_trans *tr, sql_co
        assert(delta && delta->ts == tr->tid);
        if ((!inTransaction(tr, c->t) && odelta != delta && isGlobal(c->t)) || 
(!isNew(c->t) && isLocalTemp(c->t)))
                trans_add(tr, &c->base, delta, &tc_gc_col, &commit_update_col, 
isLocalTemp(c->t)?NULL:&log_update_col);
-       return make_cookie(delta, isNew(c));
+       return make_cookie(sa, delta, isNew(c));
 }
 
 static int
@@ -809,7 +809,7 @@ update_col_execute(void *incoming_cookie
 static int
 update_col(sql_trans *tr, sql_column *c, void *tids, void *upd, int tpe)
 {
-       void *cookie = update_col_prepare(tr, c);
+       void *cookie = update_col_prepare(tr, NULL, c);
        if (cookie == NULL)
                return LOG_ERR;
 
@@ -848,7 +848,7 @@ bind_idx_data(sql_trans *tr, sql_idx *i)
 }
 
 static void*
-update_idx_prepare(sql_trans *tr, sql_idx *i)
+update_idx_prepare(sql_trans *tr, sql_allocator *sa, sql_idx *i)
 {
        sql_delta *delta, *odelta = i->data;
 
@@ -858,13 +858,13 @@ update_idx_prepare(sql_trans *tr, sql_id
        assert(delta && delta->ts == tr->tid);
        if ((!inTransaction(tr, i->t) && odelta != delta && isGlobal(i->t)) || 
(!isNew(i->t) && isLocalTemp(i->t)))
                trans_add(tr, &i->base, delta, &tc_gc_idx, &commit_update_idx, 
isLocalTemp(i->t)?NULL:&log_update_idx);
-       return make_cookie(delta, isNew(i));
+       return make_cookie(sa, delta, isNew(i));
 }
 
 static int
 update_idx(sql_trans *tr, sql_idx * i, void *tids, void *upd, int tpe)
 {
-       void *cookie = update_idx_prepare(tr, i);
+       void *cookie = update_idx_prepare(tr, NULL, i);
        if (cookie == NULL)
                return LOG_ERR;
 
@@ -994,7 +994,7 @@ dup_dbat( sql_trans *tr, sql_dbat *obat,
 }
 
 static void*
-append_col_prepare(sql_trans *tr, sql_column *c)
+append_col_prepare(sql_trans *tr, sql_allocator *sa, sql_column *c)
 {
        sql_delta *delta, *odelta = c->data;
 
@@ -1004,7 +1004,7 @@ append_col_prepare(sql_trans *tr, sql_co
        assert(delta && delta->ts == tr->tid);
        if ((!inTransaction(tr, c->t) && odelta != delta && isGlobal(c->t)) || 
(!isNew(c->t) && isLocalTemp(c->t)))
                trans_add(tr, &c->base, delta, &tc_gc_col, &commit_update_col, 
isLocalTemp(c->t)?NULL:&log_update_col);
-       return make_cookie(delta, false);
+       return make_cookie(sa, delta, false);
 }
 
 static int
@@ -1029,7 +1029,7 @@ append_col_execute(void *incoming_cookie
 static int
 append_col(sql_trans *tr, sql_column *c, void *i, int tpe)
 {
-       void *cookie = append_col_prepare(tr, c);
+       void *cookie = append_col_prepare(tr, NULL, c);
        if (cookie == NULL)
                return LOG_ERR;
 
@@ -1039,7 +1039,7 @@ append_col(sql_trans *tr, sql_column *c,
 }
 
 static void*
-append_idx_prepare(sql_trans *tr, sql_idx *i)
+append_idx_prepare(sql_trans *tr, sql_allocator *sa, sql_idx *i)
 {
        sql_delta *delta, *odelta = i->data;
 
@@ -1049,13 +1049,13 @@ append_idx_prepare(sql_trans *tr, sql_id
        assert(delta && delta->ts == tr->tid);
        if ((!inTransaction(tr, i->t) && odelta != delta && isGlobal(i->t)) || 
(!isNew(i->t) && isLocalTemp(i->t)))
                trans_add(tr, &i->base, delta, &tc_gc_idx, &commit_update_idx, 
isLocalTemp(i->t)?NULL:&log_update_idx);
-       return make_cookie(delta, false);
+       return make_cookie(sa, delta, false);
 }
 
 static int
 append_idx(sql_trans *tr, sql_idx * i, void *data, int tpe)
 {
-       void *cookie = append_idx_prepare(tr, i);
+       void *cookie = append_idx_prepare(tr, NULL, i);
        if (cookie == NULL)
                return LOG_ERR;
 
diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h
--- a/sql/storage/sql_storage.h
+++ b/sql/storage/sql_storage.h
@@ -124,8 +124,8 @@ typedef int (*append_idx_fptr) (sql_tran
 typedef int (*update_col_fptr) (sql_trans *tr, sql_column *c, void *tids, void 
*d, int t);
 typedef int (*update_idx_fptr) (sql_trans *tr, sql_idx *i, void *tids, void 
*d, int t);
 
-typedef void *(*modify_col_prep_fptr) (sql_trans *tr, sql_column *c);
-typedef void *(*modify_idx_prep_fptr) (sql_trans *tr, sql_idx *i);
+typedef void *(*modify_col_prep_fptr) (sql_trans *tr, sql_allocator *sa, 
sql_column *c);
+typedef void *(*modify_idx_prep_fptr) (sql_trans *tr, sql_allocator *sa, 
sql_idx *i);
 
 typedef int (*append_col_exec_fptr) (void *cookie, void *b, bool is_bat);
 typedef int (*update_col_exec_fptr) (void *cookie, void *tids, void *values, 
bool is_bat);
diff --git a/testing/suppres.txt b/testing/suppres.txt
--- a/testing/suppres.txt
+++ b/testing/suppres.txt
@@ -9,4 +9,3 @@ leak:PyThread_allocate_lock
 leak:*libpython*.so*
 leak:*cpython*.so*
 leak:*libgomp.so*
-#leak:make_cookie
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to