Changeset: 6d23323f3452 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6d23323f3452
Modified Files:
gdk/gdk_value.c
monetdb5/mal/mal_dataflow.c
monetdb5/mal/mal_interpreter.c
sql/backends/monet5/UDF/capi/capi.c
sql/backends/monet5/sql_cast.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_result.c
sql/server/rel_dump.c
sql/server/sql_var.c
sql/storage/store.c
Branch: resource_management
Log Message:
WIP comment out GDKfree where needed
diffs (truncated from 395 to 300 lines):
diff --git a/gdk/gdk_value.c b/gdk/gdk_value.c
--- a/gdk/gdk_value.c
+++ b/gdk/gdk_value.c
@@ -130,10 +130,10 @@ VALget(ValPtr v)
void
VALclear(ValPtr v)
{
- if (v->allocated && !v->bat && ATOMextern(v->vtype)) {
- if (v->val.pval && v->val.pval != ATOMnilptr(v->vtype))
- GDKfree(v->val.pval);
- }
+ //if (v->allocated && !v->bat && ATOMextern(v->vtype)) {
+ // if (v->val.pval && v->val.pval != ATOMnilptr(v->vtype))
+ // GDKfree(v->val.pval);
+ //}
VALempty(v);
}
@@ -161,17 +161,19 @@ VALcopy(allocator *va, ValPtr d, const V
if (d == s) {
return d;
}
+ allocator *ma = va? va : MT_thread_getallocator();
+ assert(ma);
*d = *s;
- d->allocated = !va;
+ d->allocated = false;
if (s->bat || !ATOMextern(s->vtype)) {
//*d = *s;
} else if (s->val.pval == NULL) {
- return VALinit(va, d, s->vtype, ATOMnilptr(s->vtype));
+ return VALinit(ma, d, s->vtype, ATOMnilptr(s->vtype));
} else if (s->vtype == TYPE_str) {
const char *p = s->val.sval;
d->vtype = TYPE_str;
d->len = strLen(p);
- d->val.sval = va?ma_alloc(va, d->len):GDKmalloc(d->len);
+ d->val.sval = ma_alloc(ma, d->len);
if (d->val.sval == NULL)
return NULL;
memcpy(d->val.sval, p, d->len);
@@ -179,7 +181,7 @@ VALcopy(allocator *va, ValPtr d, const V
const void *p = s->val.pval;
d->vtype = s->vtype;
d->len = ATOMlen(d->vtype, p);
- d->val.pval = va?ma_alloc(va, d->len):GDKmalloc(d->len);
+ d->val.pval = ma_alloc(ma, d->len);
if (d->val.pval == NULL)
return NULL;
memcpy(d->val.pval, p, d->len);
@@ -196,8 +198,10 @@ VALcopy(allocator *va, ValPtr d, const V
ValPtr
VALinit(allocator *va, ValPtr d, int tpe, const void *s)
{
+ allocator *ma = va? va : MT_thread_getallocator();
+ assert(ma);
d->bat = false;
- d->allocated = !va;
+ d->allocated = false;
switch (ATOMstorage(d->vtype = tpe)) {
case TYPE_void:
d->val.oval = *(const oid *) s;
@@ -233,7 +237,7 @@ VALinit(allocator *va, ValPtr d, int tpe
break;
case TYPE_str:
d->len = strLen(s);
- d->val.sval = va?ma_alloc(va, d->len):GDKmalloc(d->len);
+ d->val.sval = ma_alloc(ma, d->len);
if (d->val.sval == NULL)
return NULL;
memcpy(d->val.sval, s, d->len);
@@ -245,7 +249,7 @@ VALinit(allocator *va, ValPtr d, int tpe
default:
assert(ATOMextern(ATOMstorage(tpe)));
d->len = ATOMlen(tpe, s);
- d->val.pval = va?ma_alloc(va, d->len):GDKmalloc(d->len);
+ d->val.pval = ma_alloc(ma, d->len);
if (d->val.pval == NULL)
return NULL;
memcpy(d->val.pval, s, d->len);
diff --git a/monetdb5/mal/mal_dataflow.c b/monetdb5/mal/mal_dataflow.c
--- a/monetdb5/mal/mal_dataflow.c
+++ b/monetdb5/mal/mal_dataflow.c
@@ -338,7 +338,7 @@ DFLOWworker(void *T)
allocator *pa = flow->mb->ma;
allocator *ta = ma_create(pa);
- MT_thread_setallocator(ta);
+ MT_thread_setallocator(pa);
error = runMALsequence(ta, flow->cntxt, flow->mb,
fe->pc, fe->pc + 1,
flow->stk,
0, 0);
MT_thread_setallocator(NULL);
diff --git a/monetdb5/mal/mal_interpreter.c b/monetdb5/mal/mal_interpreter.c
--- a/monetdb5/mal/mal_interpreter.c
+++ b/monetdb5/mal/mal_interpreter.c
@@ -896,8 +896,8 @@ runMALsequence(allocator *tmp_alloc, Cli
lhs->val.pval &&
lhs->val.pval != ATOMnilptr(lhs->vtype)
&&
lhs->val.pval != stk->stk[getArg(pci,
i)].val.pval) {
- if (lhs->allocated)
- GDKfree(lhs->val.pval);
+ //if (lhs->allocated)
+ // GDKfree(lhs->val.pval);
}
}
if (ATOMIC_GET(&GDKdebug) & CHECKMASK && exceptionVar <
0) {
@@ -994,7 +994,7 @@ runMALsequence(allocator *tmp_alloc, Cli
if (v->val.sval && v->allocated)
freeException(v->val.sval); /* old
exception */
VALset(v, TYPE_str, ret);
- v->allocated = true;
+ //v->allocated = true;
ret = MAL_SUCCEED;
MT_lock_unset(&mal_contextLock);
} else {
@@ -1431,11 +1431,11 @@ garbageElement(Client cntxt, ValPtr v)
BBPcold(bid);
BBPrelease(bid);
} else if (v->allocated && !v->bat && ATOMstorage(v->vtype) ==
TYPE_str) {
- GDKfree(v->val.sval);
+ // GDKfree(v->val.sval);
v->val.sval = NULL;
v->len = 0;
} else if (v->allocated && 0 < v->vtype && v->vtype < MAXATOMS &&
ATOMextern(v->vtype)) {
- GDKfree(v->val.pval);
+ // GDKfree(v->val.pval);
v->val.pval = 0;
v->len = 0;
}
diff --git a/sql/backends/monet5/UDF/capi/capi.c
b/sql/backends/monet5/UDF/capi/capi.c
--- a/sql/backends/monet5/UDF/capi/capi.c
+++ b/sql/backends/monet5/UDF/capi/capi.c
@@ -1546,16 +1546,16 @@ static str CUDFeval(Client cntxt, MalBlk
appended_element = element;
}
if (BUNappend(b, appended_element,
false) != GDK_SUCCEED) {
- if (element) {
- GDKfree(element);
- }
+ //if (element) {
+ // GDKfree(element);
+ //}
msg = createException(MAL,
"cudf.eval", MAL_MALLOC_FAIL);
goto wrapup;
}
}
- if (element) {
- GDKfree(element);
- }
+ //if (element) {
+ // GDKfree(element);
+ //}
GDKfree(data);
}
}
diff --git a/sql/backends/monet5/sql_cast.c b/sql/backends/monet5/sql_cast.c
--- a/sql/backends/monet5/sql_cast.c
+++ b/sql/backends/monet5/sql_cast.c
@@ -81,20 +81,17 @@ SQLstr_cast(Client cntxt, MalBlkPtr mb,
throw(SQL, "calc.str_cast", SQLSTATE(22001) "value too
long for type (var)char(%d)", digits);
} else {
size_t rlen = MAX(str_buf_initial_capacity(eclass, digits),
strlen(str_nil) + 1); /* don't reallocate on str_nil */
- // NOTE don't use allocator here
- // later SQLstr_cast_any_type in gdk layer
- // may re-allocate/free str
- if (!(r = GDKmalloc(rlen)))
+ if (!(r = sa_alloc(mb->ma, rlen)))
throw(SQL, "calc.str_cast", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
if ((msg = SQLstr_cast_any_type(&r, &rlen, m, eclass, d, s,
has_tz, p, tpe, digits)) != MAL_SUCCEED) {
- GDKfree(r);
+ // GDKfree(r);
return msg;
}
}
- *res = SA_STRDUP(cntxt->alloc, r);
- if (!from_str)
- GDKfree(r);
+ *res = SA_STRDUP(mb->ma, r);
+ //if (!from_str)
+ // GDKfree(r);
if (!*res)
throw(SQL, "calc.str_cast", SQLSTATE(HY013) MAL_MALLOC_FAIL);
return MAL_SUCCEED;
@@ -180,7 +177,7 @@ SQLbatstr_cast(Client cntxt, MalBlkPtr m
rlen = MAX(str_buf_initial_capacity(eclass, digits), strlen(str_nil) +
1); /* don't reallocate on str_nil */
assert(rlen > 0);
- if (!from_str && !(r = GDKmalloc(rlen))) {
+ if (!from_str && !(r = sa_alloc(mb->ma, rlen))) {
msg = createException(SQL, "batcalc.str_cast", SQLSTATE(HY013)
MAL_MALLOC_FAIL);
goto bailout1;
}
@@ -261,7 +258,7 @@ bailout1:
bat_iterator_end(&bi);
bailout:
- GDKfree(r);
+ //GDKfree(r);
BBPreclaim(b);
BBPreclaim(s);
if (dst && !msg) {
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
@@ -317,7 +317,7 @@ alter_table_add_range_partition(mvc *sql
goto finish;
}
if (!ATOMcmp(tp1, nil,
err->part.range.minvalue)) {
- if (!(conflict_err_min =
GDKstrdup("absolute min value")))
+ if (!(conflict_err_min =
SA_STRDUP(sql->sa, "absolute min value")))
msg =
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(HY013)
MAL_MALLOC_FAIL);
} else if (atomtostr(&conflict_err_min,
&length, err->part.range.minvalue, true) < 0) {
msg =
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(HY013)
MAL_MALLOC_FAIL);
@@ -326,7 +326,7 @@ alter_table_add_range_partition(mvc *sql
goto finish;
if (!ATOMcmp(tp1, nil,
err->part.range.maxvalue)) {
- if (!(conflict_err_max =
GDKstrdup("absolute max value")))
+ if (!(conflict_err_max =
SA_STRDUP(sql->sa, "absolute max value")))
msg =
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(HY013)
MAL_MALLOC_FAIL);
} else if (atomtostr(&conflict_err_max,
&length, err->part.range.maxvalue, true) < 0) {
msg =
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(HY013)
MAL_MALLOC_FAIL);
@@ -335,7 +335,7 @@ alter_table_add_range_partition(mvc *sql
goto finish;
if (!ATOMcmp(tp1, nil, min)) {
- if (!(err_min = GDKstrdup("absolute min
value")))
+ if (!(err_min = SA_STRDUP(sql->sa,
"absolute min value")))
msg =
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(HY013)
MAL_MALLOC_FAIL);
} else if (atomtostr(&err_min, &length, min,
true) < 0) {
msg =
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(HY013)
MAL_MALLOC_FAIL);
@@ -344,7 +344,7 @@ alter_table_add_range_partition(mvc *sql
goto finish;
if (!ATOMcmp(tp1, nil, max)) {
- if (!(err_max = GDKstrdup("absolute max
value")))
+ if (!(err_max = SA_STRDUP(sql->sa,
"absolute max value")))
msg =
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(HY013)
MAL_MALLOC_FAIL);
} else if (atomtostr(&err_max, &length, max,
true) < 0) {
msg =
createException(SQL,"sql.alter_table_add_range_partition",SQLSTATE(HY013)
MAL_MALLOC_FAIL);
@@ -362,14 +362,14 @@ alter_table_add_range_partition(mvc *sql
}
finish:
- if (err_min)
- GDKfree(err_min);
- if (err_max)
- GDKfree(err_max);
- if (conflict_err_min)
- GDKfree(conflict_err_min);
- if (conflict_err_max)
- GDKfree(conflict_err_max);
+ //if (err_min)
+ // GDKfree(err_min);
+ //if (err_max)
+ // GDKfree(err_max);
+ //if (conflict_err_min)
+ // GDKfree(conflict_err_min);
+ //if (conflict_err_max)
+ // GDKfree(conflict_err_max);
return msg;
}
diff --git a/sql/backends/monet5/sql_result.c b/sql/backends/monet5/sql_result.c
--- a/sql/backends/monet5/sql_result.c
+++ b/sql/backends/monet5/sql_result.c
@@ -205,8 +205,8 @@ sql_timestamp_tostr(void *TS_RES, char *
len1 = date_tostr(&s1, &big, &days, true);
len2 = daytime_precision_tostr(&s2, &big, usecs, ts_res->fraction,
true);
if (len1 < 0 || len2 < 0) {
- GDKfree(s1);
- GDKfree(s2);
+ //GDKfree(s1);
+ //GDKfree(s2);
return -1;
}
@@ -1272,8 +1272,10 @@ mvc_export_table_(mvc *m, int output_for
as.nr_attrs = t->nr_cols + 1; /* for the leader */
as.nr = nr;
as.offset = offset;
- fmt = as.format = (Column *) sa_zalloc(m->sa, sizeof(Column) *
(as.nr_attrs + 1));
- tres = sa_zalloc(m->sa, sizeof(struct time_res) * (as.nr_attrs));
+ allocator *sa = m->sa ? m->sa : MT_thread_getallocator();
+ assert(sa);
+ fmt = as.format = (Column *) sa_zalloc(sa, sizeof(Column) *
(as.nr_attrs + 1));
+ tres = sa_zalloc(sa, sizeof(struct time_res) * (as.nr_attrs));
if (fmt == NULL || tres == NULL) {
//GDKfree(fmt);
//GDKfree(tres);
@@ -1320,13 +1322,13 @@ mvc_export_table_(mvc *m, int output_for
* represented as a json object.
*/
if (i == 1) {
- bj = SA_NEW_ARRAY(m->sa, char, strlen(p->name)
+ strlen(btag));
+ bj = SA_NEW_ARRAY(sa, char, strlen(p->name) +
strlen(btag));
snprintf(bj, strlen(p->name) + strlen(btag),
btag, p->name);
fmt[i - 1].sep = bj;
fmt[i - 1].seplen = _strlen(fmt[i - 1].sep);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]