Changeset: 216484c0964a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/216484c0964a Modified Files: gdk/gdk_bat.c Branch: default Log Message:
Merge with Jan2022 branch. diffs (44 lines): diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -1163,11 +1163,11 @@ BUNappendmulti(BAT *b, const void *value int (*atomcmp) (const void *, const void *) = ATOMcompare(b->ttype); const void *atomnil = ATOMnilptr(b->ttype); const void *minvalp = NULL, *maxvalp = NULL; - if (bi.minpos != BUN_NONE) - minvalp = BUNtail(bi, bi.minpos); - if (bi.maxpos != BUN_NONE) - maxvalp = BUNtail(bi, bi.maxpos); if (b->tvheap) { + if (bi.minpos != BUN_NONE) + minvalp = BUNtvar(bi, bi.minpos); + if (bi.maxpos != BUN_NONE) + maxvalp = BUNtvar(bi, bi.maxpos); const void *vbase = b->tvheap->base; for (BUN i = 0; i < count; i++) { t = ((void **) values)[i]; @@ -1181,7 +1181,13 @@ BUNappendmulti(BAT *b, const void *value * updated (not if they were * initialized from t below, but * we don't know) */ + BUN minpos = bi.minpos; + BUN maxpos = bi.maxpos; + MT_lock_set(&b->theaplock); bi = bat_iterator_nolock(b); + MT_lock_unset(&b->theaplock); + bi.minpos = minpos; + bi.maxpos = maxpos; vbase = b->tvheap->base; if (bi.minpos != BUN_NONE) minvalp = BUNtvar(bi, bi.minpos); @@ -1226,6 +1232,10 @@ BUNappendmulti(BAT *b, const void *value p++; } } else { + if (bi.minpos != BUN_NONE) + minvalp = BUNtloc(bi, bi.minpos); + if (bi.maxpos != BUN_NONE) + maxvalp = BUNtloc(bi, bi.maxpos); MT_rwlock_wrlock(&b->thashlock); for (BUN i = 0; i < count; i++) { t = (void *) ((char *) values + (i << b->tshift)); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org