Changeset: 74cb555763f1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=74cb555763f1
Modified Files:
sql/storage/bat/bat_storage.c
Branch: default
Log Message:
make sure cleared snapshots get properly flushed during log rotation
diffs (34 lines):
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
@@ -2119,13 +2119,14 @@ clear_del(sql_trans *tr, sql_table *t)
static int
gtr_update_delta( sql_trans *tr, sql_delta *cbat, int *changes, int id, int
tpe)
{
- int ok = LOG_OK;
+ int ok = LOG_OK, cleared = 0;
BAT *ins, *cur;
(void)tr;
assert(ATOMIC_GET(&store_nr_active)==0);
if (!cbat->bid) {
+ cleared = 1;
cbat->bid = logger_find_bat(bat_logger, cbat->name, tpe, id);
temp_dup(cbat->bid);
}
@@ -2139,6 +2140,14 @@ gtr_update_delta( sql_trans *tr, sql_del
return LOG_ERR;
}
assert(!isEbat(cur));
+ /* A snapshot column after being cleared */
+ if (cbat->bid == cbat->ibid && cleared) {
+ cbat->cnt = cbat->ibase = BATcount(cur);
+ temp_destroy(cbat->ibid);
+ cbat->ibid = e_bat(cur->ttype);
+ if(cbat->ibid == BID_NIL)
+ ok = LOG_ERR;
+ } else
/* any inserts */
if (BUNlast(ins) > 0 || cbat->cleared) {
(*changes)++;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list