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 -- [email protected]
To unsubscribe send an email to [email protected]