Changeset: 1c99592f6b9f for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1c99592f6b9f Modified Files: sql/backends/monet5/rel_bin.c sql/server/rel_psm.c sql/storage/store.c Branch: nospare Log Message:
fixed some leaks diffs (97 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 @@ -4523,12 +4523,16 @@ cascade_ukey(backend *be, stmt **updates case ACT_SET_NULL: case ACT_SET_DEFAULT: case ACT_CASCADE: - if (!sql_update_cascade_Fkeys(be, fk, tids, updates, ((sql_fkey*)fk)->on_update)) + if (!sql_update_cascade_Fkeys(be, fk, tids, updates, ((sql_fkey*)fk)->on_update)) { + list_destroy(keys); return -1; + } break; default: /*RESTRICT*/ - if (!join_updated_pkey(be, fk, tids, updates)) + if (!join_updated_pkey(be, fk, tids, updates)) { + list_destroy(keys); return -1; + } } } list_destroy(keys); diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c --- a/sql/server/rel_psm.c +++ b/sql/server/rel_psm.c @@ -1018,10 +1018,14 @@ rel_create_func(sql_query *query, dlist return sql_error(sql, 01, SQLSTATE(42000) "CREATE %s: external name %s.%s not bound (%s.%s)", F, fmod, fnme, s->base.name, fname ); } else { sql_func *f = sf->func; - if (!f->mod || strcmp(f->mod, fmod)) + if (!f->mod || strcmp(f->mod, fmod)) { + _DELETE(f->mod); f->mod = SA_STRDUP(NULL, fmod) ;//(f->sa)?sa_strdup(f->sa, fmod):sa_strdup(sql->pa, fmod); - if (!f->imp || strcmp(f->imp, fnme)) + } + if (!f->imp || strcmp(f->imp, fnme)) { + _DELETE(f->imp); f->imp = SA_STRDUP(NULL, fnme);//(f->sa)?sa_strdup(f->sa, fnme):sa_strdup(sql->pa, fnme); + } if (!f->mod || !f->imp) return sql_error(sql, 02, SQLSTATE(HY013) "CREATE %s: could not allocate space", F); f->sql = 0; /* native */ diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -3375,7 +3375,7 @@ sql_trans_rollback(sql_trans *tr) list_prepend(tr->localtmps.set, dup_table(tt)); n = next; } - list_destroy(tr->localtmps.dset); + list_destroy2(tr->localtmps.dset, tr->store); } /* cleanup new */ if (tr->localtmps.nelm) { @@ -3459,6 +3459,7 @@ sql_trans_destroy(sql_trans *tr) } if (tr->changes) sql_trans_rollback(tr); + cs_destroy(&tr->localtmps, tr->store); _DELETE(tr); return res; } @@ -3531,7 +3532,7 @@ sql_trans_create(sqlstore *store, sql_tr if (tr) { tr->ts = store_timestamp(store); tr->active = 1; - cs_new(&tr->localtmps, tr->sa, (fdestroy) NULL); + cs_new(&tr->localtmps, tr->sa, (fdestroy) &table_destroy); } return tr; } @@ -3854,10 +3855,15 @@ sys_drop_default_object(sql_trans *tr, s char *schema = NULL, *seq_name = NULL; extract_schema_and_sequence_name(tr->sa, col->def + strlen(next_value_for), &schema, &seq_name); - if (!schema || !seq_name || !(s = find_sql_schema(tr, schema))) + if (!schema || !seq_name || !(s = find_sql_schema(tr, schema))) { + _DELETE(schema); + _DELETE(seq_name); return -1; + } seq = find_sql_sequence(tr, s, seq_name); + _DELETE(schema); + _DELETE(seq_name); if (seq && sql_trans_get_dependency_type(tr, seq->base.id, BEDROPPED_DEPENDENCY) > 0) { sys_drop_sequence(tr, seq, drop_action); if (os_del(s->seqs, tr, seq->base.name, dup_base(&seq->base))) @@ -5897,7 +5903,7 @@ sql_trans_create_sequence(sql_trans *tr, sql_table *sysseqs = find_sql_table(tr, syss, "sequences"); sql_sequence *seq = create_sql_sequence_with_id(tr->sa, next_oid(tr->store), s, name, start, min, max, inc, cacheinc, cycle); - if (os_add(s->seqs, tr, seq->base.name, dup_base(&seq->base))) { + if (os_add(s->seqs, tr, seq->base.name, &seq->base)) { seq_destroy(store, seq); return NULL; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list