Changeset: a0cb907f139a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a0cb907f139a
Modified Files:
        sql/storage/store.c
Branch: default
Log Message:

fix lookup of oldest active transaction


diffs (32 lines):

diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -61,14 +61,20 @@ store_transaction_id(sqlstore *store)
 ulng
 store_oldest(sqlstore *store, sql_trans *tr)
 {
-       if (tr && tr->ts == (ulng) ATOMIC_GET(&store->oldest)) {
-               sql_trans *otr = store->active->h->data;
-               if (otr == tr && store->active->h->next) {
-                       otr = store->active->h->next->data;
-                       return otr->ts;
-               }
-       }
-       return (ulng) ATOMIC_GET(&store->oldest);
+       ulng oldest = (ulng) ATOMIC_GET(&store->oldest);
+
+       if (tr && tr->ts == oldest) {
+               ulng noldest = 0;
+               for (node *n = store->active->h; n; n = n->next) {
+                       sql_trans *otr = n->data;
+                       /* go over all active transactions as transaction 
timestamps change in the commit */
+                       if (otr != tr && otr->active == 1 && (!noldest || 
otr->ts < noldest))
+                               noldest = otr->ts;
+               }
+               if (noldest)
+                       oldest = noldest;
+       }
+       return oldest;
 }
 
 static ulng
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to