Changeset: 1a720f2abd29 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1a720f2abd29
Modified Files:
        sql/storage/bat/bat_storage.c
Branch: Jun2020
Log Message:

fixing loss of column content in a sequence of truncate/delete all, with large 
inserts/copy into's, under heavy concurrent workloads.


diffs (35 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
@@ -2370,6 +2370,7 @@ tr_handle_snapshot( sql_trans *tr, sql_d
                bat->bid = bat->ibid;
                bat->cnt = bat->ibase = BATcount(ins);
                bat->ibid = e_bat(ins->ttype);
+               bat->cleared = 0;
                BATmsync(ins);
        }
        bat_destroy(ins);
@@ -2406,7 +2407,7 @@ tr_update_delta( sql_trans *tr, sql_delt
                if(!cur)
                        return LOG_ERR;
        }
-       if (!obat->bid && tr != gtrans) {
+       if ((!obat->bid || !cbat->bid) && tr != gtrans) {
                if (obat->next)
                        destroy_bat(obat->next);
                destroy_delta(obat);
@@ -2418,6 +2419,14 @@ tr_update_delta( sql_trans *tr, sql_delt
                cbat->cleared = 0;
                cbat->name = NULL;
                cbat->cached = NULL;
+               if (!obat->bid) {
+                       cur = temp_descriptor(obat->ibid);
+                       obat->bid = obat->ibid;
+                       obat->cnt = obat->ibase = BATcount(cur);
+                       obat->ibid = e_bat(cur->ttype);
+                       bat_destroy(cur);
+                       obat->cleared = 0;
+               }
                return ok;
        }
        ins = temp_descriptor(cbat->ibid);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to