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

Reply via email to