Changeset: 9972cf949ad3 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9972cf949ad3 Modified Files: sql/storage/store.c Branch: default Log Message:
use less malloc/free diffs (truncated from 325 to 300 lines): diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -300,11 +300,9 @@ load_key(sql_trans *tr, sql_table *t, oi oid r = oid_nil; sqlstore *store = tr->store; - v = store->table_api.column_find_value(tr, find_sql_column(keys, "type"), rid); - ktype = (key_type) *(int *)v; _DELETE(v); + ktype = (key_type) store->table_api.column_find_int(tr, find_sql_column(keys, "type"), rid); nk = (ktype != fkey)?(sql_key*)SA_ZNEW(tr->sa, sql_ukey):(sql_key*)SA_ZNEW(tr->sa, sql_fkey); - v = store->table_api.column_find_value(tr, find_sql_column(keys, "id"), rid); - kid = *(sqlid *)v; _DELETE(v); + kid = store->table_api.column_find_sqlid(tr, find_sql_column(keys, "id"), rid); v = store->table_api.column_find_value(tr, find_sql_column(keys, "name"), rid); base_init(tr->sa, &nk->base, kid, 0, v); _DELETE(v); nk->type = ktype; @@ -320,8 +318,7 @@ load_key(sql_trans *tr, sql_table *t, oi sql_fkey *fk = (sql_fkey *) nk; int action; - v = store->table_api.column_find_value(tr, find_sql_column(keys, "action"), rid); - action = *(int *)v; _DELETE(v); + action = store->table_api.column_find_int(tr, find_sql_column(keys, "action"), rid); fk->on_delete = action & 255; fk->on_update = (action>>8) & 255; @@ -384,12 +381,10 @@ load_idx(sql_trans *tr, sql_table *t, oi sqlid iid; sqlstore *store = tr->store; - v = store->table_api.column_find_value(tr, find_sql_column(idxs, "id"), rid); - iid = *(sqlid *)v; _DELETE(v); + iid = store->table_api.column_find_sqlid(tr, find_sql_column(idxs, "id"), rid); v = store->table_api.column_find_value(tr, find_sql_column(idxs, "name"), rid); base_init(tr->sa, &ni->base, iid, 0, v); _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(idxs, "type"), rid); - ni->type = (idx_type) *(int*)v; _DELETE(v); + ni->type = (idx_type) store->table_api.column_find_int(tr, find_sql_column(idxs, "type"), rid); ni->columns = list_new(tr->sa, (fdestroy) &kc_destroy); ni->t = t; ni->key = NULL; @@ -435,8 +430,7 @@ load_trigger(sql_trans *tr, sql_table *t rids *rs; sqlstore *store = tr->store; - v = store->table_api.column_find_value(tr, find_sql_column(triggers, "id"), rid); - tid = *(sqlid *)v; _DELETE(v); + tid = store->table_api.column_find_sqlid(tr, find_sql_column(triggers, "id"), rid); v = store->table_api.column_find_value(tr, find_sql_column(triggers, "name"), rid); base_init(tr->sa, &nt->base, tid, 0, v); _DELETE(v); @@ -489,16 +483,13 @@ load_column(sql_trans *tr, sql_table *t, sqlid cid; sqlstore *store = tr->store; - v = store->table_api.column_find_value(tr, find_sql_column(columns, "id"), rid); - cid = *(sqlid *)v; _DELETE(v); + cid = store->table_api.column_find_sqlid(tr, find_sql_column(columns, "id"), rid); v = store->table_api.column_find_value(tr, find_sql_column(columns, "name"), rid); base_init(tr->sa, &c->base, cid, 0, v); _DELETE(v); tpe = store->table_api.column_find_value(tr, find_sql_column(columns, "type"), rid); - v = store->table_api.column_find_value(tr, find_sql_column(columns, "type_digits"), rid); - sz = *(int *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(columns, "type_scale"), rid); - d = *(int *)v; _DELETE(v); + sz = store->table_api.column_find_int(tr, find_sql_column(columns, "type_digits"), rid); + d = store->table_api.column_find_int(tr, find_sql_column(columns, "type_scale"), rid); if (!sql_find_subtype(&c->type, tpe, sz, d)) { sql_type *lt = sql_trans_bind_type(tr, t->s, tpe); if (lt == NULL) { @@ -516,8 +507,7 @@ load_column(sql_trans *tr, sql_table *t, _DELETE(def); v = store->table_api.column_find_value(tr, find_sql_column(columns, "null"), rid); c->null = *(bit *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(columns, "number"), rid); - c->colnr = *(int *)v; _DELETE(v); + c->colnr = store->table_api.column_find_int(tr, find_sql_column(columns, "number"), rid); c->unique = 0; c->storage_type = NULL; st = store->table_api.column_find_value(tr, find_sql_column(columns, "storage"), rid); @@ -640,17 +630,15 @@ load_part(sql_trans *tr, sql_table *mt, sqlstore *store = tr->store; assert(isMergeTable(mt) || isReplicaTable(mt)); - v = store->table_api.column_find_value(tr, find_sql_column(objects, "id"), rid); - id = *(sqlid*)v; _DELETE(v); + id = store->table_api.column_find_sqlid(tr, find_sql_column(objects, "id"), rid); if (is_int_nil(id)) { /* upgrade case, the id it's not initialized */ id = store_next_oid(store); store->table_api.column_update_value(tr, find_sql_column(objects, "id"), rid, &id); } v = store->table_api.column_find_value(tr, find_sql_column(objects, "name"), rid); base_init(tr->sa, &pt->base, id, 0, v); _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(objects, "sub"), rid); pt->t = mt; - pt->member = *(sqlid*)v; _DELETE(v); + pt->member = store->table_api.column_find_sqlid(tr, find_sql_column(objects, "sub"), rid); cs_add(&mt->members, pt, 0); return pt; } @@ -739,8 +727,7 @@ load_table(sql_trans *tr, sql_schema *s, _DELETE(v); if (isPartitionedByColumnTable(t)) { - v = store->table_api.column_find_value(tr, find_sql_column(partitions, "column_id"), rid); - pcolid = *((sqlid*)v); + pcolid = store->table_api.column_find_sqlid(tr, find_sql_column(partitions, "column_id"), rid); } else { v = store->table_api.column_find_value(tr, find_sql_column(partitions, "expression"), rid); if (ATOMcmp(TYPE_str, ATOMnilptr(TYPE_str), v) == 0) @@ -826,20 +813,15 @@ load_type(sql_trans *tr, sql_schema *s, sql_table *types = find_sql_table(tr, syss, "types"); sqlid tid; - v = store->table_api.column_find_value(tr, find_sql_column(types, "id"), rid); - tid = *(sqlid *)v; _DELETE(v); + tid = store->table_api.column_find_sqlid(tr, find_sql_column(types, "id"), rid); v = store->table_api.column_find_value(tr, find_sql_column(types, "systemname"), rid); base_init(tr->sa, &t->base, tid, 0, v); _DELETE(v); v = store->table_api.column_find_value(tr, find_sql_column(types, "sqlname"), rid); t->sqlname = (v)?SA_STRDUP(tr->sa, v):NULL; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(types, "digits"), rid); - t->digits = *(int *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(types, "scale"), rid); - t->scale = *(int *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(types, "radix"), rid); - t->radix = *(int *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(types, "eclass"), rid); - t->eclass = (sql_class)(*(int *)v); _DELETE(v); + t->digits = store->table_api.column_find_int(tr, find_sql_column(types, "digits"), rid); + t->scale = store->table_api.column_find_int(tr, find_sql_column(types, "scale"), rid); + t->radix = store->table_api.column_find_int(tr, find_sql_column(types, "radix"), rid); + t->eclass = (sql_class)store->table_api.column_find_int(tr, find_sql_column(types, "eclass"), rid); t->localtype = ATOMindex(t->base.name); t->bits = 0; t->s = s; @@ -862,10 +844,8 @@ load_arg(sql_trans *tr, sql_func * f, oi a->name = SA_STRDUP(tr->sa, v); _DELETE(v); v = store->table_api.column_find_value(tr, find_sql_column(args, "inout"), rid); a->inout = *(bte *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(args, "type_digits"), rid); - digits = *(int *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(args, "type_scale"), rid); - scale = *(int *)v; _DELETE(v); + digits = store->table_api.column_find_int(tr, find_sql_column(args, "type_digits"), rid); + scale = store->table_api.column_find_int(tr, find_sql_column(args, "type_scale"), rid); tpe = store->table_api.column_find_value(tr, find_sql_column(args, "type"), rid); if (!sql_find_subtype(&a->type, tpe, digits, scale)) { @@ -911,11 +891,9 @@ load_func(sql_trans *tr, sql_schema *s, v = store->table_api.column_find_value(tr, find_sql_column(funcs, "mod"), rid); } t->mod = (v)?SA_STRDUP(tr->sa, v):NULL; if (!update_env) _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(funcs, "language"), rid); - t->lang = (sql_flang) *(int *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(funcs, "type"), rid); + t->lang = (sql_flang) store->table_api.column_find_int(tr, find_sql_column(funcs, "language"), rid); t->sql = (t->lang==FUNC_LANG_SQL||t->lang==FUNC_LANG_MAL); - t->type = (sql_ftype) *(int *)v; _DELETE(v); + t->type = (sql_ftype) store->table_api.column_find_int(tr, find_sql_column(funcs, "type"), rid); v = store->table_api.column_find_value(tr, find_sql_column(funcs, "side_effect"), rid); t->side_effect = *(bit *)v; _DELETE(v); if (t->type==F_FILT) @@ -977,8 +955,7 @@ load_seq(sql_trans *tr, sql_schema * s, sql_table *seqs = find_sql_table(tr, syss, "sequences"); sqlid sid; - v = store->table_api.column_find_value(tr, find_sql_column(seqs, "id"), rid); - sid = *(sqlid *)v; _DELETE(v); + sid = store->table_api.column_find_sqlid(tr, find_sql_column(seqs, "id"), rid); v = store->table_api.column_find_value(tr, find_sql_column(seqs, "name"), rid); base_init(tr->sa, &seq->base, sid, 0, v); _DELETE(v); v = store->table_api.column_find_value(tr, find_sql_column(seqs, "start"), rid); @@ -1006,8 +983,7 @@ sql_trans_update_schema(sql_trans *tr, o sql_table *ss = find_sql_table(tr, syss, "schemas"); sqlid sid; - v = store->table_api.column_find_value(tr, find_sql_column(ss, "id"), rid); - sid = *(sqlid *)v; _DELETE(v); + sid = store->table_api.column_find_sqlid(tr, find_sql_column(ss, "id"), rid); s = find_sql_schema_id(tr, sid); if (s==NULL) @@ -1018,12 +994,10 @@ sql_trans_update_schema(sql_trans *tr, o v = store->table_api.column_find_value(tr, find_sql_column(ss, "name"), rid); _DELETE(s->base.name); base_init(tr->sa, &s->base, sid, 0, v); _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(ss, "authorization"), rid); - s->auth_id = *(sqlid *)v; _DELETE(v); + s->auth_id = store->table_api.column_find_sqlid(tr, find_sql_column(ss, "authorization"), rid); v = store->table_api.column_find_value(tr, find_sql_column(ss, "system"), rid); s->system = *(bit *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(ss, "owner"), rid); - s->owner = *(sqlid *)v; _DELETE(v); + s->owner = store->table_api.column_find_sqlid(tr, find_sql_column(ss, "owner"), rid); } static sql_schema * @@ -1042,8 +1016,7 @@ load_schema(sql_trans *tr, oid rid) sql_column *func_schema, *func_id, *seq_schema, *seq_id; rids *rs; - v = store->table_api.column_find_value(tr, find_sql_column(ss, "id"), rid); - sid = *(sqlid *)v; _DELETE(v); + sid = store->table_api.column_find_sqlid(tr, find_sql_column(ss, "id"), rid); if (instore(sid)) { s = find_sql_schema_id(tr, sid); @@ -1066,12 +1039,10 @@ load_schema(sql_trans *tr, oid rid) return NULL; v = store->table_api.column_find_value(tr, find_sql_column(ss, "name"), rid); base_init(tr->sa, &s->base, sid, 0, v); _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(ss, "authorization"), rid); - s->auth_id = *(sqlid *)v; _DELETE(v); + s->auth_id = store->table_api.column_find_sqlid(tr, find_sql_column(ss, "authorization"), rid); v = store->table_api.column_find_value(tr, find_sql_column(ss, "system"), rid); s->system = *(bit *)v; _DELETE(v); - v = store->table_api.column_find_value(tr, find_sql_column(ss, "owner"), rid); - s->owner = *(sqlid *)v; _DELETE(v); + s->owner = store->table_api.column_find_sqlid(tr, find_sql_column(ss, "owner"), rid); s->tables = os_new(tr->sa, (destroy_fptr) &table_destroy, false, true); s->types = os_new(tr->sa, (destroy_fptr) &type_destroy, false, false); @@ -1164,8 +1135,7 @@ load_schema(sql_trans *tr, oid rid) /* Handle all procedures without arguments (no args) */ rs = store->table_api.rids_diff(tr, rs, func_id, nrs, arg_func_id); for (rid = store->table_api.rids_next(rs); !is_oid_nil(rid); rid = store->table_api.rids_next(rs)) { - void *v = store->table_api.column_find_value(tr, func_id, rid); - fid = *(sqlid*)v; _DELETE(v); + fid = store->table_api.column_find_sqlid(tr, func_id, rid); f = load_func(tr, s, fid, NULL); if (f == NULL) { store->table_api.subrids_destroy(nrs); @@ -4507,7 +4477,6 @@ sql_trans_add_range_partition(sql_trans bit to_insert = with_nills; oid rid; ptr ok; - sqlid *v; vmin = vmax = (ValRecord) {.vtype = TYPE_void,}; @@ -4595,18 +4564,15 @@ sql_trans_add_range_partition(sql_trans /* add merge table dependency */ sql_trans_create_dependency(tr, pt->base.id, mt->base.id, TABLE_DEPENDENCY); - v = (sqlid*) store->table_api.column_find_value(tr, find_sql_column(partitions, "id"), rid); + sqlid id = store->table_api.column_find_sqlid(tr, find_sql_column(partitions, "id"), rid); if (store->table_api.table_insert(tr, sysobj, &p->base.id, p->base.name, &mt->base.id, &pt->base.id)) { - _DELETE(v); res = -6; goto finish; } - if (store->table_api.table_insert(tr, ranges, &pt->base.id, v, VALget(&vmin), VALget(&vmax), &to_insert)) { - _DELETE(v); + if (store->table_api.table_insert(tr, ranges, &pt->base.id, &id, VALget(&vmin), VALget(&vmax), &to_insert)) { res = -6; goto finish; } - _DELETE(v); } else { sql_column *cmin = find_sql_column(ranges, "minimum"), *cmax = find_sql_column(ranges, "maximum"), *wnulls = find_sql_column(ranges, "with_nulls"); @@ -4641,7 +4607,6 @@ sql_trans_add_value_partition(sql_trans sql_part *p; oid rid; int localtype = tpe.type->localtype, i = 0; - sqlid *v; mt = new_table(tr, mt); if (!mt) @@ -4672,19 +4637,17 @@ sql_trans_add_value_partition(sql_trans rid = store->table_api.column_find_row(tr, find_sql_column(partitions, "table_id"), &mt->base.id, NULL); assert(!is_oid_nil(rid)); - v = (sqlid*) store->table_api.column_find_value(tr, find_sql_column(partitions, "id"), rid); + sqlid id = store->table_api.column_find_sqlid(tr, find_sql_column(partitions, "id"), rid); if (with_nills) { /* store the null value first */ ValRecord vnnil; if (VALinit(&vnnil, TYPE_str, ATOMnilptr(TYPE_str)) == NULL) { if (!update) part_destroy(store, p); - _DELETE(v); list_destroy2(vals, store); return -1; } - if (store->table_api.table_insert(tr, values, &pt->base.id, v, VALget(&vnnil))) { - _DELETE(v); + if (store->table_api.table_insert(tr, values, &pt->base.id, &id, VALget(&vnnil))) { list_destroy2(vals, store); return -1; } @@ -4699,7 +4662,6 @@ sql_trans_add_value_partition(sql_trans if (ATOMlen(localtype, next->value) > STORAGE_MAX_VALUE_LENGTH) { if (!update) part_destroy(store, p); - _DELETE(v); list_destroy2(vals, store); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list