Changeset: 37e5932e9998 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=37e5932e9998
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk.h
        gdk/gdk_align.c
        gdk/gdk_bat.c
        gdk/gdk_bbp.c
        gdk/gdk_group.c
        gdk/gdk_heap.c
        gdk/gdk_imprints.c
        gdk/gdk_join.c
        gdk/gdk_private.h
        gdk/gdk_search.c
        gdk/gdk_select.c
        gdk/gdk_storage.c
        gdk/gdk_unique.c
        sql/backends/monet5/Tests/All
        sql/backends/monet5/generator/generator.c
        sql/test/leaks/Tests/check0_nogeom.stable.out
        sql/test/leaks/Tests/check3_nogeom.stable.out
        sql/test/leaks/Tests/check4_nogeom.stable.out
        sql/test/leaks/Tests/check5_nogeom.stable.out
        sql/test/leaks/Tests/select1_nogeom.stable.out
        sql/test/leaks/Tests/select2_nogeom.stable.out
        sql/test/leaks/Tests/temp2_nogeom.stable.out
        sql/test/leaks/Tests/temp3_nogeom.stable.out
Branch: default
Log Message:

Merge with Oct2014 branch.


diffs (truncated from 841 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
@@ -289,7 +289,6 @@ void HEAP_free(Heap *heap, var_t block);
 void HEAP_initialize(Heap *heap, size_t nbytes, size_t nprivate, int 
alignment);
 var_t HEAP_malloc(Heap *heap, size_t nbytes);
 int HEAPextend(Heap *h, size_t size, int mayshare);
-int HEAPfree(Heap *h);
 size_t HEAPmemsize(Heap *h);
 size_t HEAPvmsize(Heap *h);
 lng IMPSimprintsize(BAT *b);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1043,7 +1043,7 @@ typedef int (*GDKfcn) ();
  *  HEAPalloc (Heap *h, size_t nitems, size_t itemsize);
  * @item int
  * @tab
- *  HEAPfree (Heap *h);
+ *  HEAPfree (Heap *h, int remove);
  * @item int
  * @tab
  *  HEAPextend (Heap *h, size_t size, int mayshare);
@@ -1068,7 +1068,6 @@ typedef int (*GDKfcn) ();
  * These routines should be used to alloc free or extend heaps; they
  * isolate you from the different ways heaps can be accessed.
  */
-gdk_export int HEAPfree(Heap *h);
 gdk_export int HEAPextend(Heap *h, size_t size, int mayshare);
 gdk_export size_t HEAPvmsize(Heap *h);
 gdk_export size_t HEAPmemsize(Heap *h);
@@ -1656,6 +1655,8 @@ gdk_export int BATmmap(BAT *b, int hb, i
 gdk_export int BATdelete(BAT *b);
 gdk_export size_t BATmemsize(BAT *b, int dirty);
 
+#define NOFARM (-1) /* indicate to GDKfilepath to create relative path */
+
 gdk_export char *GDKfilepath(int farmid, const char *dir, const char *nme, 
const char *ext);
 gdk_export int GDKcreatedir(const char *nme);
 
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -500,7 +500,7 @@ BATmaterializeh(BAT *b)
        BATsetcount(b, cnt);
 
        /* cleanup the old heaps */
-       HEAPfree(&head);
+       HEAPfree(&head, 0);
        return b;
 }
 
@@ -756,10 +756,10 @@ VIEWreset(BAT *b)
                BBPreclaim(v);
        if (n != NULL)
                BBPunfix(n->batCacheid);
-       HEAPfree(&head);
-       HEAPfree(&tail);
-       HEAPfree(&hh);
-       HEAPfree(&th);
+       HEAPfree(&head, 0);
+       HEAPfree(&tail, 0);
+       HEAPfree(&hh, 0);
+       HEAPfree(&th, 0);
        return NULL;
 }
 
@@ -810,13 +810,13 @@ VIEWdestroy(BAT *b)
        VIEWunlink(b);
 
        if (b->htype && !b->H->heap.parentid) {
-               HEAPfree(&b->H->heap);
+               HEAPfree(&b->H->heap, 0);
        } else {
                b->H->heap.base = NULL;
                b->H->heap.filename = NULL;
        }
        if (b->ttype && !b->T->heap.parentid) {
-               HEAPfree(&b->T->heap);
+               HEAPfree(&b->T->heap, 0);
        } else {
                b->T->heap.base = NULL;
                b->T->heap.filename = NULL;
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -152,20 +152,20 @@ BATcreatedesc(int ht, int tt, int heapna
                const char *nme = BBP_physical(bn->batCacheid);
 
                if (ht) {
-                       bn->H->heap.filename = GDKfilepath(-1, NULL, nme, 
"head");
+                       bn->H->heap.filename = GDKfilepath(NOFARM, NULL, nme, 
"head");
                        if (bn->H->heap.filename == NULL)
                                goto bailout;
                }
 
                if (tt) {
-                       bn->T->heap.filename = GDKfilepath(-1, NULL, nme, 
"tail");
+                       bn->T->heap.filename = GDKfilepath(NOFARM, NULL, nme, 
"tail");
                        if (bn->T->heap.filename == NULL)
                                goto bailout;
                }
 
                if (ATOMneedheap(ht)) {
                        if ((bn->H->vheap = (Heap *) GDKzalloc(sizeof(Heap))) 
== NULL ||
-                           (bn->H->vheap->filename = GDKfilepath(-1, NULL, 
nme, "hheap")) == NULL)
+                           (bn->H->vheap->filename = GDKfilepath(NOFARM, NULL, 
nme, "hheap")) == NULL)
                                goto bailout;
                        bn->H->vheap->parentid = bn->batCacheid;
                        bn->H->vheap->farmid = BBPselectfarm(role, bn->htype, 
varheap);
@@ -173,7 +173,7 @@ BATcreatedesc(int ht, int tt, int heapna
 
                if (ATOMneedheap(tt)) {
                        if ((bn->T->vheap = (Heap *) GDKzalloc(sizeof(Heap))) 
== NULL ||
-                           (bn->T->vheap->filename = GDKfilepath(-1, NULL, 
nme, "theap")) == NULL)
+                           (bn->T->vheap->filename = GDKfilepath(NOFARM, NULL, 
nme, "theap")) == NULL)
                                goto bailout;
                        bn->T->vheap->parentid = bn->batCacheid;
                        bn->T->vheap->farmid = BBPselectfarm(role, bn->ttype, 
varheap);
@@ -183,15 +183,15 @@ BATcreatedesc(int ht, int tt, int heapna
        return bs;
       bailout:
        if (ht)
-               HEAPfree(&bn->H->heap);
+               HEAPfree(&bn->H->heap, 1);
        if (tt)
-               HEAPfree(&bn->T->heap);
+               HEAPfree(&bn->T->heap, 1);
        if (bn->H->vheap) {
-               HEAPfree(bn->H->vheap);
+               HEAPfree(bn->H->vheap, 1);
                GDKfree(bn->H->vheap);
        }
        if (bn->T->vheap) {
-               HEAPfree(bn->T->vheap);
+               HEAPfree(bn->T->vheap, 1);
                GDKfree(bn->T->vheap);
        }
        GDKfree(bs);
@@ -265,15 +265,15 @@ BATnewstorage(int ht, int tt, BUN cap, i
        }
        if (tt && HEAPalloc(&bn->T->heap, cap, bn->T->width) < 0) {
                if (ht)
-                       HEAPfree(&bn->H->heap);
+                       HEAPfree(&bn->H->heap, 1);
                return NULL;
        }
 
        if (ATOMheap(ht, bn->H->vheap, cap) < 0) {
                if (ht)
-                       HEAPfree(&bn->H->heap);
+                       HEAPfree(&bn->H->heap, 1);
                if (tt)
-                       HEAPfree(&bn->T->heap);
+                       HEAPfree(&bn->T->heap, 1);
                GDKfree(bn->H->vheap);
                if (bn->T->vheap)
                        GDKfree(bn->T->vheap);
@@ -281,11 +281,11 @@ BATnewstorage(int ht, int tt, BUN cap, i
        }
        if (ATOMheap(tt, bn->T->vheap, cap) < 0) {
                if (ht)
-                       HEAPfree(&bn->H->heap);
+                       HEAPfree(&bn->H->heap, 1);
                if (tt)
-                       HEAPfree(&bn->T->heap);
+                       HEAPfree(&bn->T->heap, 1);
                if (bn->H->vheap) {
-                       HEAPfree(bn->H->vheap);
+                       HEAPfree(bn->H->vheap, 1);
                        GDKfree(bn->H->vheap);
                }
                GDKfree(bn->T->vheap);
@@ -354,7 +354,7 @@ BATattach(int tt, const char *heapfile, 
        if (rename(heapfile, path) < 0) {
                GDKsyserror("BATattach: cannot rename heapfile\n");
                GDKfree(path);
-               HEAPfree(&bn->T->heap);
+               HEAPfree(&bn->T->heap, 1);
                GDKfree(bs);
                return NULL;
        }
@@ -373,7 +373,7 @@ BATattach(int tt, const char *heapfile, 
        bn->T->heap.size = (size_t) st.st_size;
        bn->T->heap.newstorage = bn->T->heap.storage = (bn->T->heap.size < 
GDK_mmap_minsize) ? STORE_MEM : STORE_MMAP;
        if (HEAPload(&bn->T->heap, BBP_physical(bn->batCacheid), "tail", TRUE) 
< 0) {
-               HEAPfree(&bn->T->heap);
+               HEAPfree(&bn->T->heap, 1);
                GDKfree(bs);
                return NULL;
        }
@@ -560,20 +560,20 @@ BATclear(BAT *b, int force)
                        if (b->T->vheap->free > 0 &&
                            ATOMheap(b->ttype, &th, cap) < 0) {
                                if (b->H->vheap && b->H->vheap->free > 0)
-                                       HEAPfree(&hh);
+                                       HEAPfree(&hh, 1);
                                return NULL;
                        }
                }
                assert(b->H->vheap == NULL || b->H->vheap->parentid == 
abs(b->batCacheid));
                if (b->H->vheap && b->H->vheap->free > 0) {
                        hh.parentid = b->H->vheap->parentid;
-                       HEAPfree(b->H->vheap);
+                       HEAPfree(b->H->vheap, 0);
                        *b->H->vheap = hh;
                }
                assert(b->T->vheap == NULL || b->T->vheap->parentid == 
abs(b->batCacheid));
                if (b->T->vheap && b->T->vheap->free > 0) {
                        th.parentid = b->T->vheap->parentid;
-                       HEAPfree(b->T->vheap);
+                       HEAPfree(b->T->vheap, 0);
                        *b->T->vheap = th;
                }
        } else {
@@ -632,20 +632,20 @@ BATfree(BAT *b)
        HASHdestroy(b);
        IMPSdestroy(b);
        if (b->htype)
-               HEAPfree(&b->H->heap);
+               HEAPfree(&b->H->heap, 0);
        else
                assert(!b->H->heap.base);
        if (b->ttype)
-               HEAPfree(&b->T->heap);
+               HEAPfree(&b->T->heap, 0);
        else
                assert(!b->T->heap.base);
        if (b->H->vheap) {
                assert(b->H->vheap->parentid == b->batCacheid);
-               HEAPfree(b->H->vheap);
+               HEAPfree(b->H->vheap, 0);
        }
        if (b->T->vheap) {
                assert(b->T->vheap->parentid == b->batCacheid);
-               HEAPfree(b->T->vheap);
+               HEAPfree(b->T->vheap, 0);
        }
 
        b = BBP_cache(-b->batCacheid);
@@ -715,20 +715,20 @@ heapcopy(BAT *bn, char *ext, Heap *dst, 
        if (src->filename && src->newstorage != STORE_MEM) {
                const char *nme = BBP_physical(bn->batCacheid);
 
-               if ((dst->filename = GDKfilepath(-1, NULL, nme, ext)) == NULL)
+               if ((dst->filename = GDKfilepath(NOFARM, NULL, nme, ext)) == 
NULL)
                        return -1;
        }
        return HEAPcopy(dst, src);
 }
 
 static void
-heapfree(Heap *dst, Heap *src)
+heapmove(Heap *dst, Heap *src)
 {
        if (src->filename == NULL) {
                src->filename = dst->filename;
                dst->filename = NULL;
        }
-       HEAPfree(dst);
+       HEAPfree(dst, 0);
        *dst = *src;
 }
 
@@ -872,23 +872,23 @@ BATcopy(BAT *b, int ht, int tt, int writ
                            (b->ttype && heapcopy(bn, "tail", &bthp, 
&b->T->heap) < 0) ||
                            (bn->H->vheap && heapcopy(bn, "hheap", &hhp, 
b->H->vheap) < 0) ||
                            (bn->T->vheap && heapcopy(bn, "theap", &thp, 
b->T->vheap) < 0)) {
-                               HEAPfree(&thp);
-                               HEAPfree(&hhp);
-                               HEAPfree(&bthp);
-                               HEAPfree(&bhhp);
+                               HEAPfree(&thp, 1);
+                               HEAPfree(&hhp, 1);
+                               HEAPfree(&bthp, 1);
+                               HEAPfree(&bhhp, 1);
                                BBPreclaim(bn);
                                return NULL;
                        }
                        /* succeeded; replace dummy small heaps by the
                         * real ones */
-                       heapfree(&bn->H->heap, &bhhp);
-                       heapfree(&bn->T->heap, &bthp);
+                       heapmove(&bn->H->heap, &bhhp);
+                       heapmove(&bn->T->heap, &bthp);
                        hhp.parentid = bn->batCacheid;
                        thp.parentid = bn->batCacheid;
                        if (bn->H->vheap)
-                               heapfree(bn->H->vheap, &hhp);
+                               heapmove(bn->H->vheap, &hhp);
                        if (bn->T->vheap)
-                               heapfree(bn->T->vheap, &thp);
+                               heapmove(bn->T->vheap, &thp);
 
                        /* make sure we use the correct capacity */
                        hcap = (BUN) (bn->htype ? bn->H->heap.size >> 
bn->H->shift : 0);
@@ -2976,10 +2976,7 @@ BATassertHeadProps(BAT *b)
                                if (cmp == 0)
                                        seennil = 1;
                        }
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to