Changeset: 12578f94df5a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/12578f94df5a
Modified Files:
gdk/gdk_align.c
gdk/gdk_bbp.c
gdk/gdk_private.h
Branch: Jul2021
Log Message:
Make sure heap files of transients get deleted, even if "partial" views.
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
@@ -266,7 +266,7 @@ BATmaterialize(BAT *b)
* The @#VIEWunlink@ routine cuts a reference to the parent. Part of the view
* destroy sequence.
*/
-static void
+void
VIEWunlink(BAT *b)
{
if (b) {
@@ -279,8 +279,6 @@ VIEWunlink(BAT *b)
if (tp)
tpb = BBP_cache(tp);
- if (tp && !vtp)
- vtp = tp;
if (vtp)
vtpb = BBP_cache(vtp);
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -3021,9 +3021,11 @@ BBPdestroy(BAT *b)
bat tp = VIEWtparent(b);
bat vtp = VIEWvtparent(b);
- if (isVIEW(b)) { /* a physical view */
- VIEWdestroy(b);
- } else {
+ HASHdestroy(b);
+ IMPSdestroy(b);
+ OIDXdestroy(b);
+ PROPdestroy(b);
+ if (tp == 0) {
/* bats that get destroyed must unfix their atoms */
gdk_return (*tunfix) (const void *) =
BATatoms[b->ttype].atomUnfix;
assert(b->batSharecnt == 0);
@@ -3036,8 +3038,16 @@ BBPdestroy(BAT *b)
(void) (*tunfix)(BUNtail(bi, p));
}
}
- BATdelete(b); /* handles persistent case also (file deletes)
*/
}
+ if (tp || vtp)
+ VIEWunlink(b);
+ if (b->theap) {
+ HEAPfree(b->theap, true);
+ }
+ if (b->tvheap)
+ HEAPfree(b->tvheap, true);
+ b->batCopiedtodisk = false;
+
BBPclear(b->batCacheid, true); /* if destroyed; de-register from BBP */
/* parent released when completely done with child */
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -270,6 +270,8 @@ gdk_return unshare_varsized_heap(BAT *b)
__attribute__((__visibility__("hidden")));
void VIEWdestroy(BAT *b)
__attribute__((__visibility__("hidden")));
+void VIEWunlink(BAT *b)
+ __attribute__((__visibility__("hidden")));
BAT *virtualize(BAT *bn)
__attribute__((__visibility__("hidden")));
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]