Changeset: 4a57ad37b6aa for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4a57ad37b6aa
Modified Files:
gdk/gdk_align.c
gdk/gdk_bat.c
gdk/gdk_private.h
Branch: Jul2021
Log Message:
Give string offset heap the correct name from the get go.
diffs (69 lines):
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -91,7 +91,7 @@ VIEWcreate(oid seq, BAT *b)
return BATdense(seq, b->tseqbase, b->batCount);
}
- bn = BATcreatedesc(seq, b->ttype, false, TRANSIENT);
+ bn = BATcreatedesc(seq, b->ttype, false, TRANSIENT, 0);
if (bn == NULL)
return NULL;
assert(bn->theap == NULL);
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -62,7 +62,7 @@ BATinit_idents(BAT *bn)
}
BAT *
-BATcreatedesc(oid hseq, int tt, bool heapnames, role_t role)
+BATcreatedesc(oid hseq, int tt, bool heapnames, role_t role, uint16_t width)
{
BAT *bn;
@@ -120,8 +120,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
};
const char *nme = BBP_physical(bn->batCacheid);
- strconcat_len(bn->theap->filename, sizeof(bn->theap->filename),
- nme, ".tail", NULL);
+ settailname(bn->theap, nme, tt, width);
if (ATOMneedheap(tt)) {
if ((bn->tvheap = GDKmalloc(sizeof(Heap))) == NULL) {
@@ -261,7 +260,7 @@ COLnew_intern(oid hseq, int tt, BUN cap,
if (cap > BUN_MAX)
cap = BUN_MAX;
- bn = BATcreatedesc(hseq, tt, true, role);
+ bn = BATcreatedesc(hseq, tt, true, role, width);
if (bn == NULL)
return NULL;
@@ -271,8 +270,12 @@ COLnew_intern(oid hseq, int tt, BUN cap,
if (ATOMstorage(tt) == TYPE_msk)
cap /= 8; /* 8 values per byte */
else if (tt == TYPE_str) {
- if (width != 0)
+ if (width != 0) {
+ /* power of two and not too large */
+ assert((width & (width - 1)) == 0);
+ assert(width <= sizeof(var_t));
bn->twidth = width;
+ }
settailname(bn->theap, BBP_physical(bn->batCacheid), tt,
bn->twidth);
}
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -49,7 +49,7 @@ bool BATcheckimprints(BAT *b)
gdk_return BATcheckmodes(BAT *b, bool persistent)
__attribute__((__warn_unused_result__))
__attribute__((__visibility__("hidden")));
-BAT *BATcreatedesc(oid hseq, int tt, bool heapnames, role_t role)
+BAT *BATcreatedesc(oid hseq, int tt, bool heapnames, role_t role, uint16_t
width)
__attribute__((__visibility__("hidden")));
void BATdelete(BAT *b)
__attribute__((__visibility__("hidden")));
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list