Changeset: cd32f04bbe25 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cd32f04bbe25 Modified Files: gdk/gdk_align.c gdk/gdk_bat.c gdk/gdk_batop.c gdk/gdk_private.h gdk/gdk_search.c gdk/gdk_storage.c Branch: leftmart Log Message:
Destroy orderindex when the time comes. diffs (127 lines): diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c --- a/gdk/gdk_align.c +++ b/gdk/gdk_align.c @@ -442,6 +442,7 @@ BATmaterializet(BAT *b) /* cleanup possible ACC's */ HASHdestroy(b); IMPSdestroy(b); + OIDXdestroy(b); b->T->heap.filename = NULL; if (HEAPalloc(&b->T->heap, cnt, sizeof(oid)) != GDK_SUCCEED) { @@ -782,6 +783,7 @@ VIEWdestroy(BAT *b) if (b->T->hash) HASHremove(b); IMPSdestroy(b); + OIDXdestroy(b); VIEWunlink(b); if (b->htype && !b->H->heap.parentid) { diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -454,6 +454,7 @@ BATextend(BAT *b, BUN newcap) return GDK_FAIL; HASHdestroy(b); IMPSdestroy(b); + OIDXdestroy(b); return GDK_SUCCEED; } @@ -497,6 +498,7 @@ BATclear(BAT *b, int force) /* kill all search accelerators */ HASHdestroy(b); IMPSdestroy(b); + OIDXdestroy(b); /* we must dispose of all inserted atoms */ if ((b->batDeleted == b->batInserted || force) && @@ -597,6 +599,7 @@ BATfree(BAT *b) b->T->props = NULL; HASHdestroy(b); IMPSdestroy(b); + OIDXdestroy(b); if (b->htype) HEAPfree(&b->H->heap, 0); else @@ -1187,6 +1190,7 @@ BUNins(BAT *b, const void *h, const void } } IMPSdestroy(b); /* no support for inserts in imprints yet */ + OIDXdestroy(b); return GDK_SUCCEED; bunins_failed: return GDK_FAIL; @@ -1279,6 +1283,7 @@ BUNappend(BAT *b, const void *t, bit for IMPSdestroy(b); /* no support for inserts in imprints yet */ + OIDXdestroy(b); /* first adapt the hashes; then the user-defined accelerators. * REASON: some accelerator updates (qsignature) use the hashes! @@ -1457,6 +1462,7 @@ BUNdelete_(BAT *b, BUN p, bit force) b->batCount--; b->batDirty = 1; /* bat is dirty */ IMPSdestroy(b); /* no support for inserts in imprints yet */ + OIDXdestroy(b); return p; } diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -690,6 +690,7 @@ BATappend(BAT *b, BAT *n, bit force) } IMPSdestroy(b); /* imprints do not support updates yet */ + OIDXdestroy(b); /* a hash is useless for void bats */ if (b->H->hash) HASHremove(BATmirror(b)); diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h --- a/gdk/gdk_private.h +++ b/gdk/gdk_private.h @@ -184,6 +184,8 @@ void BBPdump(void); /* never called: fo __attribute__((__visibility__("hidden"))); __hidden int MT_msync(void *p, size_t len) __attribute__((__visibility__("hidden"))); +__hidden void OIDXdestroy(BAT *b) + __attribute__((__visibility__("hidden"))); __hidden int OIDdirty(void) __attribute__((__visibility__("hidden"))); __hidden int OIDinit(void) diff --git a/gdk/gdk_search.c b/gdk/gdk_search.c --- a/gdk/gdk_search.c +++ b/gdk/gdk_search.c @@ -1217,3 +1217,19 @@ bailout: MT_lock_unset(&GDKhashLock(abs(b->batCacheid)), "GDKmergeidx"); return GDK_SUCCEED; } + +void +OIDXdestroy(BAT *b) +{ + if (b) { + Heap *hp; + + MT_lock_set(&GDKhashLock(abs(b->batCacheid)), "OIDXdestroy"); + if ((hp = b->torderidx) != NULL) { + b->torderidx = NULL; + HEAPdelete(hp, BBP_physical(b->batCacheid), "torderidx"); + GDKfree(hp); + } + MT_lock_unset(&GDKhashLock(abs(b->batCacheid)), "OIDXdestroy"); + } +} diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c --- a/gdk/gdk_storage.c +++ b/gdk/gdk_storage.c @@ -975,6 +975,7 @@ BATdelete(BAT *b) b = loaded; HASHdestroy(b); IMPSdestroy(b); + OIDXdestroy(b); } assert(!b->H->heap.base || !b->T->heap.base || b->H->heap.base != b->T->heap.base); if (b->batCopiedtodisk || (b->H->heap.storage != STORE_MEM)) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list