Changeset: 9fcc79c95208 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9fcc79c95208
Modified Files:
sql/storage/bat/bat_logger.c
Branch: mangled
Log Message:
Update replace_bat.
diffs (79 lines):
diff --git a/sql/storage/bat/bat_logger.c b/sql/storage/bat/bat_logger.c
--- a/sql/storage/bat/bat_logger.c
+++ b/sql/storage/bat/bat_logger.c
@@ -104,31 +104,53 @@ tabins(logger *lg, old_logger *old_lg, b
va_end(va);
return GDK_FAIL;
}
- if (first && (!old_lg || BUNfnd(old_lg->add, &b->batCacheid) ==
BUN_NONE)) {
- BAT *bn = COLcopy(b, b->ttype, true, PERSISTENT);
- if (
- bn == NULL ||
- (old_lg && BUNappend(old_lg->add,
&bn->batCacheid, false) != GDK_SUCCEED) ||
- (old_lg && BUNappend(old_lg->del,
&b->batCacheid, false) != GDK_SUCCEED)
- )
- {
- va_end(va);
+ if (first) {
+ if (old_lg) {
+ if (BUNfnd(old_lg->add, &b->batCacheid) ==
BUN_NONE) {
+ BAT *bn = COLcopy(b, b->ttype, true,
PERSISTENT);
+ if (bn == NULL ||
+ BUNappend(old_lg->add,
&bn->batCacheid, false) != GDK_SUCCEED ||
+ BUNappend(old_lg->del,
&b->batCacheid, false) != GDK_SUCCEED) {
+ va_end(va);
+ bat_destroy(b);
+ bat_destroy(bn);
+ return GDK_FAIL;
+ }
+ BBPretain(bn->batCacheid);
+ /* logical refs of b stay the same: it
is moved from catalog_bid to del */
+ bat_destroy(b);
+ BUN p = BUNfnd(lg->catalog_id, &cid);
+ assert(p != BUN_NONE);
+ if (BUNreplace(lg->catalog_bid, p,
&bn->batCacheid, false) != GDK_SUCCEED) {
+ va_end(va);
+ bat_destroy(bn);
+ return GDK_FAIL;
+ }
+ BBPretain(bn->batCacheid);
+ b = bn;
+ }
+ rc = BUNappend(b, cval, true);
bat_destroy(b);
- bat_destroy(bn);
- return GDK_FAIL;
+ if (rc != GDK_SUCCEED) {
+ va_end(va);
+ return rc;
+ }
}
- BBPretain(bn->batCacheid);
- /* logical refs of b stay the same: it is moved from
catalog_bid to del */
- bat_destroy(b);
- BUN p = BUNfnd(lg->catalog_id, &cid);
- assert(p != BUN_NONE);
- if (BUNreplace(lg->catalog_bid, p, &bn->batCacheid,
false) != GDK_SUCCEED) {
- va_end(va);
- bat_destroy(bn);
- return GDK_FAIL;
+ else {
+ BAT *bn = COLcopy(b, b->ttype, true,
PERSISTENT);
+ BBPretain(bn->batCacheid);
+ bat_destroy(b);
+ if ((rc = BUNappend(lg->catalog_id, &cid,
false)) == GDK_SUCCEED &&
+ (rc = BUNappend(lg->catalog_bid,
&bn->batCacheid, false)) == GDK_SUCCEED &&
+ (rc = BUNappend(lg->catalog_lid, &lng_nil,
false)) == GDK_SUCCEED &&
+ (rc = BUNappend(lg->catalog_cnt,
&(lng){BATcount(bn)}, false)) == GDK_SUCCEED) {
+ BBPretain(bn->batCacheid);
+ }
+ else {
+ // TODO ERROR?
+ }
+ b = bn;
}
- BBPretain(bn->batCacheid);
- b = bn;
}
rc = BUNappend(b, cval, true);
bat_destroy(b);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list