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