Changeset: f6e526cb47d3 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f6e526cb47d3 Modified Files: sql/storage/store.c Branch: nospare Log Message:
add missing cleanup functions diffs (182 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -90,6 +90,11 @@ type_destroy(sqlstore *store, sql_type * assert(t->base.refcnt > 0); if (--(t->base.refcnt) > 0) return; + /* + _DELETE(t->sqlname); + _DELETE(t->base.name); + _DELETE(t); + */ } static void @@ -99,6 +104,13 @@ func_destroy(sqlstore *store, sql_type * assert(f->base.refcnt > 0); if (--(f->base.refcnt) > 0) return; + /* + list_destroy(f->ops, store); + _DELETE(f->imp); + _DELETE(f->mod); + _DELETE(f->base.name); + _DELETE(f); + */ } static void @@ -108,6 +120,10 @@ seq_destroy(sqlstore *store, sql_type *s assert(s->base.refcnt > 0); if (--(s->base.refcnt) > 0) return; + /* + _DELETE(s->base.name); + _DELETE(s); + */ } static void @@ -122,6 +138,11 @@ key_destroy(sqlstore *store, sql_key *k) if ((k->type == pkey) && (k->t->pkey == (sql_ukey *) k)) k->t->pkey = NULL; (void)store; + /* + list_destroy(k->columns); + _DELETE(k->base.name); + _DELETE(k); + */ } static void @@ -136,6 +157,11 @@ idx_destroy(sqlstore *store, sql_idx * i if (isTable(i->t)) store->storage_api.destroy_idx(store, i); + /* + list_destroy(i->columns); + _DELETE(i->base.name); + _DELETE(i); + */ } static void @@ -150,15 +176,72 @@ trigger_destroy(sqlstore *store, sql_tri t->columns = NULL; } (void)store; + /* + list_destroy(t->columns); + _DELETE(t->old_name); + _DELETE(t->new_name); + _DELETE(t->condition); + _DELETE(t->statement); + _DELETE(t->base.name); + _DELETE(t); + */ } static void column_destroy(sqlstore *store, sql_column *c) { + assert(c->base.refcnt > 0); if (--(c->base.refcnt) > 0) return; if (isTable(c->t)) store->storage_api.destroy_col(store, c); + /* + _DELETE(c->def); + _DELETE(c->base.name); + _DELETE(c); + */ +} + +static void +table_destroy(sqlstore *store, sql_table *t) +{ + (void)store; + assert(t->base.refcnt > 0); + if (--(t->base.refcnt) > 0) + return; + /* cleanup its parts */ + cs_destroy(&t->members, store); + cs_destroy(&t->idxs, store); + cs_destroy(&t->keys, store); + cs_destroy(&t->triggers, store); + cs_destroy(&t->columns, store); + /* + _DELETE(t->part); + _DELETE(t->query); + _DELETE(t->base.name); + _DELETE(t); + */ +} + +static void +schema_destroy(sqlstore *store, sql_schema *s) +{ + assert(s->base.refcnt > 0); + if (--(s->base.refcnt) > 0) + return; + /* cleanup its parts */ + os_destroy(s->parts, store); + os_destroy(s->triggers, store); + os_destroy(s->idxs, store); + os_destroy(s->keys, store); + os_destroy(s->seqs, store); + os_destroy(s->tables, store); + os_destroy(s->funcs, store); + os_destroy(s->types, store); + /* + _DELETE(s->base.name); + _DELETE(s); + */ } static void @@ -967,7 +1050,7 @@ load_schema(sql_trans *tr, sqlid id, oid v = store->table_api.column_find_value(tr, find_sql_column(ss, "owner"), rid); s->owner = *(sqlid *)v; _DELETE(v); - s->tables = os_new(tr->sa, (destroy_fptr) NULL, false, true); + s->tables = os_new(tr->sa, (destroy_fptr) &table_destroy, false, true); s->types = os_new(tr->sa, (destroy_fptr) &type_destroy, false, true); s->funcs = os_new(tr->sa, (destroy_fptr) &func_destroy, false, false); s->seqs = os_new(tr->sa, (destroy_fptr) &seq_destroy, false, true); @@ -1534,7 +1617,7 @@ bootstrap_create_schema(sql_trans *tr, c s->auth_id = auth_id; s->owner = owner; s->system = TRUE; - s->tables = os_new(tr->sa, (destroy_fptr) NULL, false, true); + s->tables = os_new(tr->sa, (destroy_fptr) &table_destroy, false, true); s->types = os_new(tr->sa, (destroy_fptr) &type_destroy, false, true); s->funcs = os_new(tr->sa, (destroy_fptr) &func_destroy, false, false); s->seqs = os_new(tr->sa, (destroy_fptr) &seq_destroy, false, true); @@ -3334,7 +3417,7 @@ sql_trans_create_(sqlstore *store, sql_t tr->cat = store->cat; if (!tr->cat) { store->cat = tr->cat = SA_ZNEW(tr->sa, sql_catalog); - store->cat->schemas = os_new(tr->sa, (destroy_fptr) NULL, false, true); + store->cat->schemas = os_new(tr->sa, (destroy_fptr) &schema_destroy, false, true); store->cat->objects = os_new(tr->sa, (destroy_fptr) &key_destroy, false, false); } tr->tmp = store->tmp; @@ -3349,7 +3432,7 @@ schema_dup(sql_trans *tr, sql_schema *s) sql_schema *ns = SA_ZNEW(tr->sa, sql_schema); *ns = *s; - ns->tables = os_new(tr->sa, (destroy_fptr) NULL, isTempSchema(s), true); + ns->tables = os_new(tr->sa, (destroy_fptr) &table_destroy, isTempSchema(s), true); ns->seqs = os_new(tr->sa, (destroy_fptr) &seq_destroy, isTempSchema(s), true); ns->keys = os_new(tr->sa, (destroy_fptr) &key_destroy, isTempSchema(s), true); ns->idxs = os_new(tr->sa, (destroy_fptr) &idx_destroy, isTempSchema(s), true); @@ -4205,7 +4288,7 @@ sql_trans_create_schema(sql_trans *tr, c s->auth_id = auth_id; s->owner = owner; s->system = FALSE; - s->tables = os_new(tr->sa, (destroy_fptr) NULL, isTempSchema(s), true); + s->tables = os_new(tr->sa, (destroy_fptr) &table_destroy, isTempSchema(s), true); s->types = os_new(tr->sa, (destroy_fptr) &type_destroy, isTempSchema(s), true); s->funcs = os_new(tr->sa, (destroy_fptr) &func_destroy, isTempSchema(s), false); s->seqs = os_new(tr->sa, (destroy_fptr) &seq_destroy, isTempSchema(s), true); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list