Changeset: d60956a1d90b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d60956a1d90b
Modified Files:
clients/mapiclient/dump.c
gdk/gdk_logger.c
sql/storage/bat/bat_storage.c
Branch: Jan2022
Log Message:
merged with jul2021
diffs (61 lines):
diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -595,17 +595,33 @@ static gdk_return
la_bat_update_count(logger *lg, log_id id, lng cnt)
{
BATiter cni = bat_iterator_nolock(lg->catalog_id);
- BUN p;
if (BAThash(lg->catalog_id) == GDK_SUCCEED) {
MT_rwlock_rdlock(&cni.b->thashlock);
+ BUN p, cp = BUN_NONE;
+
HASHloop_int(cni, cni.b->thash, p, &id) {
- lng ocnt = *(lng*) Tloc(lg->catalog_cnt, p);
+ lng lid = *(lng *) Tloc(lg->catalog_lid, p);
+
+ if (lid != lng_nil && lid <= lg->saved_tid)
+ break;
+ cp = p;
+ }
+ if (cp != BUN_NONE) {
+ lng ocnt = *(lng*) Tloc(lg->catalog_cnt, cp);
assert(lg->catalog_cnt->hseqbase == 0);
- if (ocnt < cnt && BUNreplace(lg->catalog_cnt, p, &cnt,
false) != GDK_SUCCEED) {
+ if (ocnt < cnt && BUNreplace(lg->catalog_cnt, cp, &cnt,
false) != GDK_SUCCEED) {
MT_rwlock_rdunlock(&cni.b->thashlock);
return GDK_FAIL;
}
+#ifndef NDEBUG
+ if (ocnt < cnt) {
+ log_bid bid = *(log_bid *)
Tloc(lg->catalog_bid, cp);
+ BAT *b = BBP_record(bid).cache;
+ if (!(b == NULL || b->theap == NULL || b->ttype
== 0 || b->theap->dirty) && (!b->batTransient))
+ fprintf(stderr, "update count: sqlid:
%d, cnt: "LLFMT"->"LLFMT", "ALGOBATFMT"\n", id, ocnt, cnt, ALGOBATPAR(b));
+ }
+#endif
}
MT_rwlock_rdunlock(&cni.b->thashlock);
}
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -2861,7 +2861,7 @@ log_segments(sql_trans *tr, segments *se
{
/* log segments */
for (segment *seg = segs->h; seg; seg=seg->next) {
- if (seg->ts == tr->tid) {
+ if (seg->ts == tr->tid && seg->end-seg->start) {
if (log_segment(tr, seg, id) != LOG_OK)
return LOG_ERR;
}
@@ -3397,6 +3397,8 @@ log_storage(sql_trans *tr, sql_table *t,
if (ok == LOG_OK && cleared)
ok = tr_log_cs(tr, t, &s->cs, s->segs->h, t->base.id);
if (ok == LOG_OK)
+ ok = segments2cs(tr, s->segs, &s->cs);
+ if (ok == LOG_OK)
ok = log_segments(tr, s->segs, id);
if (ok == LOG_OK && !cleared)
ok = log_table_append(tr, t, s->segs);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list