Changeset: 7db344d03135 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7db344d03135
Modified Files:
gdk/gdk_align.c
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
Branch: Jul2021
Log Message:
Some dirty bit management.
diffs (92 lines):
diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c
--- a/gdk/gdk_align.c
+++ b/gdk/gdk_align.c
@@ -253,10 +253,10 @@ BATmaterialize(BAT *b)
b->tbaseoff = 0;
BATsetprop_nolock(b, GDK_NUNIQUE, TYPE_oid, &(oid){is_oid_nil(t) ? 1 :
b->batCount});
BATsetprop_nolock(b, GDK_UNIQUE_ESTIMATE, TYPE_dbl,
&(dbl){is_oid_nil(t) ? 1.0 : (dbl)b->batCount});
- MT_lock_unset(&b->theaplock);
b->ttype = TYPE_oid;
BATsetdims(b);
b->batDirtydesc = true;
+ MT_lock_unset(&b->theaplock);
BATsetcount(b, b->batCount);
return GDK_SUCCEED;
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -94,6 +94,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
.batRole = role,
.batTransient = true,
.batRestricted = BAT_WRITE,
+ .batDirtydesc = true,
};
if (heapnames && (bn->theap = GDKmalloc(sizeof(Heap))) == NULL) {
GDKfree(bn);
@@ -117,6 +118,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
*bn->theap = (Heap) {
.parentid = bn->batCacheid,
.farmid = BBPselectfarm(role, bn->ttype, offheap),
+ .dirty = true,
};
const char *nme = BBP_physical(bn->batCacheid);
@@ -133,6 +135,7 @@ BATcreatedesc(oid hseq, int tt, bool hea
*bn->tvheap = (Heap) {
.parentid = bn->batCacheid,
.farmid = BBPselectfarm(role, bn->ttype,
varheap),
+ .dirty = true,
};
ATOMIC_INIT(&bn->tvheap->refs, 1);
strconcat_len(bn->tvheap->filename,
@@ -150,7 +153,6 @@ BATcreatedesc(oid hseq, int tt, bool hea
MT_lock_init(&bn->batIdxLock, name);
snprintf(name, sizeof(name), "hashlock%d", bn->batCacheid); /* fits */
MT_rwlock_init(&bn->thashlock, name);
- bn->batDirtydesc = true;
return bn;
}
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -2792,6 +2792,8 @@ PROPdestroy(BAT *b)
b->tprops = NULL;
while (p) {
+ /* only set dirty if a saved property is changed */
+ b->batDirtydesc |= p->id == GDK_MIN_POS || p->id == GDK_MAX_POS;
n = p->next;
VALclear(&p->v);
GDKfree(p);
@@ -2823,6 +2825,8 @@ BATrmprop_nolock(BAT *b, enum prop_t idx
b->tprops = prop->next;
VALclear(&prop->v);
GDKfree(prop);
+ /* only set dirty if a saved property is changed */
+ b->batDirtydesc |= idx == GDK_MIN_POS || idx ==
GDK_MAX_POS;
return;
}
prev = prop;
@@ -2858,7 +2862,8 @@ BATsetprop_nolock(BAT *b, enum prop_t id
GDKclrerr();
p = NULL;
}
- b->batDirtydesc = true;
+ /* only set dirty if a saved property is changed */
+ b->batDirtydesc |= idx == GDK_MIN_POS || idx == GDK_MAX_POS;
return p ? &p->v : NULL;
}
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -754,6 +754,7 @@ BBPreadEntries(FILE *fp, unsigned bbpver
return GDK_FAIL;
}
}
+ bn->batDirtydesc = false; /* undo setting by BATsetprop_nolock
*/
BBP_refs(bid) = 0;
BBP_lrefs(bid) = 1; /* any BAT we encounter here is
persistent, so has a logical reference */
BBP_desc(bid) = bn;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]