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

add missing condition


diffs (25 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
@@ -4000,15 +4000,18 @@ bind_cands(sql_trans *tr, sql_table *t, 
 static int
 swap_bats(sql_trans *tr, sql_column *col, BAT *bn)
 {
-       sql_delta *d = NULL;
        bool update_conflict = false;
        int in_transaction = segments_in_transaction(tr, col->t);
        if (in_transaction) return LOG_CONFLICT;
+       sql_delta *d = NULL;
+       // old delta
+       sql_delta *odelta = ATOMIC_PTR_GET(&col->data);
 
        if ((d = bind_col_data(tr, col, &update_conflict)) == NULL)
                return update_conflict ? LOG_CONFLICT : LOG_ERR;
-       // TODO is this right ???
-       trans_add(tr, &col->base, d, &tc_gc_col, &commit_create_col, 
&log_update_col);
+       assert(d && d->cs.ts == tr->tid);
+       if ((!inTransaction(tr, col->t) && (odelta != d || isTempTable(col->t)) 
&& isGlobal(col->t)) || (!isNew(col->t) && isLocalTemp(col->t)))
+               trans_add(tr, &col->base, d, &tc_gc_col, &commit_create_col, 
&log_update_col);
        sqlid id = col->base.id;
        bat bid = d->cs.bid;
        lock_column(tr->store, id);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to