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 -- [email protected]
To unsubscribe send an email to [email protected]