Changeset: d7b7b24ceb5d for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/d7b7b24ceb5d Branch: txtsim-imp Log Message:
Merge with Jun2023. diffs (99 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -798,3 +798,4 @@ 8a95168e853382b9b89ac7b67e343788ea837f3a bb95192134c0d8ef8fea525204eefcd0de099a54 Jun2023_root 24385ee6130494440e09d31ec73f4aa2e2893e98 Jul2021_33 05b3d9ea9165baf1d2956d5b06ad85f817ecc6d2 Jul2021_33 +05b3d9ea9165baf1d2956d5b06ad85f817ecc6d2 Jul2021_SP10_release diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -668,9 +668,6 @@ BATfree(BAT *b) return; /* deallocate all memory for a bat */ - if (b->tident && !default_ident(b->tident)) - GDKfree(b->tident); - b->tident = BATstring_t; MT_rwlock_rdlock(&b->thashlock); BUN nunique = BUN_NONE; if (b->thash && b->thash != (Hash *) 1) { @@ -682,6 +679,9 @@ BATfree(BAT *b) OIDXfree(b); STRMPfree(b); MT_lock_set(&b->theaplock); + if (b->tident && !default_ident(b->tident)) + GDKfree(b->tident); + b->tident = BATstring_t; if (nunique != BUN_NONE) { b->tunique_est = (double) nunique; } @@ -2139,12 +2139,14 @@ BATroles(BAT *b, const char *tnme) { if (b == NULL) return GDK_SUCCEED; + MT_lock_set(&b->theaplock); if (b->tident && !default_ident(b->tident)) GDKfree(b->tident); if (tnme) b->tident = GDKstrdup(tnme); else b->tident = BATstring_t; + MT_lock_unset(&b->theaplock); return b->tident ? GDK_SUCCEED : GDK_FAIL; } diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -2925,8 +2925,10 @@ decref(bat i, bool logical, bool lock, c } } if (b) { - if (!locked) + if (!locked) { MT_lock_set(&b->theaplock); + locked = true; + } #if 0 if (b->batCount > b->batInserted && !isVIEW(b)) { /* if batCount is larger than batInserted and @@ -2947,9 +2949,14 @@ decref(bat i, bool logical, bool lock, c /* we destroy transients asap and unload persistent bats only * if they have been made cold or are not dirty */ unsigned chkflag = BBPSYNCING; - if (GDKvm_cursize() < GDK_vm_maxsize && - ((b && b->theap ? b->theap->size : 0) + (b && b->tvheap ? b->tvheap->size : 0)) < (GDK_vm_maxsize - GDKvm_cursize()) / 32) - chkflag |= BBPHOT; + if (b && GDKvm_cursize() < GDK_vm_maxsize) { + if (!locked) { + MT_lock_set(&b->theaplock); + locked = true; + } + if (((b->theap ? b->theap->size : 0) + (b->tvheap ? b->tvheap->size : 0)) < (GDK_vm_maxsize - GDKvm_cursize()) / 32) + chkflag |= BBPHOT; + } /* only consider unloading if refs is 0; if, in addition, lrefs * is 0, we can definitely unload, else only if some more * conditions are met */ @@ -2975,7 +2982,7 @@ decref(bat i, bool logical, bool lock, c swap = true; } /* else: bat cannot be swapped out */ lrefs = BBP_lrefs(i); - if (b) + if (locked) MT_lock_unset(&b->theaplock); /* unlock before re-locking in unload; as saving a dirty diff --git a/sql/test/emptydb/Tests/check.stable.out.32bit b/sql/test/emptydb/Tests/check.stable.out.32bit --- a/sql/test/emptydb/Tests/check.stable.out.32bit +++ b/sql/test/emptydb/Tests/check.stable.out.32bit @@ -4223,6 +4223,7 @@ select 'null in fkeys.delete_action', de [ "grant on function", "sys", "analyze", "public", "EXECUTE", "monetdb", 0 ] [ "grant on function", "sys", "analyze", "public", "EXECUTE", "monetdb", 0 ] [ "grant on function", "sys", "analyze", "public", "EXECUTE", "monetdb", 0 ] +[ "grant on function", "sys", "asciify", "public", "EXECUTE", "monetdb", 0 ] [ "grant on function", "sys", "broadcast", "public", "EXECUTE", "monetdb", 0 ] [ "grant on function", "sys", "contains", "public", "EXECUTE", "monetdb", 0 ] [ "grant on function", "sys", "contains", "public", "EXECUTE", "monetdb", 0 ] _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org