Changeset: c442c0021171 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/c442c0021171 Modified Files: sql/backends/monet5/sql_statement.c sql/server/rel_select.c sql/server/rel_updates.c Branch: default Log Message:
Merge resource_management branch into default. diffs (truncated from 50136 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 @@ -3,13 +3,13 @@ int ALIGNsynced(BAT *b1, BAT *b2); int ATOMallocate(const char *nme); void *ATOMdup(int id, const void *val); uint8_t ATOMelmshift(int sz) __attribute__((__const__)); -char *ATOMformat(int id, const void *val) __attribute__((__warn_unused_result__)); +char *ATOMformat(allocator *ma, int id, const void *val) __attribute__((__warn_unused_result__)); gdk_return ATOMheap(int id, Heap *hp, size_t cap) __attribute__((__warn_unused_result__)); 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(int id, const void *val, stream *fd); +int ATOMprint(allocator *ma, int id, const void *val, stream *fd); BAT *BATall_grp(BAT *l, BAT *g, BAT *e, BAT *s); BAT *BATallnotequal_grp(BAT *l, BAT *r, BAT *g, BAT *e, BAT *s); BAT *BATallnotequal_grp2(BAT *l, BAT *r, BAT *rid, BAT *g, BAT *e, BAT *s); @@ -161,10 +161,10 @@ gdk_return BATleftjoin(BAT **r1p, BAT ** gdk_return BATmarkjoin(BAT **r1p, BAT **r2p, BAT **r3p, BAT *l, BAT *r, BAT *sl, BAT *sr, bool nil_matches, BUN estimate) __attribute__((__access__(write_only, 1))) __attribute__((__access__(write_only, 2))) __attribute__((__access__(write_only, 3))) __attribute__((__warn_unused_result__)); BAT *BATmaskedcands(oid hseq, BUN nr, BAT *masked, bool selected); void *BATmax(BAT *b, void *aggr); -void *BATmax_skipnil(BAT *b, void *aggr, bit skipnil); +void *BATmax_skipnil(allocator *alloc, BAT *b, void *aggr, bit skipnil); BAT *BATmergecand(BAT *a, BAT *b); void *BATmin(BAT *b, void *aggr); -void *BATmin_skipnil(BAT *b, void *aggr, bit skipnil); +void *BATmin_skipnil(allocator *alloc, BAT *b, void *aggr, bit skipnil); gdk_return BATmode(BAT *b, bool transient); BAT *BATnegcands(oid tseq, BUN nr, BAT *odels); BAT *BATnil_grp(BAT *l, BAT *g, BAT *e, BAT *s); @@ -173,8 +173,8 @@ bool BATordered_rev(BAT *b); gdk_return BATorderidx(BAT *b, bool stable); gdk_return BAToutercross(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, bool max_one) __attribute__((__access__(write_only, 1))) __attribute__((__access__(write_only, 2))) __attribute__((__warn_unused_result__)); gdk_return BATouterjoin(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, bool nil_matches, bool match_one, BUN estimate) __attribute__((__access__(write_only, 1))) __attribute__((__access__(write_only, 2))) __attribute__((__warn_unused_result__)); -gdk_return BATprint(stream *s, BAT *b); -gdk_return BATprintcolumns(stream *s, int argc, BAT *argv[]); +gdk_return BATprint(allocator *ma, stream *s, BAT *b); +gdk_return BATprintcolumns(allocator *ma, stream *s, int argc, BAT *argv[]); gdk_return BATprod(void *res, int tp, BAT *b, BAT *s, bool skip_nils, bool nil_if_empty); BAT *BATproject(BAT *restrict l, BAT *restrict r); BAT *BATproject2(BAT *restrict l, BAT *restrict r1, BAT *restrict r2); @@ -197,7 +197,7 @@ ValPtr BATsetprop_nolock(BAT *b, enum pr gdk_return BATsetstrimps(BAT *b); BAT *BATslice(BAT *b, BUN low, BUN high); gdk_return BATsort(BAT **sorted, BAT **order, BAT **groups, BAT *b, BAT *o, BAT *g, bool reverse, bool nilslast, bool stable) __attribute__((__access__(write_only, 1))) __attribute__((__access__(write_only, 2))) __attribute__((__access__(write_only, 3))) __attribute__((__warn_unused_result__)); -gdk_return BATstr_group_concat(ValPtr res, BAT *b, BAT *s, BAT *sep, bool skip_nils, bool nil_if_empty, const char *restrict separator); +gdk_return BATstr_group_concat(allocator *ma, ValPtr res, BAT *b, BAT *s, BAT *sep, bool skip_nils, bool nil_if_empty, const char *restrict separator); gdk_return BATsubcross(BAT **r1p, BAT **r2p, BAT *l, BAT *r, BAT *sl, BAT *sr, bool max_one) __attribute__((__access__(write_only, 1))) __attribute__((__access__(write_only, 2))) __attribute__((__warn_unused_result__)); BAT *BATsubexist(BAT *l, BAT *g, BAT *e, BAT *s); BAT *BATsubnot_exist(BAT *l, BAT *g, BAT *e, BAT *s); @@ -383,6 +383,7 @@ void MT_sleep_ms(unsigned int ms); void MT_thread_deregister(void); QryCtx *MT_thread_get_qry_ctx(void); const char *MT_thread_getalgorithm(void); +allocator *MT_thread_getallocator(void); void *MT_thread_getdata(void); const char *MT_thread_getname(void); bool MT_thread_init(void); @@ -390,6 +391,7 @@ gdk_return MT_thread_init_add_callback(v bool MT_thread_register(void); void MT_thread_set_qry_ctx(QryCtx *ctx); void MT_thread_setalgorithm(const char *algo); +void MT_thread_setallocator(allocator *ma); void MT_thread_setdata(void *data); void MT_thread_setlockwait(MT_Lock *lock); void MT_thread_setsemawait(MT_Sema *sema); @@ -397,8 +399,8 @@ void MT_thread_setworking(const char *wo void *MT_tls_get(MT_TLS_t key); void MT_tls_set(MT_TLS_t key, void *val); void OIDXdestroy(BAT *b); -ssize_t OIDfromStr(const char *src, size_t *len, oid **dst, bool external); -ssize_t OIDtoStr(str *dst, size_t *len, const oid *src, bool external); +ssize_t OIDfromStr(allocator *ma, const char *src, size_t *len, oid **dst, bool external); +ssize_t OIDtoStr(allocator *ma, str *dst, size_t *len, const oid *src, bool external); BUN ORDERfnd(BAT *b, Heap *oidxh, const void *v); BUN ORDERfndfirst(BAT *b, Heap *oidxh, const void *v); BUN ORDERfndlast(BAT *b, Heap *oidxh, const void *v); @@ -417,12 +419,12 @@ bool THRhighwater(void); gdk_return TMsubcommit_list(bat *restrict subcommit, BUN *restrict sizes, int cnt, lng logno) __attribute__((__warn_unused_result__)); void VALclear(ValPtr v); int VALcmp(const ValRecord *p, const ValRecord *q); -void *VALconvert(int typ, ValPtr t); -ValPtr VALcopy(ValPtr dst, const ValRecord *src) __attribute__((__access__(write_only, 1))); +void *VALconvert(allocator *ma, int typ, ValPtr t); +ValPtr VALcopy(allocator *va, ValPtr dst, const ValRecord *src) __attribute__((__access__(write_only, 1))); void VALempty(ValPtr v) __attribute__((__access__(write_only, 1))); -char *VALformat(const ValRecord *res) __attribute__((__warn_unused_result__)); +char *VALformat(allocator *ma, const ValRecord *res) __attribute__((__warn_unused_result__)); void *VALget(ValPtr v); -ValPtr VALinit(ValPtr d, int tpe, const void *s) __attribute__((__access__(write_only, 1))); +ValPtr VALinit(allocator *va, ValPtr d, int tpe, const void *s) __attribute__((__access__(write_only, 1))); bool VALisnil(const ValRecord *v); ValPtr VALset(ValPtr v, int t, void *p); gdk_return VARcalcabsolute(ValPtr ret, const ValRecord *v); @@ -452,7 +454,7 @@ gdk_return VARcalcrsh(ValPtr ret, const gdk_return VARcalcsign(ValPtr ret, const ValRecord *v); gdk_return VARcalcsub(ValPtr ret, const ValRecord *lft, const ValRecord *rgt); gdk_return VARcalcxor(ValPtr ret, const ValRecord *lft, const ValRecord *rgt); -gdk_return VARconvert(ValPtr ret, const ValRecord *v, uint8_t scale1, uint8_t scale2, uint8_t precision); +gdk_return VARconvert(allocator *ma, ValPtr ret, const ValRecord *v, uint8_t scale1, uint8_t scale2, uint8_t precision); void VIEWbounds(BAT *b, BAT *view, BUN l, BUN h); BAT *VIEWcreate(oid seq, BAT *b, BUN l, BUN h); size_t _MT_npages; @@ -460,11 +462,11 @@ size_t _MT_pagesize; const union _dbl_nil_t _dbl_nil_; const union _flt_nil_t _flt_nil_; char *asctime_r(const struct tm *restrict, char *restrict); -ssize_t bitFromStr(const char *src, size_t *len, bit **dst, bool external); -ssize_t bitToStr(str *dst, size_t *len, const bit *src, bool external); +ssize_t bitFromStr(allocator *ma, const char *src, size_t *len, bit **dst, bool external); +ssize_t bitToStr(allocator *ma, str *dst, size_t *len, const bit *src, bool external); size_t blobsize(size_t nitems) __attribute__((__const__)); -ssize_t bteFromStr(const char *src, size_t *len, bte **dst, bool external); -ssize_t bteToStr(str *dst, size_t *len, const bte *src, bool external); +ssize_t bteFromStr(allocator *ma, const char *src, size_t *len, bte **dst, bool external); +ssize_t bteToStr(allocator *ma, str *dst, size_t *len, const bte *src, bool external); const bte bte_nil; oid canditer_idx(const struct canditer *ci, BUN p) __attribute__((__pure__)); void canditer_init(struct canditer *ci, BAT *b, BAT *s) __attribute__((__access__(write_only, 1))); @@ -480,6 +482,7 @@ BAT *canditer_slice(const struct candite BAT *canditer_slice2(const struct canditer *ci, BUN lo1, BUN hi1, BUN lo2, BUN hi2); BAT *canditer_slice2val(const struct canditer *ci, oid lo1, oid hi1, oid lo2, oid hi2); BAT *canditer_sliceval(const struct canditer *ci, oid lo, oid hi); +allocator *create_allocator(allocator *pa, const char *, bool use_lock); char *ctime_r(const time_t *restrict, char *restrict); date date_add_day(date dt, int days) __attribute__((__const__)); date date_add_month(date dt, int months) __attribute__((__const__)); @@ -490,10 +493,10 @@ bte date_dayofweek(date dt) __attribute_ sht date_dayofyear(date dt) __attribute__((__const__)); int date_decade(date dt) __attribute__((__const__)); int date_diff(date d1, date d2) __attribute__((__const__)); -ssize_t date_fromstr(const char *buf, size_t *len, date **d, bool external); +ssize_t date_fromstr(allocator *ma, const char *buf, size_t *len, date **d, bool external); bte date_month(date dt) __attribute__((__const__)); bte date_quarter(date dt) __attribute__((__const__)); -ssize_t date_tostr(str *buf, size_t *len, const date *val, bool external); +ssize_t date_tostr(allocator *ma, str *buf, size_t *len, const date *val, bool external); bte date_usweekofyear(date dt) __attribute__((__const__)); bte date_weekofyear(date dt) __attribute__((__const__)); int date_year(date dt) __attribute__((__const__)); @@ -501,17 +504,17 @@ daytime daytime_add_usec(daytime tm, lng daytime daytime_add_usec_modulo(daytime tm, lng usec) __attribute__((__const__)); daytime daytime_create(int hour, int minute, int second, int usec) __attribute__((__const__)); lng daytime_diff(daytime d1, daytime d2) __attribute__((__const__)); -ssize_t daytime_fromstr(const char *buf, size_t *len, daytime **d, bool external); +ssize_t daytime_fromstr(allocator *ma, const char *buf, size_t *len, daytime **d, bool external); bte daytime_hour(daytime tm) __attribute__((__const__)); bte daytime_min(daytime tm) __attribute__((__const__)); -ssize_t daytime_precision_tostr(str *buf, size_t *len, const daytime dt, int precision, bool external); +ssize_t daytime_precision_tostr(allocator *ma, str *buf, size_t *len, const daytime dt, int precision, bool external); int daytime_sec(daytime tm) __attribute__((__const__)); int daytime_sec_usec(daytime tm) __attribute__((__const__)); -ssize_t daytime_tostr(str *buf, size_t *len, const daytime *val, bool external); -ssize_t daytime_tz_fromstr(const char *buf, size_t *len, daytime **d, bool external); +ssize_t daytime_tostr(allocator *ma, str *buf, size_t *len, const daytime *val, bool external); +ssize_t daytime_tz_fromstr(allocator *ma, const char *buf, size_t *len, daytime **d, bool external); int daytime_usec(daytime tm) __attribute__((__const__)); -ssize_t dblFromStr(const char *src, size_t *len, dbl **dst, bool external); -ssize_t dblToStr(str *dst, size_t *len, const dbl *src, bool external); +ssize_t dblFromStr(allocator *ma, const char *src, size_t *len, dbl **dst, bool external); +ssize_t dblToStr(allocator *ma, str *dst, size_t *len, const dbl *src, bool external); const dbl dbl_nil; int dlclose(void *handle); char *dlerror(void); @@ -521,24 +524,25 @@ void *dlsym(void *handle, const char *na exception_buffer *eb_init(exception_buffer *eb) __attribute__((__access__(write_only, 1))); size_t escapedStr(char *restrict dst, const char *restrict src, size_t dstlen, const char *sep1, const char *sep2, int quote); size_t escapedStrlen(const char *restrict src, const char *sep1, const char *sep2, int quote); -ssize_t fltFromStr(const char *src, size_t *len, flt **dst, bool external); -ssize_t fltToStr(str *dst, size_t *len, const flt *src, bool external); +ssize_t fltFromStr(allocator *ma, const char *src, size_t *len, flt **dst, bool external); +ssize_t fltToStr(allocator *ma, str *dst, size_t *len, const flt *src, bool external); const flt flt_nil; gdk_return gdk_add_callback(const char *name, gdk_callback_func *f, int argc, void *argv[], int interval); gdk_return gdk_remove_callback(const char *, gdk_callback_func *f); bat getBBPsize(void); int gettimeofday(struct timeval *tv, int *ignore_zone); struct tm *gmtime_r(const time_t *restrict, struct tm *restrict); -ssize_t hgeFromStr(const char *src, size_t *len, hge **dst, bool external); -ssize_t hgeToStr(str *dst, size_t *len, const hge *src, bool external); +ssize_t hgeFromStr(allocator *ma, const char *src, size_t *len, hge **dst, bool external); +ssize_t hgeToStr(allocator *ma, str *dst, size_t *len, const hge *src, bool external); const hge hge_nil; +char *humansize(size_t val, char *buf, size_t buflen) __attribute__((__access__(write_only, 2, 3))); const inet4 inet4_nil; const inet6 inet6_nil; -ssize_t intFromStr(const char *src, size_t *len, int **dst, bool external); -ssize_t intToStr(str *dst, size_t *len, const int *src, bool external); +ssize_t intFromStr(allocator *ma, const char *src, size_t *len, int **dst, bool external); +ssize_t intToStr(allocator *ma, str *dst, size_t *len, const int *src, bool external); const int int_nil; -ssize_t lngFromStr(const char *src, size_t *len, lng **dst, bool external); -ssize_t lngToStr(str *dst, size_t *len, const lng *src, bool external); +ssize_t lngFromStr(allocator *ma, const char *src, size_t *len, lng **dst, bool external); +ssize_t lngToStr(allocator *ma, str *dst, size_t *len, const lng *src, bool external); const lng lng_nil; struct tm *localtime_r(const time_t *restrict, struct tm *restrict); gdk_return log_activate(logger *lg); @@ -561,6 +565,23 @@ gdk_return log_tflush(logger *lg, ulng l gdk_return log_tsequence(logger *lg, int seq, lng id); gdk_return log_tstart(logger *lg, bool flushnow, ulng *log_file_id); ATOMIC_TYPE lvl_per_component[]; +void *ma_alloc(allocator *sa, size_t sz); +void ma_close(allocator *sa, const allocator_state *); +void ma_destroy(allocator *sa); +void ma_free(allocator *sa, void *); +exception_buffer *ma_get_eb(allocator *sa) __attribute__((__pure__)); +allocator *ma_get_parent(const allocator *sa); +void ma_info(const allocator *sa, char *buf, size_t buflen); +const char *ma_name(allocator *sa); +allocator_state ma_open(allocator *sa); +void *ma_realloc(allocator *sa, void *ptr, size_t sz, size_t osz); +allocator *ma_reset(allocator *sa); +size_t ma_size(allocator *sa); +char *ma_strconcat(allocator *sa, const char *s1, const char *s2); +char *ma_strdup(allocator *sa, const char *s); +char *ma_strndup(allocator *sa, const char *s, size_t l); +bool ma_tmp_active(const allocator *sa); +void *ma_zalloc(allocator *sa, size_t sz); void *mdlopen(const char *library, int mode); int mo_add_option(opt **Set, int setlen, opt_kind kind, const char *name, const char *value); int mo_builtin_settings(opt **Set); @@ -569,26 +590,15 @@ void mo_free_options(opt *set, int setle void mo_print_options(opt *set, int setlen); int mo_system_config(opt **Set, int setlen); const oid oid_nil; -ssize_t ptrFromStr(const char *src, size_t *len, ptr **dst, bool external); -ssize_t ptrToStr(str *dst, size_t *len, const ptr *src, bool external); +ssize_t ptrFromStr(allocator *ma, const char *src, size_t *len, ptr **dst, bool external); +ssize_t ptrToStr(allocator *ma, str *dst, size_t *len, const ptr *src, bool external); const ptr ptr_nil; -void *sa_alloc(allocator *sa, size_t sz); -allocator *sa_create(allocator *pa); -void sa_destroy(allocator *sa); -exception_buffer *sa_get_eb(allocator *sa) __attribute__((__pure__)); -void *sa_realloc(allocator *sa, void *ptr, size_t sz, size_t osz); -allocator *sa_reset(allocator *sa); -size_t sa_size(allocator *sa); -char *sa_strconcat(allocator *sa, const char *s1, const char *s2); -char *sa_strdup(allocator *sa, const char *s); -char *sa_strndup(allocator *sa, const char *s, size_t l); -void *sa_zalloc(allocator *sa, size_t sz); -ssize_t shtFromStr(const char *src, size_t *len, sht **dst, bool external); -ssize_t shtToStr(str *dst, size_t *len, const sht *src, bool external); +ssize_t shtFromStr(allocator *ma, const char *src, size_t *len, sht **dst, bool external); +ssize_t shtToStr(allocator *ma, str *dst, size_t *len, const sht *src, bool external); const sht sht_nil; -ssize_t sql_daytime_fromstr(const char *buf, daytime *d, long tz_sec, bool tzlocal); -ssize_t sql_timestamp_fromstr(const char *buf, timestamp *d, long tz_sec, bool tzlocal); -ssize_t strFromStr(const char *restrict src, size_t *restrict len, str *restrict dst, bool external); +ssize_t sql_daytime_fromstr(allocator *ma, const char *buf, daytime *d, long tz_sec, bool tzlocal); +ssize_t sql_timestamp_fromstr(allocator *ma, const char *buf, timestamp *d, long tz_sec, bool tzlocal); +ssize_t strFromStr(allocator *ma, const char *restrict src, size_t *restrict len, str *restrict dst, bool external); const char str_nil[2]; int strerror_r(int errnum, char *buf, size_t buflen); timestamp timestamp_add_month(timestamp t, int m) __attribute__((__const__)); @@ -599,12 +609,12 @@ date timestamp_date(timestamp t) __attri daytime timestamp_daytime(timestamp t) __attribute__((__const__)); lng timestamp_diff(timestamp t1, timestamp t2) __attribute__((__const__)); timestamp timestamp_fromdate(date dt) __attribute__((__const__)); -ssize_t timestamp_fromstr(const char *buf, size_t *len, timestamp **d, bool external); +ssize_t timestamp_fromstr(allocator *ma, const char *buf, size_t *len, timestamp **d, bool external); timestamp timestamp_fromtime(time_t timeval) __attribute__((__const__)); timestamp timestamp_fromusec(lng usec) __attribute__((__const__)); -ssize_t timestamp_precision_tostr(str *buf, size_t *len, timestamp val, int precision, bool external); -ssize_t timestamp_tostr(str *buf, size_t *len, const timestamp *val, bool external); -ssize_t timestamp_tz_fromstr(const char *buf, size_t *len, timestamp **ret, bool external); +ssize_t timestamp_precision_tostr(allocator *ma, str *buf, size_t *len, timestamp val, int precision, bool external); +ssize_t timestamp_tostr(allocator *ma, str *buf, size_t *len, const timestamp *val, bool external); +ssize_t timestamp_tz_fromstr(allocator *ma, const char *buf, size_t *len, timestamp **ret, bool external); const timestamp unixepoch; const uuid uuid_nil; gdk_return void_inplace(BAT *b, oid id, const void *val, bool force) __attribute__((__warn_unused_result__)); @@ -760,17 +770,17 @@ const char *wsaerror(int); # monetdb5 str AUTHGeneratePasswordHash(str *res, const char *value); str AUTHcypherValue(str *ret, const char *value); -str AUTHdecypherValue(str *ret, const char *value); +str AUTHdecypherValue(allocator *, str *ret, const char *value); str AUTHrequireAdmin(Client c); str AUTHunlockVault(const char *password); str AUTHverifyPassword(const char *passwd); -str BKCmirror(bat *ret, const bat *bid); +str BKCmirror(Client ctx, bat *ret, const bat *bid); str BKCnewBAT(bat *res, const int *tt, const BUN *cap, role_t role); str CLTshutdown(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str COPYrejects(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str COPYrejects_clear(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -str GRPgroup1(bat *ngid, bat *next, bat *nhis, const bat *bid); -str GRPsubgroup5(bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *sid, const bat *gid, const bat *eid, const bat *hid); +str GRPgroup1(Client ctx, bat *ngid, bat *next, bat *nhis, const bat *bid); +str GRPsubgroup5(Client ctx, bat *ngid, bat *next, bat *nhis, const bat *bid, const bat *sid, const bat *gid, const bat *eid, const bat *hid); int MAL_MAXCLIENTS; int MALcommentsOnly(MalBlkPtr mb); lng MALdebug; @@ -801,14 +811,14 @@ str QLOGcatalog(BAT **r); str QLOGdisable(void *ret); str QLOGempty(void *ret); _______________________________________________ checkin-list mailing list -- [email protected] To unsubscribe send an email to [email protected]
