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]