Changeset: a6acd53a2779 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a6acd53a2779
Modified Files:
        gdk/gdk_join.c
        gdk/gdk_unique.c
Branch: Oct2020
Log Message:

Temporary hash heaps should be allocated in transient farm.
This fixes #7064.
Thanks for the patch.


diffs (28 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2994,7 +2994,9 @@ count_unique(BAT *b, BAT *s, BUN *cnt1, 
                mask = HASHmask(ci.ncand);
                if (mask < ((BUN) 1 << 16))
                        mask = (BUN) 1 << 16;
-               if (snprintf(hs.heaplink.filename, 
sizeof(hs.heaplink.filename), "%s.thshunil%x", nme, (unsigned) THRgettid()) >= 
(int) sizeof(hs.heaplink.filename) ||
+               if ((hs.heaplink.farmid = BBPselectfarm(TRANSIENT, b->ttype, 
hashheap)) < 0 ||
+                   (hs.heapbckt.farmid = BBPselectfarm(TRANSIENT, b->ttype, 
hashheap)) < 0 ||
+                   snprintf(hs.heaplink.filename, 
sizeof(hs.heaplink.filename), "%s.thshunil%x", nme, (unsigned) THRgettid()) >= 
(int) sizeof(hs.heaplink.filename) ||
                    snprintf(hs.heapbckt.filename, 
sizeof(hs.heapbckt.filename), "%s.thshunib%x", nme, (unsigned) THRgettid()) >= 
(int) sizeof(hs.heapbckt.filename) ||
                    HASHnew(&hs, b->ttype, BUNlast(b), mask, BUN_NONE, false) 
!= GDK_SUCCEED) {
                        GDKerror("cannot allocate hash table\n");
diff --git a/gdk/gdk_unique.c b/gdk/gdk_unique.c
--- a/gdk/gdk_unique.c
+++ b/gdk/gdk_unique.c
@@ -220,7 +220,9 @@ BATunique(BAT *b, BAT *s)
                        GDKerror("cannot allocate hash table\n");
                        goto bunins_failed;
                }
-               if (snprintf(hs->heaplink.filename, 
sizeof(hs->heaplink.filename), "%s.thshunil%x", nme, (unsigned) THRgettid()) >= 
(int) sizeof(hs->heaplink.filename) ||
+               if ((hs->heaplink.farmid = BBPselectfarm(TRANSIENT, b->ttype, 
hashheap)) < 0 ||
+                   (hs->heapbckt.farmid = BBPselectfarm(TRANSIENT, b->ttype, 
hashheap)) < 0 ||
+                   snprintf(hs->heaplink.filename, 
sizeof(hs->heaplink.filename), "%s.thshunil%x", nme, (unsigned) THRgettid()) >= 
(int) sizeof(hs->heaplink.filename) ||
                    snprintf(hs->heapbckt.filename, 
sizeof(hs->heapbckt.filename), "%s.thshunib%x", nme, (unsigned) THRgettid()) >= 
(int) sizeof(hs->heapbckt.filename) ||
                    HASHnew(hs, b->ttype, BUNlast(b), mask, BUN_NONE, false) != 
GDK_SUCCEED) {
                        GDKfree(hs);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to