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]

Reply via email to