diff --git a/include/concurrency/metadata.h b/include/concurrency/metadata.h index 41ed739..cf46e11 100644 --- a/include/concurrency/metadata.h +++ b/include/concurrency/metadata.h @@ -54,9 +54,9 @@ class Metadata : _original_record_identifier(other._original_record_identifier), _begin_timestamp(timestamp::make_infinity()), _end_timestamp(timestamp::make_infinity()) { - _begin_timestamp.store(other._begin_timestamp.load()); - _end_timestamp.store(other._end_timestamp.load()); - _next_in_version_chain.store(other._next_in_version_chain.load()); + _begin_timestamp = other._begin_timestamp; + _end_timestamp = other._end_timestamp; + _next_in_version_chain = other._next_in_version_chain; } ~Metadata() = default; @@ -66,7 +66,7 @@ class Metadata */ [[nodiscard]] timestamp begin_timestamp() const { - return _begin_timestamp.load(); + return _begin_timestamp; } /** @@ -75,7 +75,7 @@ class Metadata */ [[nodiscard]] timestamp end_timestamp() const { - return _end_timestamp.load(); + return _end_timestamp; } /** @@ -83,7 +83,7 @@ class Metadata */ [[nodiscard]] storage::RecordIdentifier next_in_version_chain() const { - return _next_in_version_chain.load(); + return _next_in_version_chain; } /** @@ -92,7 +92,7 @@ class Metadata */ void begin_timestamp(const timestamp timestamp) { - _begin_timestamp.store(timestamp); + _begin_timestamp = timestamp; } /** @@ -105,7 +105,11 @@ class Metadata */ bool try_begin_timestamp(timestamp old_timestamp, const timestamp timestamp) { - return _begin_timestamp.compare_exchange_strong(old_timestamp, timestamp); + if (_begin_timestamp == old_timestamp){ + _begin_timestamp = timestamp; + return true; + } + return false; } /** @@ -114,7 +118,7 @@ class Metadata */ void end_timestamp(const timestamp timestamp) { - _end_timestamp.store(timestamp); + _end_timestamp = timestamp; } /** @@ -127,7 +131,11 @@ class Metadata */ bool try_end_timestamp(timestamp old_timestamp, const timestamp timestamp) { - return _end_timestamp.compare_exchange_strong(old_timestamp, timestamp); + if (_end_timestamp == old_timestamp){ + _end_timestamp = timestamp; + return true; + } + return false; } /** @@ -136,7 +144,7 @@ class Metadata */ void next_in_version_chain(const storage::RecordIdentifier next) { - _next_in_version_chain.store(next); + _next_in_version_chain = next; } /** @@ -147,17 +155,16 @@ class Metadata return _original_record_identifier; } - private: // Pointer to the record in the table space. storage::RecordIdentifier _original_record_identifier; // Timestamp the record begins living. - std::atomic _begin_timestamp; + timestamp _begin_timestamp; // Timestamp the record dies. - std::atomic _end_timestamp; + timestamp _end_timestamp; // Pointer to the next record in version chain. - std::atomic _next_in_version_chain; + storage::RecordIdentifier _next_in_version_chain; }; -} // namespace beedb::concurrency \ No newline at end of file +} // namespace beedb::concurrency diff --git a/include/concurrency/timestamp.h b/include/concurrency/timestamp.h index ad45b62..a64df24 100644 --- a/include/concurrency/timestamp.h +++ b/include/concurrency/timestamp.h @@ -113,4 +113,4 @@ class timestamp // Time and committed flag (last bit). timestamp_t _timestamp_and_committed_flag = 1u; }; -} // namespace beedb::concurrency \ No newline at end of file +} // namespace beedb::concurrency diff --git a/include/storage/record_identifier.h b/include/storage/record_identifier.h index 5b54f36..30803e0 100644 --- a/include/storage/record_identifier.h +++ b/include/storage/record_identifier.h @@ -88,4 +88,4 @@ template <> struct hash return std::hash()(static_cast(rid)); } }; -} // namespace std \ No newline at end of file +} // namespace std