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

Reply via email to