Changeset: c3ef74a5252a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c3ef74a5252a Modified Files: sql/backends/monet5/rel_bin.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_scenario.c sql/common/sql_changeset.c sql/server/rel_optimizer.c sql/server/sql_mvc.c sql/storage/bat/bat_storage.c sql/storage/sql_storage.h sql/storage/store.c testing/suppres.txt Branch: nospare Log Message:
fixing leaks.. diffs (truncated from 1344 to 300 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -5301,6 +5301,7 @@ check_for_foreign_key_references(mvc *sq size_t n_deletes = store->storage_api.count_del(sql->session->tr, c->t); assert (n_rows >= n_deletes); if (n_rows - n_deletes > 0) { + list_destroy(keys); sql_error(sql, 02, SQLSTATE(23000) "TRUNCATE: FOREIGN KEY %s.%s depends on %s", k->t->base.name, k->base.name, t->base.name); *error = 1; return; @@ -5313,6 +5314,7 @@ check_for_foreign_key_references(mvc *sq } if (!found) { if ((new_node = SA_NEW(sql->ta, struct tablelist)) == NULL) { + list_destroy(keys); sql_error(sql, 02, SQLSTATE(HY013) MAL_MALLOC_FAIL); *error = 1; return; diff --git a/sql/backends/monet5/sql_gencode.c b/sql/backends/monet5/sql_gencode.c --- a/sql/backends/monet5/sql_gencode.c +++ b/sql/backends/monet5/sql_gencode.c @@ -934,12 +934,16 @@ backend_create_r_func(backend *be, sql_f (void)be; switch(f->type) { case F_AGGR: + _DELETE(f->mod); + _DELETE(f->imp); f->mod = GDKstrdup("rapi"); f->imp = GDKstrdup("eval_aggr"); break; case F_PROC: /* no output */ case F_FUNC: default: /* ie also F_FILT and F_UNION for now */ + _DELETE(f->mod); + _DELETE(f->imp); f->mod = GDKstrdup("rapi"); f->imp = GDKstrdup("eval"); break; @@ -954,16 +958,22 @@ backend_create_py_func(backend *be, sql_ (void)be; switch(f->type) { case F_AGGR: + _DELETE(f->mod); + _DELETE(f->imp); f->mod = GDKstrdup("pyapi3"); f->imp = GDKstrdup("eval_aggr"); break; case F_LOADER: + _DELETE(f->mod); + _DELETE(f->imp); f->mod = GDKstrdup("pyapi3"); f->imp = GDKstrdup("eval_loader"); break; case F_PROC: /* no output */ case F_FUNC: default: /* ie also F_FILT and F_UNION for now */ + _DELETE(f->mod); + _DELETE(f->imp); f->mod = GDKstrdup("pyapi3"); f->imp = GDKstrdup("eval"); break; @@ -977,12 +987,16 @@ backend_create_map_py_func(backend *be, (void)be; switch(f->type) { case F_AGGR: + _DELETE(f->mod); + _DELETE(f->imp); f->mod = GDKstrdup("pyapi3map"); f->imp = GDKstrdup("eval_aggr"); break; case F_PROC: /* no output */ case F_FUNC: default: /* ie also F_FILT and F_UNION for now */ + _DELETE(f->mod); + _DELETE(f->imp); f->mod = GDKstrdup("pyapi3map"); f->imp = GDKstrdup("eval"); break; @@ -1013,6 +1027,8 @@ backend_create_c_func(backend *be, sql_f (void)be; switch(f->type) { case F_AGGR: + _DELETE(f->mod); + _DELETE(f->imp); f->mod = GDKstrdup("capi"); f->imp = GDKstrdup("eval_aggr"); break; @@ -1020,6 +1036,8 @@ backend_create_c_func(backend *be, sql_f case F_PROC: /* no output */ case F_FUNC: default: /* ie also F_FILT and F_UNION for now */ + _DELETE(f->mod); + _DELETE(f->imp); f->mod = GDKstrdup("capi"); f->imp = GDKstrdup("eval"); break; 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 @@ -559,11 +559,9 @@ handle_error(mvc *m, int pstatus, str ms } freeException(new); freeException(msg); - } else - if ( msg) + } else if (msg) newmsg = msg; - else - if ( new) + else if (new) newmsg = new; return newmsg; } @@ -593,6 +591,7 @@ SQLtrans(mvc *m) throw(SQL, "sql.trans", SQLSTATE(HY013) MAL_MALLOC_FAIL); s = m->session; if (!s->schema) { + _DELETE(s->schema_name); s->schema_name = monet5_user_get_def_schema(m, m->user_id); if (!s->schema_name) { mvc_cancel_session(m); diff --git a/sql/common/sql_changeset.c b/sql/common/sql_changeset.c --- a/sql/common/sql_changeset.c +++ b/sql/common/sql_changeset.c @@ -69,9 +69,9 @@ cs_add_before(changeset * cs, node *n, v void cs_del(changeset * cs, void *gdata, node *elm, int flags) { + if (cs->nelm == elm) + cs->nelm = elm->next; if (newFlagSet(flags)) { /* remove just added */ - if (cs->nelm == elm) - cs->nelm = elm->next; list_remove_node(cs->set, gdata, elm); } else { if (!cs->dset) diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -9556,7 +9556,7 @@ exp_is_zero_rows(mvc *sql, sql_rel *rel, if (lval && hval) { sql_rel *bt; sql_column *col = name_find_column(sel, exp_relname(c), exp_name(c), -2, &bt); - char *min, *max; + char *min = NULL, *max = NULL; atom *amin, *amax; sql_subtype *ct = exp_subtype(c); 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 @@ -627,8 +627,10 @@ mvc_rollback(mvc *m, int chain, const ch } m->session->tr = tr; /* restart at savepoint */ m->session->status = tr->status; - if (tr->name) + if (tr->name) { + _DELETE(tr->name); tr->name = NULL; + } m->session->schema = find_sql_schema(m->session->tr, m->session->schema_name); } else { /* first release all intermediate savepoints */ @@ -691,6 +693,7 @@ mvc_release(mvc *m, const char *name) GDKfatal("release savepoints should not fail"); tr = sql_trans_destroy(tr); } + _DELETE(tr->name); tr->name = NULL; store_unlock(m->store); m->session->tr = tr; 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 @@ -785,7 +785,7 @@ update_col_prepare(sql_trans *tr, sql_co return NULL; assert(delta && delta->ts == tr->tid); - if ((!inTransaction(tr, c->t) && odelta != delta && isGlobal(c->t)) || isLocalTemp(c->t)) + 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)); } @@ -856,7 +856,7 @@ update_idx_prepare(sql_trans *tr, sql_id return NULL; assert(delta && delta->ts == tr->tid); - if ((!inTransaction(tr, i->t) && odelta != delta && isGlobal(i->t)) || isLocalTemp(i->t)) + 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)); } @@ -1002,7 +1002,7 @@ append_col_prepare(sql_trans *tr, sql_co return NULL; assert(delta && delta->ts == tr->tid); - if ((!inTransaction(tr, c->t) && odelta != delta && isGlobal(c->t)) || isLocalTemp(c->t)) + 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); } @@ -1047,7 +1047,7 @@ append_idx_prepare(sql_trans *tr, sql_id return NULL; assert(delta && delta->ts == tr->tid); - if ((!inTransaction(tr, i->t) && odelta != delta && isGlobal(i->t)) || isLocalTemp(i->t)) + 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); } @@ -1201,7 +1201,7 @@ delete_tab(sql_trans *tr, sql_table * t, ok = delta_delete_bat(bat, ib); else ok = delta_delete_val(bat, *(oid*)ib); - if ((!inTransaction(tr, t) && obat != bat && isGlobal(t)) || isLocalTemp(t)) + if ((!inTransaction(tr, t) && obat != bat && isGlobal(t)) || (!isNew(t) && isLocalTemp(t))) trans_add(tr, &t->base, bat, &tc_gc_del, &commit_update_del, isLocalTemp(t)?NULL:&log_update_del); return ok; } @@ -1632,8 +1632,8 @@ create_col(sql_trans *tr, sql_column *c) bat_destroy(b); } } - if (new && !isTempTable(c->t) && !isNew(c->t) /* alter */) - trans_add(tr, &c->base, bat, &tc_gc_col, &commit_create_col, isLocalTemp(c->t)?NULL:&log_create_col); + if (new /*&& !isTempTable(c->t)*/ && !isNew(c->t) /* alter */) + trans_add(tr, &c->base, bat, &tc_gc_col, &commit_create_col, isTempTable(c->t)?NULL:&log_create_col); } return ok; } @@ -1685,6 +1685,7 @@ static int commit_create_col( sql_trans *tr, sql_change *change, ulng commit_ts, ulng oldest) { sql_column *c = (sql_column*)change->obj; + c->base.flags = 0; return commit_create_col_( tr, c, commit_ts, oldest); } @@ -1752,8 +1753,8 @@ create_idx(sql_trans *tr, sql_idx *ni) if(bat->uvbid == BID_NIL) ok = LOG_ERR; } - if (new && !isTempTable(ni->t) && !isNew(ni->t) /* alter */) - trans_add(tr, &ni->base, bat, &tc_gc_idx, &commit_create_idx, isLocalTemp(ni->t)?NULL:&log_create_idx); + if (new /*&& !isTempTable(ni->t)*/ && !isNew(ni->t) /* alter */) + trans_add(tr, &ni->base, bat, &tc_gc_idx, &commit_create_idx, isTempTable(ni->t)?NULL:&log_create_idx); } return ok; } @@ -1803,6 +1804,7 @@ static int commit_create_idx( sql_trans *tr, sql_change *change, ulng commit_ts, ulng oldest) { sql_idx *i = (sql_idx*)change->obj; + i->base.flags = 0; return commit_create_idx_(tr, i, commit_ts, oldest); } @@ -1863,8 +1865,8 @@ create_del(sql_trans *tr, sql_table *t) } else { ok = LOG_ERR; } - if (new && !isTempTable(t)) - trans_add(tr, &t->base, bat, &tc_gc_del, &commit_create_del, isLocalTemp(t)?NULL:&log_create_del); + if (new /*&& !isTempTable(t)*/) + trans_add(tr, &t->base, bat, &tc_gc_del, &commit_create_del, isTempTable(t)?NULL:&log_create_del); } return ok; } @@ -1957,6 +1959,7 @@ commit_create_del( sql_trans *tr, sql_ch t->base.flags = 0; } } + t->base.flags = 0; return ok; } @@ -2194,7 +2197,7 @@ clear_col(sql_trans *tr, sql_column *c) if ((delta = bind_col_data(tr, c)) == NULL) return BUN_NONE; - if ((!inTransaction(tr, c->t) && odelta != delta && isGlobal(c->t)) || isLocalTemp(c->t)) + 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); if (delta) return clear_delta(tr, delta); @@ -2210,7 +2213,7 @@ clear_idx(sql_trans *tr, sql_idx *i) return 0; if ((delta = bind_idx_data(tr, i)) == NULL) return BUN_NONE; - if ((!inTransaction(tr, i->t) && odelta != delta && isGlobal(i->t)) || isLocalTemp(i->t)) + 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); if (delta) return clear_delta(tr, delta); @@ -2250,7 +2253,7 @@ clear_del(sql_trans *tr, sql_table *t) if ((bat = bind_del_data(tr, t)) == NULL) return BUN_NONE; - if ((!inTransaction(tr, t) && obat != bat && isGlobal(t)) || isLocalTemp(t)) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list