Changeset: 36ea4421b969 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=36ea4421b969
Modified Files:
        sql/storage/bat/bat_storage.c
        sql/storage/store.c
Branch: nospare
Log Message:

fixed problem with savepoints (rollback/commit)


diffs (52 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
@@ -2539,8 +2539,7 @@ commit_update_col( sql_trans *tr, sql_ch
                }
                if (ok == LOG_OK && delta == d && oldest == commit_ts)
                        ok = tr_merge_delta(tr, delta);
-       }
-       if (ok == LOG_OK && tr->parent) /* move delta into older and cleanup 
current save points */
+       } else if (ok == LOG_OK && tr->parent) /* move delta into older and 
cleanup current save points */
                c->data = savepoint_commit_delta(delta, commit_ts);
        return ok;
 }
@@ -2618,8 +2617,7 @@ commit_update_idx( sql_trans *tr, sql_ch
                }
                if (ok == LOG_OK && delta == d && oldest == commit_ts)
                        ok = tr_merge_delta(tr, delta);
-       }
-       if (ok == LOG_OK && tr->parent) /* cleanup older save points */
+       } else if (ok == LOG_OK && tr->parent) /* cleanup older save points */
                i->data = savepoint_commit_delta(delta, commit_ts);
        return ok;
 }
@@ -2719,8 +2717,7 @@ commit_update_del( sql_trans *tr, sql_ch
                }
                if (ok == LOG_OK && dbat == d && oldest == commit_ts)
                        ok = tr_merge_dbat(tr, dbat);
-       }
-       if (ok == LOG_OK && tr->parent) {/* cleanup older save points */
+       } else if (ok == LOG_OK && tr->parent) {/* cleanup older save points */
                t->data = savepoint_commit_dbat(dbat, commit_ts);
        }
        return ok;
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3146,7 +3146,6 @@ sql_trans_rollback(sql_trans *tr)
 {
        sqlstore *store = tr->store;
        ulng commit_ts = 0; /* invalid ts, ie rollback */
-       ulng oldest = commit_ts;
 
        /* global's are done via changes ?
        if (0 && commit == 0) {
@@ -3220,6 +3219,7 @@ sql_trans_rollback(sql_trans *tr)
                        list_prepend(nl, n->data);
 
                /* rollback */
+               ulng oldest = store_oldest(store, TRANSACTION_ID_BASE);
                for(node *n=nl->h; n; n = n->next) {
                        sql_change *c = n->data;
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to