Changeset: 6e71169125b3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/6e71169125b3
Modified Files:
        clients/Tests/exports.stable.out
        monetdb5/modules/atoms/json.c
        monetdb5/modules/atoms/json.h
        monetdb5/modules/mal/tablet.c
        monetdb5/modules/mal/tablet.h
        sql/backends/monet5/sql_result.c
        sql/backends/monet5/vaults/odbc/odbc_loader.c
        sql/server/rel_basetable.c
        sql/server/rel_dump.c
        sql/server/rel_exp.c
        sql/server/rel_prop.c
        sql/server/rel_prop.h
        sql/server/rel_unnest.c
        sql/server/sql_parser.y
        sql/storage/store.c
Branch: nested
Log Message:

merge default


diffs (truncated from 4128 to 300 lines):

diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -9,7 +9,7 @@ int ATOMindex(const char *nme);
 size_t ATOMlen(int id, const void *v);
 const char *ATOMname(int id);
 void *ATOMnil(int id) __attribute__((__malloc__));
-int ATOMprint(allocator *ma, int id, const void *val, stream *fd);
+int ATOMprint(int id, const void *val, stream *fd);
 gdk_return BATaggrdigest(allocator *ma, BAT **bnp, char **shap, const char 
*digest, BAT *b, BAT *g, BAT *e, BAT *s, bool skip_nils);
 BAT *BATall_grp(BAT *l, BAT *g, BAT *e, BAT *s);
 BAT *BATallnotequal_grp(BAT *l, BAT *r, BAT *g, BAT *e, BAT *s);
@@ -820,7 +820,7 @@ BUN SQLload_file(Client cntxt, Tablet *a
 str TABLETcollect(BAT **bats, Tablet *as);
 str TABLETcreate_bats(Tablet *as, BUN est);
 void TABLETdestroy_format(Tablet *as);
-int TABLEToutput_file(allocator *ma, Tablet *as, BAT *order, stream *s, 
bstream *in);
+int TABLEToutput_file(Tablet *as, BAT *order, stream *s, bstream *in);
 int TRACEtable(Client cntxt, BAT **r);
 int TYPE_xml;
 int UTF8_strlen(const char *s);
@@ -841,6 +841,7 @@ const char alter_set_tableRef[];
 const char alter_tableRef[];
 const char alter_userRef[];
 const char appendBulkRef[];
+str appendException(enum malexception, const char *, _In_z_ 
_Printf_format_string_ const char *, ...) __attribute__((__malloc__)) 
__attribute__((__format__(__printf__, 3, 4))) 
__attribute__((__returns_nonnull__));
 const char appendRef[];
 const char assertRef[];
 const char avgRef[];
@@ -888,11 +889,10 @@ const char columnBindRef[];
 const char comment_onRef[];
 str compileString(Symbol *fcn, Client c, str s);
 const char compressRef[];
-char *concatErrors(allocator *ma, char *err1, const char *err2) 
__attribute__((__nonnull__(1, 2))) __attribute__((__returns_nonnull__));
+char *concatErrors(const char *err1, const char *err2) 
__attribute__((__nonnull__(1, 2))) __attribute__((__returns_nonnull__));
 const char connectRef[];
 const char containsRef[];
 str convertConstant(allocator *ma, malType type, ValPtr vr);
-str copyException(allocator *, const char *);
 InstrPtr copyInstruction(MalBlkPtr mb, const InstrRecord *p);
 InstrPtr copyInstructionArgs(MalBlkPtr mb, const InstrRecord *p, int args);
 MalBlkPtr copyMalBlk(MalBlkPtr mb);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1760,7 +1760,7 @@ gdk_export char *ma_strndup(allocator *s
 gdk_export char *ma_strdup(allocator *sa, const char *s);
 gdk_export char *ma_strconcat(allocator *sa, const char *s1, const char *s2);
 gdk_export size_t ma_size(allocator *sa);
-gdk_export const char* ma_name(allocator *sa);
+gdk_export const char *ma_name(allocator *sa);
 gdk_export allocator_state ma_open(allocator *sa);  /* open new frame of 
tempory allocations */
 gdk_export void ma_close(allocator *sa, const allocator_state *); /* close 
temporary frame, reset to old state */
 gdk_export void ma_free(allocator *sa, void *);
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -380,30 +380,32 @@ ATOMheap(int t, Heap *hp, size_t cap)
 #define LINE_LEN       60
 
 int
-ATOMprint(allocator *ma, int t, const void *p, stream *s)
+ATOMprint(int t, const void *p, stream *s)
 {
        ssize_t (*tostr) (allocator *ma, char **, size_t *, const void *, bool);
        ssize_t res;
 
        if (p && t >= 0 && t < GDKatomcnt && (tostr = BATatoms[t].atomToStr)) {
                size_t sz;
+               allocator *ta = MT_thread_getallocator();
+               allocator_state ta_state = ma_open(ta);
 
                if (t < TYPE_date) {
                        char buf[dblStrlen], *addr = buf;       /* use memory 
from stack */
 
                        sz = dblStrlen;
-                       res = (*tostr) (ma, &addr, &sz, p, true);
+                       res = (*tostr) (ta, &addr, &sz, p, true);
                        if (res > 0)
                                res = mnstr_write(s, buf, (size_t) res, 1);
                } else {
                        str buf = NULL;
 
                        sz = 0;
-                       res = (*tostr) (ma, &buf, &sz, p, true);
+                       res = (*tostr) (ta, &buf, &sz, p, true);
                        if (res > 0)
                                res = mnstr_write(s, buf, (size_t) res, 1);
-                       // GDKfree(buf);
                }
+               ma_close(ta, &ta_state);
        } else {
                res = mnstr_write(s, "nil", 1, 3);
        }
diff --git a/gdk/gdk_atoms.h b/gdk/gdk_atoms.h
--- a/gdk/gdk_atoms.h
+++ b/gdk/gdk_atoms.h
@@ -74,7 +74,7 @@ gdk_export const char *ATOMname(int id);
 gdk_export size_t ATOMlen(int id, const void *v);
 gdk_export void *ATOMnil(int id)
        __attribute__((__malloc__));
-gdk_export int ATOMprint(allocator *ma, int id, const void *val, stream *fd);
+gdk_export int ATOMprint(int id, const void *val, stream *fd);
 gdk_export char *ATOMformat(allocator *ma, int id, const void *val)
        __attribute__((__warn_unused_result__));
 
diff --git a/gdk/gdk_calc_convert.c b/gdk/gdk_calc_convert.c
--- a/gdk/gdk_calc_convert.c
+++ b/gdk/gdk_calc_convert.c
@@ -661,7 +661,7 @@ convertimpl_msk(flt)
 convertimpl_msk(dbl)
 
 static BUN
-convert_any_str(allocator *ma, BATiter *bi, BAT *bn, struct canditer *restrict 
ci)
+convert_any_str(BATiter *bi, BAT *bn, struct canditer *restrict ci)
 {
        int tp = bi->type;
        oid candoff = bi->b->hseqbase;
@@ -674,6 +674,8 @@ convert_any_str(allocator *ma, BATiter *
        ssize_t (*atomtostr)(allocator *ma, str *, size_t *, const void *, 
bool) = BATatoms[tp].atomToStr;
        bool (*atomeq)(const void *, const void *) = ATOMequal(tp);
        oid x;
+       allocator *ta = MT_thread_getallocator();
+       allocator_state ta_state = ma_open(ta);
 
        QryCtx *qry_ctx = MT_thread_get_qry_ctx();
 
@@ -700,7 +702,7 @@ convert_any_str(allocator *ma, BATiter *
                                        goto bailout;
                                }
                        } else {
-                               if ((*atomtostr)(ma, &dst, &len, src, false) < 
0 ||
+                               if ((*atomtostr)(ta, &dst, &len, src, false) < 
0 ||
                                    tfastins_nocheckVAR(bn, i, dst) != 
GDK_SUCCEED) {
                                        goto bailout;
                                }
@@ -723,24 +725,24 @@ convert_any_str(allocator *ma, BATiter *
                                if (tfastins_nocheckVAR(bn, i, str_nil) != 
GDK_SUCCEED)
                                        goto bailout;
                        } else {
-                               if ((*atomtostr)(ma, &dst, &len, src, false) < 
0)
+                               if ((*atomtostr)(ta, &dst, &len, src, false) < 
0)
                                        goto bailout;
                                if (tfastins_nocheckVAR(bn, i, dst) != 
GDK_SUCCEED)
                                        goto bailout;
                        }
                }
        }
-       // GDKfree(dst);
+       ma_close(ta, &ta_state);
        TIMEOUT_CHECK(qry_ctx, TIMEOUT_HANDLER(BUN_NONE, qry_ctx));
        BATsetcount(bn, ci->ncand);
        return nils;
   bailout:
-       // GDKfree(dst);
+       ma_close(ta, &ta_state);
        return BUN_NONE + 2;
 }
 
 static BUN
-convert_str_var(allocator *ma, BATiter *bi, BAT *bn, struct canditer *restrict 
ci)
+convert_str_var(BATiter *bi, BAT *bn, struct canditer *restrict ci)
 {
        int tp = bn->ttype;
        oid candoff = bi->b->hseqbase;
@@ -752,6 +754,8 @@ convert_str_var(allocator *ma, BATiter *
        const char *restrict src;
        ssize_t (*atomfromstr)(allocator *ma, const char *, size_t *, ptr *, 
bool) = BATatoms[tp].atomFromStr;
        oid x;
+       allocator *ta = MT_thread_getallocator();
+       allocator_state ta_state = ma_open(ta);
 
        QryCtx *qry_ctx = MT_thread_get_qry_ctx();
 
@@ -765,24 +769,24 @@ convert_str_var(allocator *ma, BATiter *
                        }
                } else {
                        ssize_t l;
-                       if ((l = (*atomfromstr)(ma, src, &len, &dst, false)) < 
0 ||
+                       if ((l = (*atomfromstr)(ta, src, &len, &dst, false)) < 
0 ||
                            l < (ssize_t) strlen(src) ||
                            tfastins_nocheckVAR(bn, i, dst) != GDK_SUCCEED) {
                                goto bailout;
                        }
                }
        }
-       // GDKfree(dst);
+       ma_close(ta, &ta_state);
        TIMEOUT_CHECK(qry_ctx, TIMEOUT_HANDLER(BUN_NONE, qry_ctx));
        BATsetcount(bn, ci->ncand);
        return nils;
   bailout:
-       // GDKfree(dst);
+       ma_close(ta, &ta_state);
        return BUN_NONE + 2;
 }
 
 static BUN
-convert_str_fix(allocator *ma, BATiter *bi, int tp, void *restrict dst,
+convert_str_fix(BATiter *bi, int tp, void *restrict dst,
                struct canditer *restrict ci, oid candoff)
 {
        BUN nils = 0;
@@ -822,6 +826,8 @@ convert_str_fix(allocator *ma, BATiter *
        }
 
        bool (*atomeq)(const void *, const void *) = ATOMequal(tp);
+       allocator *ta = MT_thread_getallocator();
+       allocator_state ta_state = ma_open(ta);
        TIMEOUT_LOOP(ci->ncand, qry_ctx) {
                oid x = canditer_next(ci) - candoff;
                const char *s = BUNtvar(*bi, x);
@@ -830,7 +836,7 @@ convert_str_fix(allocator *ma, BATiter *
                        nils++;
                } else {
                        void *d = dst;
-                       if ((l = (*atomfromstr)(ma, s, &len, &d, false)) < 0 ||
+                       if ((l = (*atomfromstr)(ta, s, &len, &d, false)) < 0 ||
                            l < (ssize_t) strlen(s)) {
                                goto conversion_failed;
                        }
@@ -840,6 +846,7 @@ convert_str_fix(allocator *ma, BATiter *
                }
                dst = (void *) ((char *) dst + len);
        }
+       ma_close(ta, &ta_state);
        TIMEOUT_CHECK(qry_ctx, TIMEOUT_HANDLER(BUN_NONE, qry_ctx));
        return nils;
 
@@ -867,7 +874,7 @@ convert_str_fix(allocator *ma, BATiter *
 }
 
 static BUN
-convert_void_any(allocator *ma, oid seq, BAT *bn,
+convert_void_any(oid seq, BAT *bn,
                 struct canditer *restrict ci,
                 oid candoff, bool *reduce)
 {
@@ -876,8 +883,6 @@ convert_void_any(allocator *ma, oid seq,
        int tp = bn->ttype;
        void *restrict dst = Tloc(bn, 0);
        ssize_t (*atomtostr)(allocator *ma, str *, size_t *, const void *, 
bool) = BATatoms[TYPE_oid].atomToStr;
-       char *s = NULL;
-       size_t len = 0;
        oid x;
 
        QryCtx *qry_ctx = MT_thread_get_qry_ctx();
@@ -953,17 +958,22 @@ convert_void_any(allocator *ma, oid seq,
                        ((dbl *) dst)[i] = (dbl) (seq + x);
                }
                break;
-       case TYPE_str:
+       case TYPE_str: {
+               allocator *ta = MT_thread_getallocator();
+               allocator_state ta_state = ma_open(ta);
+               char *s = NULL;
+               size_t len = 0;
                TIMEOUT_LOOP_IDX(i, ci->ncand, qry_ctx) {
                        x = canditer_next(ci) - candoff;
-                       if ((*atomtostr)(ma, &s, &len, &(oid){seq + x}, false) 
< 0)
-                               goto bailout;
-                       if (tfastins_nocheckVAR(bn, i, s) != GDK_SUCCEED)
+                       if ((*atomtostr)(ta, &s, &len, &(oid){seq + x}, false) 
< 0 ||
+                           tfastins_nocheckVAR(bn, i, s) != GDK_SUCCEED) {
+                               ma_close(ta, &ta_state);
                                goto bailout;
+                       }
                }
-               GDKfree(s);
-               s = NULL;
+               ma_close(ta, &ta_state);
                break;
+       }
        default:
                return BUN_NONE + 1;
        }
@@ -973,12 +983,11 @@ convert_void_any(allocator *ma, oid seq,
        return nils;
 
   bailout:
-       GDKfree(s);
        return BUN_NONE + 2;
 }
 
 static BUN
-convert_inet6_inet4(allocator *ma, const inet6 *src, inet4 *restrict dst,
+convert_inet6_inet4(const inet6 *src, inet4 *restrict dst,
                    struct canditer *restrict ci,
                    oid candoff)
 {
@@ -1015,11 +1024,14 @@ convert_inet6_inet4(allocator *ma, const
                                        .quad[3] = src[x].hex[15],
                                };
                        } else {
+                               allocator *ta = MT_thread_getallocator();
+                               allocator_state ta_state = ma_open(ta);
                                char buf[40], *s = buf;
                                size_t l = sizeof(buf);
-                               BATatoms[TYPE_inet6].atomToStr(ma, &s, &l, 
&src[x], false);
+                               BATatoms[TYPE_inet6].atomToStr(ta, &s, &l, 
&src[x], false);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to