Changeset: 751f0c229b65 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/751f0c229b65
Modified Files:
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cat.c
sql/common/sql_list.c
sql/include/sql_catalog.h
sql/include/sql_list.h
sql/server/rel_propagate.c
sql/server/sql_partition.c
sql/storage/objectset.c
sql/storage/sql_catalog.c
sql/storage/store.c
Branch: default
Log Message:
removal of allocator in storage layer, as its a shared structure.
diffs (truncated from 1479 to 300 lines):
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -391,7 +391,7 @@ create_table_or_view(mvc *sql, char *sna
char *err = NULL;
_DELETE(nt->part.pexp->exp);
- nt->part.pexp->exp = SA_STRDUP(sql->session->tr->sa,
t->part.pexp->exp);
+ nt->part.pexp->exp = _STRDUP(t->part.pexp->exp);
err = bootstrap_partition_expression(sql, nt, 1);
sa_reset(sql->ta);
if (err) {
diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -390,7 +390,7 @@ alter_table_add_value_partition(mvc *sql
msg =
createException(SQL,"sql.alter_table_add_value_partition",SQLSTATE(42000)
"ALTER TABLE: no values in the list");
goto finish;
}
- values = list_new(sql->session->tr->sa, (fdestroy) &part_value_destroy);
+ values = list_create((fdestroy) &part_value_destroy);
for ( i = pci->retc+6; i < pci->argc; i++){
sql_part_value *nextv = NULL;
ValRecord *vnext = &(stk)->stk[(pci)->argv[i]];
@@ -404,8 +404,8 @@ alter_table_add_value_partition(mvc *sql
goto finish;
}
- nextv = SA_ZNEW(sql->session->tr->sa, sql_part_value); /*
instantiate the part value */
- nextv->value = SA_NEW_ARRAY(sql->session->tr->sa, char, len);
+ nextv = ZNEW(sql_part_value); /* instantiate the part value */
+ nextv->value = NEW_ARRAY(char, len);
memcpy(nextv->value, pnext, len);
nextv->length = len;
diff --git a/sql/common/sql_list.c b/sql/common/sql_list.c
--- a/sql/common/sql_list.c
+++ b/sql/common/sql_list.c
@@ -68,6 +68,14 @@ sa_list_append(sql_allocator *sa, list *
}
list *
+list_add(list *l, void *data)
+{
+ if (!l)
+ l = list_create(NULL);
+ return list_append(l, data);
+}
+
+list *
list_new(sql_allocator *sa, fdestroy destroy)
{
list *l = (sa)?SA_NEW(sa, list):MNEW(list);
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -327,7 +327,6 @@ typedef struct sql_trans {
sql_catalog *cat;
sql_schema *tmp; /* each session has its own tmp schema */
changeset localtmps;
- sql_allocator *sa; /* transaction allocator */
struct sql_trans *parent; /* multilevel transaction support */
} sql_trans;
diff --git a/sql/include/sql_list.h b/sql/include/sql_list.h
--- a/sql/include/sql_list.h
+++ b/sql/include/sql_list.h
@@ -41,6 +41,7 @@ sql_export list *sa_list(sql_allocator *
extern list *list_new(sql_allocator *sa, fdestroy destroy);
extern list *sa_list_append( sql_allocator *sa, list *l, void *data);
+extern list *list_add( list *l, void *data);
extern void list_destroy(list *l);
extern void list_destroy2(list *l, void *data);
diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c
--- a/sql/server/rel_propagate.c
+++ b/sql/server/rel_propagate.c
@@ -758,7 +758,7 @@ rel_generate_subinserts(sql_query *query
} else {
bool max_equal_min = ATOMcmp(tpe,
pt->part.range.maxvalue, pt->part.range.minvalue) == 0;
- full_range = range = max_equal_min ?
+ full_range = range = max_equal_min ?
exp_compare(sql->sa, le,
exp_atom(sql->sa, atom_general_ptr(sql->sa, &tp, pt->part.range.minvalue)),
cmp_equal) :
exp_compare2(sql->sa, le,
exp_atom(sql->sa, atom_general_ptr(sql->sa, &tp, pt->part.range.minvalue)),
exp_atom(sql->sa, atom_general_ptr(sql->sa, &tp,
pt->part.range.maxvalue)), 1, 0);
diff --git a/sql/server/sql_partition.c b/sql/server/sql_partition.c
--- a/sql/server/sql_partition.c
+++ b/sql/server/sql_partition.c
@@ -329,7 +329,6 @@ initialize_sql_parts(mvc *sql, sql_table
str res = NULL;
sql_subtype found;
int localtype;
- sql_trans *tr = sql->session->tr;
if (isPartitionedByExpressionTable(mt) && (res =
bootstrap_partition_expression(sql, mt, 0)) != NULL)
return res;
@@ -352,7 +351,7 @@ initialize_sql_parts(mvc *sql, sql_table
if (ok)
ok = VALconvert(localtype,
&vvalue);
if (ok) {
- v->value = SA_NEW_ARRAY(tr->sa,
char, vvalue.len);
+ v->value = NEW_ARRAY(char,
vvalue.len);
memcpy(v->value,
VALget(&vvalue), vvalue.len);
v->length = vvalue.len;
}
@@ -380,8 +379,8 @@ initialize_sql_parts(mvc *sql, sql_table
const void *nil_ptr =
ATOMnilptr(localtype);
size_t nil_len =
ATOMlen(localtype, nil_ptr);
- p->part.range.minvalue =
SA_NEW_ARRAY(tr->sa, char, nil_len);
- p->part.range.maxvalue =
SA_NEW_ARRAY(tr->sa, char, nil_len);
+ p->part.range.minvalue =
NEW_ARRAY(char, nil_len);
+ p->part.range.maxvalue =
NEW_ARRAY(char, nil_len);
memcpy(p->part.range.minvalue,
nil_ptr, nil_len);
memcpy(p->part.range.maxvalue,
nil_ptr, nil_len);
p->part.range.minlength =
nil_len;
@@ -391,8 +390,8 @@ initialize_sql_parts(mvc *sql, sql_table
if (ok)
ok =
VALconvert(localtype, &vmax);
if (ok) {
- p->part.range.minvalue
= SA_NEW_ARRAY(tr->sa, char, vmin.len);
- p->part.range.maxvalue
= SA_NEW_ARRAY(tr->sa, char, vmax.len);
+ p->part.range.minvalue
= NEW_ARRAY(char, vmin.len);
+ p->part.range.maxvalue
= NEW_ARRAY(char, vmax.len);
memcpy(p->part.range.minvalue, VALget(&vmin), vmin.len);
memcpy(p->part.range.maxvalue, VALget(&vmax), vmax.len);
p->part.range.minlength
= vmin.len;
diff --git a/sql/storage/objectset.c b/sql/storage/objectset.c
--- a/sql/storage/objectset.c
+++ b/sql/storage/objectset.c
@@ -630,6 +630,7 @@ tc_commit_objectversion(sql_trans *tr, s
objectset *
os_new(sql_allocator *sa, destroy_fptr destroy, bool temporary, bool unique,
bool concurrent, sql_store store)
{
+ assert(!sa);
objectset *os = SA_NEW(sa, objectset);
*os = (objectset) {
.refcnt = 1,
diff --git a/sql/storage/sql_catalog.c b/sql/storage/sql_catalog.c
--- a/sql/storage/sql_catalog.c
+++ b/sql/storage/sql_catalog.c
@@ -54,7 +54,7 @@ static void *
void
trans_add(sql_trans *tr, sql_base *b, void *data, tc_cleanup_fptr cleanup,
tc_commit_fptr commit, tc_log_fptr log)
{
- sql_change *change = SA_NEW(tr->sa, sql_change);
+ sql_change *change = MNEW(sql_change);
*change = (sql_change) {
.obj = b,
@@ -64,7 +64,7 @@ trans_add(sql_trans *tr, sql_base *b, vo
.log = log,
};
MT_lock_set(&tr->lock);
- tr->changes = sa_list_append(tr->sa, tr->changes, change);
+ tr->changes = list_add(tr->changes, change);
if (log)
tr->logchanges++;
MT_lock_unset(&tr->lock);
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -315,7 +315,10 @@ sql_trans_add_predicate(sql_trans* tr, s
predicate_destroy(tr->store, p);
return LOG_ERR;
}
- list_append(tr->predicates, p);
+ if (!list_append(tr->predicates, p)) {
+ predicate_destroy(tr->store, p);
+ return LOG_ERR;
+ }
return LOG_OK;
}
@@ -334,7 +337,10 @@ sql_trans_add_dependency(sql_trans* tr,
_DELETE(dep);
return LOG_ERR;
}
- list_append(tr->dependencies, dep);
+ if (!list_append(tr->dependencies, dep)) {
+ _DELETE(dep);
+ return LOG_ERR;
+ }
return LOG_OK;
}
@@ -353,14 +359,17 @@ sql_trans_add_dependency_change(sql_tran
_DELETE(dep);
return LOG_ERR;
}
- list_append(tr->depchanges, dep);
+ if (!list_append(tr->depchanges, dep)) {
+ _DELETE(dep);
+ return LOG_ERR;
+ }
return LOG_OK;
}
static void
load_keycolumn(sql_trans *tr, sql_key *k, res_table *rt_keycols/*, oid rid*/)
{
- sql_kc *kc = SA_ZNEW(tr->sa, sql_kc);
+ sql_kc *kc = ZNEW(sql_kc);
sql_schema *syss = find_sql_schema(tr, "sys");
sql_table *objects = find_sql_table(tr, syss, "objects");
sqlstore *store = tr->store;
@@ -380,13 +389,13 @@ load_key(sql_trans *tr, sql_table *t, re
sqlstore *store = tr->store;
key_type ktype = (key_type) *(int*)
store->table_api.table_fetch_value(rt_keys, find_sql_column(keys, "type"));
- sql_key *nk = (ktype != fkey)?(sql_key*)SA_ZNEW(tr->sa,
sql_ukey):(sql_key*)SA_ZNEW(tr->sa, sql_fkey);
+ sql_key *nk = (ktype !=
fkey)?(sql_key*)ZNEW(sql_ukey):(sql_key*)ZNEW(sql_fkey);
sqlid kid = *(sqlid*) store->table_api.table_fetch_value(rt_keys,
find_sql_column(keys, "id"));
str v = (char*) store->table_api.table_fetch_value(rt_keys,
find_sql_column(keys, "name"));
- base_init(tr->sa, &nk->base, kid, 0, v);
+ base_init(NULL, &nk->base, kid, 0, v);
nk->type = ktype;
- nk->columns = list_new(tr->sa, (fdestroy) &kc_destroy);
+ nk->columns = list_create((fdestroy) &kc_destroy);
nk->t = t;
if (ktype == ukey || ktype == pkey) {
@@ -422,7 +431,7 @@ load_key(sql_trans *tr, sql_table *t, re
static void
load_idxcolumn(sql_trans *tr, sql_idx * i, res_table *rt_idxcols/*, oid rid*/)
{
- sql_kc *kc = SA_ZNEW(tr->sa, sql_kc);
+ sql_kc *kc = ZNEW(sql_kc);
sql_schema *syss = find_sql_schema(tr, "sys");
sql_table *objects = find_sql_table(tr, syss, "objects");
sqlstore *store = tr->store;
@@ -437,7 +446,7 @@ load_idxcolumn(sql_trans *tr, sql_idx *
static sql_idx *
load_idx(sql_trans *tr, sql_table *t, res_table *rt_idx, res_table
*rt_idxcols/*, oid rid*/)
{
- sql_idx *ni = SA_ZNEW(tr->sa, sql_idx);
+ sql_idx *ni = ZNEW(sql_idx);
sql_schema *syss = find_sql_schema(tr, "sys");
sql_table *idxs = find_sql_table(tr, syss, "idxs");
sql_table *objects = find_sql_table(tr, syss, "objects");
@@ -445,9 +454,9 @@ load_idx(sql_trans *tr, sql_table *t, re
sqlid iid = *(sqlid*)store->table_api.table_fetch_value(rt_idx,
find_sql_column(idxs, "id"));
str v = (char*)store->table_api.table_fetch_value(rt_idx,
find_sql_column(idxs, "name"));
- base_init(tr->sa, &ni->base, iid, 0, v);
+ base_init(NULL, &ni->base, iid, 0, v);
ni->type = (idx_type) *(int*)
store->table_api.table_fetch_value(rt_idx, find_sql_column(idxs, "type"));
- ni->columns = list_new(tr->sa, (fdestroy) &kc_destroy);
+ ni->columns = list_create((fdestroy) &kc_destroy);
ni->t = t;
ni->key = NULL;
ATOMIC_PTR_INIT(&ni->data, NULL);
@@ -467,7 +476,7 @@ load_idx(sql_trans *tr, sql_table *t, re
static void
load_triggercolumn(sql_trans *tr, sql_trigger * i, res_table *rt_triggercols)
{
- sql_kc *kc = SA_ZNEW(tr->sa, sql_kc);
+ sql_kc *kc = ZNEW(sql_kc);
sql_schema *syss = find_sql_schema(tr, "sys");
sql_table *objects = find_sql_table(tr, syss, "objects");
sqlstore *store = tr->store;
@@ -481,7 +490,7 @@ load_triggercolumn(sql_trans *tr, sql_tr
static sql_trigger *
load_trigger(sql_trans *tr, sql_table *t, res_table *rt_triggers, res_table
*rt_triggercols)
{
- sql_trigger *nt = SA_ZNEW(tr->sa, sql_trigger);
+ sql_trigger *nt = ZNEW(sql_trigger);
sql_schema *syss = find_sql_schema(tr, "sys");
sql_table *triggers = find_sql_table(tr, syss, "triggers");
sql_table *objects = find_sql_table(tr, syss, "objects");
@@ -489,7 +498,7 @@ load_trigger(sql_trans *tr, sql_table *t
sqlid tid = *(sqlid*)store->table_api.table_fetch_value(rt_triggers,
find_sql_column(triggers, "id"));
str v = (char*)store->table_api.table_fetch_value(rt_triggers,
find_sql_column(triggers, "name"));
- base_init(tr->sa, &nt->base, tid, 0, v);
+ base_init(NULL, &nt->base, tid, 0, v);
nt->time = *(sht*)store->table_api.table_fetch_value(rt_triggers,
find_sql_column(triggers, "time"));
nt->orientation =
*(sht*)store->table_api.table_fetch_value(rt_triggers,
find_sql_column(triggers, "orientation"));
@@ -497,19 +506,19 @@ load_trigger(sql_trans *tr, sql_table *t
v = (char*)store->table_api.table_fetch_value(rt_triggers,
find_sql_column(triggers, "old_name"));
if (!strNil(v))
- nt->old_name = SA_STRDUP(tr->sa, v);
+ nt->old_name =_STRDUP(v);
v = (char*)store->table_api.table_fetch_value(rt_triggers,
find_sql_column(triggers, "new_name"));
if (!strNil(v))
- nt->new_name = SA_STRDUP(tr->sa, v);
+ nt->new_name =_STRDUP(v);
v = (char*)store->table_api.table_fetch_value(rt_triggers,
find_sql_column(triggers, "condition"));
if (!strNil(v))
- nt->condition = SA_STRDUP(tr->sa, v);
+ nt->condition =_STRDUP(v);
v = (char*)store->table_api.table_fetch_value(rt_triggers,
find_sql_column(triggers, "statement"));
if (!strNil(v))
- nt->statement = SA_STRDUP(tr->sa, v);
+ nt->statement =_STRDUP(v);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]