Changeset: e183e1b99896 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e183e1b99896
Modified Files:
sql/server/rel_updates.c
Branch: default
Log Message:
Merge with Dec2025 branch.
diffs (truncated from 1644 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
@@ -1,14 +1,12 @@
# gdk
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(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);
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);
@@ -973,7 +971,6 @@ void freeException(str);
void freeInstruction(MalBlkPtr mb, InstrPtr p);
void freeMalBlk(MalBlkPtr mb);
void freeModule(Module cur);
-void freeModuleList(Module *list);
void freeStack(MalStkPtr stk);
void freeSymbol(Symbol s);
void freeSymbolList(Symbol s);
@@ -1000,7 +997,7 @@ int getHgeConstant(MalBlkPtr mb, hge val
int getIntConstant(MalBlkPtr mb, int val);
int getLngConstant(MalBlkPtr mb, lng val);
Module getModule(const char *nme);
-void getModuleList(Module **out, int *length);
+void getModuleList(allocator *ma, Module **out, int *length);
BAT *getModules(void);
const char *getName(const char *nme);
const char *getNameLen(const char *nme, size_t len);
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -339,18 +339,6 @@ const uuid uuid_nil = {0};
const inet4 inet4_nil = {0};
const inet6 inet6_nil = {0};
-ptr
-ATOMnil(int t)
-{
- const void *src = ATOMnilptr(t);
- size_t len = ATOMlen(ATOMtype(t), src);
- ptr dst = GDKmalloc(len);
-
- if (dst)
- memcpy(dst, src, len);
- return dst;
-}
-
/*
* @- Atomic ADT functions
*/
@@ -433,17 +421,6 @@ ATOMformat(allocator *ma, int t, const v
return ma_strdup(ma, "nil");
}
-ptr
-ATOMdup(int t, const void *p)
-{
- size_t len = ATOMlen(t, p);
- ptr n = GDKmalloc(len);
-
- if (n)
- memcpy(n, p, len);
- return n;
-}
-
/*
* @* Builtin Atomic Operator Implementations
*
diff --git a/gdk/gdk_atoms.h b/gdk/gdk_atoms.h
--- a/gdk/gdk_atoms.h
+++ b/gdk/gdk_atoms.h
@@ -72,14 +72,10 @@ gdk_export int ATOMindex(const char *nme
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(int id, const void *val, stream *fd);
gdk_export char *ATOMformat(allocator *ma, int id, const void *val)
__attribute__((__warn_unused_result__));
-gdk_export void *ATOMdup(int id, const void *val);
-
/*
* @- maximum atomic string lengths
*/
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1578,8 +1578,10 @@ BBPjson_upgrade(json_storage_conversion
bat bid;
int JSON_type = ATOMindex("json");
bat nbat = (bat) ATOMIC_GET(&BBPsize);
- bat *upd = GDKmalloc(sizeof(bat) * (size_t) nbat);
int nupd = 0;
+ allocator *ta = MT_thread_getallocator();
+ allocator_state ta_state = ma_open(ta);
+ bat *upd = ma_alloc(ta, sizeof(bat) * (size_t) nbat);
if (upd == NULL) {
TRC_CRITICAL(GDK, "could not create bat\n");
@@ -1611,7 +1613,7 @@ BBPjson_upgrade(json_storage_conversion
fprintf(stderr, "Upgrading json bat %d\n", bid);
if (jsonupgradebat(b, fixJSONStorage) != GDK_SUCCEED) {
BBPunlock();
- GDKfree(upd);
+ ma_close(ta, &ta_state);
return GDK_FAIL;
}
upd[nupd++] = bid;
@@ -1620,10 +1622,10 @@ BBPjson_upgrade(json_storage_conversion
if (nupd > 1 &&
TMsubcommit_list(upd, NULL, nupd, -1) != GDK_SUCCEED) {
TRC_CRITICAL(GDK, "failed to commit changes\n");
- GDKfree(upd);
+ ma_close(ta, &ta_state);
return GDK_FAIL;
}
- GDKfree(upd);
+ ma_close(ta, &ta_state);
return GDK_SUCCEED;
}
#endif
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3447,14 +3447,17 @@ count_unique(BAT *b, BAT *s, BUN *cnt1,
} else if (ATOMbasetype(bi.type) == TYPE_sht) {
unsigned short val;
uint32_t *seen = NULL;
+ allocator *ta = MT_thread_getallocator();
+ allocator_state ta_state = ma_open(ta);
algomsg = "short-sized atoms";
assert(bvars == NULL);
- seen = GDKzalloc((65536 / 32) * sizeof(seen[0]));
+ seen = ma_zalloc(ta, (65536 / 32) * sizeof(seen[0]));
if (seen == NULL) {
MT_rwlock_rdunlock(&pb->thashlock);
BBPreclaim(pb);
bat_iterator_end(&bi);
+ ma_close(ta, &ta_state);
return GDK_FAIL;
}
for (i = 0; i < ci.ncand; i++) {
@@ -3474,7 +3477,7 @@ count_unique(BAT *b, BAT *s, BUN *cnt1,
for (int j = 0; j < 65536 / 32; j++)
cnt += candmask_pop(seen[j]);
*cnt2 = cnt;
- GDKfree(seen);
+ ma_close(ta, &ta_state);
seen = NULL;
} else {
BUN prb;
@@ -4016,12 +4019,16 @@ bitmaskjoin(BAT *l, BAT *r,
{
BAT *r1;
size_t nmsk = (lci->ncand + 31) / 32;
- uint32_t *mask = GDKzalloc(nmsk * sizeof(uint32_t));
BUN cnt = 0;
+ allocator *ta = MT_thread_getallocator();
+ allocator_state ta_state = ma_open(ta);
+ uint32_t *mask = ma_zalloc(ta, nmsk * sizeof(uint32_t));
MT_thread_setalgorithm(__func__);
- if (mask == NULL)
+ if (mask == NULL) {
+ ma_close(ta, &ta_state);
return NULL;
+ }
for (BUN n = 0; n < rci->ncand; n++) {
oid o = canditer_next(rci) - r->hseqbase;
@@ -4042,7 +4049,7 @@ bitmaskjoin(BAT *l, BAT *r,
if (only_misses)
cnt = lci->ncand - cnt;
if (cnt == 0 || cnt == lci->ncand) {
- GDKfree(mask);
+ ma_close(ta, &ta_state);
if (cnt == 0)
return BATdense(0, 0, 0);
return BATdense(0, lci->seq, lci->ncand);
@@ -4088,7 +4095,7 @@ bitmaskjoin(BAT *l, BAT *r,
ALGOBATPAR(r1),
GDKusec() - t0);
}
- GDKfree(mask);
+ ma_close(ta, &ta_state);
return r1;
}
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -673,7 +673,8 @@ log_read_updates(logger *lg, trans *tr,
}
} else {
void *(*rh)(allocator *ma, ptr, size_t *, stream *,
size_t) = BATatoms[TYPE_oid].atomRead;
- void *hv = ATOMnil(TYPE_oid);
+ oid nil = oid_nil;
+ void *hv = &nil;
offset = 0;
if (hv == NULL) {
@@ -747,7 +748,6 @@ log_read_updates(logger *lg, trans *tr,
}
}
}
- GDKfree(hv);
}
if (res == LOG_OK && !skip_entry) {
diff --git a/gdk/gdk_rsort.c b/gdk/gdk_rsort.c
--- a/gdk/gdk_rsort.c
+++ b/gdk/gdk_rsort.c
@@ -22,7 +22,9 @@
gdk_return
GDKrsort(void *restrict h, void *restrict t, size_t n, size_t hs, size_t ts,
bool reverse, bool bigendian)
{
- size_t (*counts)[NBUCKETS] = GDKzalloc(hs * sizeof(counts[0]));
+ allocator *ta = MT_thread_getallocator();
+ allocator_state ta_state = ma_open(ta);
+ size_t (*counts)[NBUCKETS] = ma_zalloc(ta, hs * sizeof(counts[0]));
size_t pos[NBUCKETS];
uint8_t *h1 = h;
uint8_t *h2;
@@ -30,8 +32,10 @@ GDKrsort(void *restrict h, void *restric
uint8_t *t2 = NULL;
Heap tmph, tmpt;
- if (counts == NULL)
+ if (counts == NULL) {
+ ma_close(ta, &ta_state);
return GDK_FAIL;
+ }
tmph = tmpt = (Heap) {
.farmid = 1,
@@ -40,7 +44,7 @@ GDKrsort(void *restrict h, void *restric
snprintf(tmph.filename, sizeof(tmph.filename), "%s%crsort%zuh",
TEMPDIR_NAME, DIR_SEP, (size_t) MT_getpid());
if (HEAPalloc(&tmph, n, hs) != GDK_SUCCEED) {
- GDKfree(counts);
+ ma_close(ta, &ta_state);
return GDK_FAIL;
}
h2 = (uint8_t *) tmph.base;
@@ -49,7 +53,7 @@ GDKrsort(void *restrict h, void *restric
snprintf(tmpt.filename, sizeof(tmpt.filename), "%s%crsort%zut",
TEMPDIR_NAME, DIR_SEP, (size_t) MT_getpid());
if (HEAPalloc(&tmpt, n, ts) != GDK_SUCCEED) {
- GDKfree(counts);
+ ma_close(ta, &ta_state);
HEAPfree(&tmph, true);
return GDK_FAIL;
}
@@ -133,7 +137,7 @@ GDKrsort(void *restrict h, void *restric
t1 = t2;
t2 = t;
}
- GDKfree(counts);
+ ma_close(ta, &ta_state);
if (h1 != (uint8_t *) h) {
/* we need to copy the data back to the correct heap */
diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c
--- a/gdk/gdk_strimps.c
+++ b/gdk/gdk_strimps.c
@@ -320,8 +320,12 @@ STRMPbuildHeader(BAT *b, BAT *s, CharPai
return false;
}
+ allocator *ta = MT_thread_getallocator();
+ allocator_state ta_state = ma_open(ta);
+
hlen = STRIMP_HISTSIZE;
- if ((hist = (PairHistogramElem
*)GDKzalloc(hlen*sizeof(PairHistogramElem))) == NULL) {
+ if ((hist = (PairHistogramElem *)ma_zalloc(ta,
hlen*sizeof(PairHistogramElem))) == NULL) {
+ ma_close(ta, &ta_state);
return false;
}
@@ -381,7 +385,7 @@ STRMPbuildHeader(BAT *b, BAT *s, CharPai
STRMPchoosePairs(hist, hlen, hpairs);
}
- GDKfree(hist);
+ ma_close(ta, &ta_state);
TRC_DEBUG(ACCELERATOR, LLFMT " usec\n", GDKusec() - t0);
if (!(res = values >= STRIMP_HEADER_SIZE))
@@ -702,11 +706,15 @@ STRMPcreateStrimpHeap(BAT *b, BAT *s)
uint64_t descriptor;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]