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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to