Changeset: 921c61c912b3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/921c61c912b3
Modified Files:
sql/storage/sql_catalog.c
sql/storage/store.c
Branch: transaction_layer_revamp
Log Message:
tid = (uncommitted bit | sts | ntid):
where ntid is this transaction's generation in the lineage of a sequence of
nested transactions."
diffs (66 lines):
diff --git a/sql/storage/sql_catalog.c b/sql/storage/sql_catalog.c
--- a/sql/storage/sql_catalog.c
+++ b/sql/storage/sql_catalog.c
@@ -71,9 +71,13 @@ trans_add(sql_trans *tr, sql_base *b, vo
int
tr_version_of_parent(sql_trans *tr, ulng ts)
{
+ bool is_version_of_parent = (tr->tid & TS_MASK) == (ts & TS_MASK);
for( tr = tr->parent; tr; tr = tr->parent)
- if (tr->tid == ts)
+ if (tr->tid == ts) {
+ assert(is_version_of_parent);
return 1;
+ }
+ assert(!is_version_of_parent);
return 0;
}
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -3729,11 +3729,11 @@ sql_trans_create_(sqlstore *store, sql_t
}
tr->ts = pts;
tr->tid = ptid + 1;
- assert((tr->tid | TS_MASK) == tr->ts);
+ assert((tr->tid | TS_MASK | (~TRANSACTION_ID_BASE) ) == tr->ts);
}
else {
- tr->ts = (store_timestamp(store) | TRANSACTION_ID_BASE);
- tr->tid = tr->ts;
+ tr->ts = store_timestamp(store);
+ tr->tid = (tr->ts | TRANSACTION_ID_BASE);
}
tr->cat = store->cat;
if (!tr->cat) {
@@ -3791,8 +3791,7 @@ sql_trans *
sql_trans_create(sqlstore *store, sql_trans *parent, const char *name)
{
sql_trans *tr = sql_trans_create_(store, parent, name);
- if (tr) {
- tr->ts = tr->tid;
+ if (tr) { // TODO: check if this is still necessary
tr->active = 1;
}
return tr;
@@ -7014,7 +7013,7 @@ sql_session_create(sqlstore *store, sql_
_DELETE(s);
return NULL;
}
- s->tr->active = 0;
+ s->tr->active = 0; // TODO maybe do this in sql_trans_create_
if (!sql_session_reset(s, ac)) {
sql_trans_destroy(s->tr);
_DELETE(s);
@@ -7062,8 +7061,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) | TRANSACTION_ID_BASE);
- tr->tid = tr->ts;
+ tr->ts = store_timestamp(store);
+ tr->tid = (tr->ts | TRANSACTION_ID_BASE);
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]