Changeset: 28f19e3cb7d8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/28f19e3cb7d8 Modified Files: sql/storage/bat/bat_storage.c sql/storage/store.c Branch: transaction_layer_revamp Log Message:
set tid and ts equal on transaction. diffs (108 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 @@ -1222,7 +1222,7 @@ segments_is_deleted(segment *s, sql_tran { for(; s; s=s->next) { if (s->start <= rid && s->end > rid) { - if (s->ts >= tr->ts && s->deleted) { + if ((s->ts == tr->tid || s->ts > tr->ts) && s->deleted) { return 1; } break; @@ -1516,7 +1516,7 @@ cs_update_bat( sql_trans *tr, sql_delta for(segment *seg = s->segs->h; seg && res == LOG_OK ; seg=seg->next) { if (seg->start <= start && seg->end > start) { /* check for delete conflicts */ - if (seg->ts >= tr->ts && seg->deleted) { + if ((seg->ts == tr->tid || seg->ts > tr->ts) && seg->deleted) { res = LOG_CONFLICT; continue; } @@ -1561,7 +1561,7 @@ cs_update_bat( sql_trans *tr, sql_delta seg = seg->next; else if (seg->start <= rid && seg->end > rid) { /* check for delete conflicts */ - if (seg->ts >= tr->ts && seg->deleted) { + if ((seg->ts == tr->tid || seg->ts > tr->ts) && seg->deleted) { res = LOG_CONFLICT; continue; } @@ -1601,7 +1601,7 @@ cs_update_bat( sql_trans *tr, sql_delta seg = seg->next; else if (seg->start <= rid[i] && seg->end > rid[i]) { /* check for delete conflicts */ - if (seg->ts >= tr->ts && seg->deleted) { + if ((seg->ts == tr->tid || seg->ts > tr->ts) && seg->deleted) { res = LOG_CONFLICT; continue; } diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -43,13 +43,6 @@ store_get_timestamp(sqlstore *store) return ts; } -static ulng -store_transaction_id(sqlstore *store) -{ - ulng tid = ATOMIC_INC(&store->transaction); - return tid; -} - ulng store_oldest(sqlstore *store) { @@ -3724,7 +3717,13 @@ sql_trans_create_(sqlstore *store, sql_t store_lock(store); tr->store = store; - tr->tid = store_transaction_id(store); + if (parent) { + tr->ts = parent->ts; + tr->tid = parent->tid + 1; + } + ulng nt_part = parent?(parent->tid - parent->ts):0; + tr->ts = (store_timestamp(store) | TRANSACTION_ID_BASE); + tr->tid = tr->ts + nt_part ; tr->cat = store->cat; if (!tr->cat) { store->cat = tr->cat = SA_ZNEW(tr->sa, sql_catalog); @@ -3782,7 +3781,7 @@ sql_trans_create(sqlstore *store, sql_tr { sql_trans *tr = sql_trans_create_(store, parent, name); if (tr) { - tr->ts = store_timestamp(store); + tr->ts = tr->tid; tr->active = 1; } return tr; @@ -3858,7 +3857,7 @@ transaction_check_dependencies_and_remov sql_dependency_change *schange = (sql_dependency_change*) he->value; /* conflict only if transactions overlap */ - if (schange->ts >= tr->ts && lchange->objid == schange->objid && lchange->type == schange->type) + if ((schange->ts == tr->tid || schange->ts > tr->ts ) && lchange->objid == schange->objid && lchange->type == schange->type) ok = LOG_CONFLICT; } } @@ -3873,7 +3872,7 @@ transaction_check_dependencies_and_remov sql_dependency_change *schange = (sql_dependency_change*) he->value; /* conflict only if transactions overlap */ - if (schange->ts >= tr->ts && lchange->objid == schange->objid && lchange->type == schange->type) + if ((schange->ts == tr->tid || schange->ts > tr->ts ) && lchange->objid == schange->objid && lchange->type == schange->type) ok = LOG_CONFLICT; } } @@ -7043,7 +7042,8 @@ sql_trans_begin(sql_session *s) store_lock(store); TRC_DEBUG(SQL_STORE, "Enter sql_trans_begin for transaction: " ULLFMT "\n", tr->tid); - tr->ts = store_timestamp(store); + tr->ts = (store_timestamp(store) | TRANSACTION_ID_BASE); + tr->tid = tr->ts; if (!(s->schema = find_sql_schema(tr, s->schema_name))) { TRC_DEBUG(SQL_STORE, "Exit sql_trans_begin for transaction: " ULLFMT " with error, the schema %s was not found\n", tr->tid, s->schema_name); store_unlock(store); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org