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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list