Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
duckdb::DuckTransactionManager Class Reference
Inheritance diagram for duckdb::DuckTransactionManager:
Collaboration diagram for duckdb::DuckTransactionManager:

Classes

struct  CheckpointDecision
 

Public Member Functions

 DuckTransactionManager (AttachedDatabase &db)
 
TransactionStartTransaction (ClientContext &context) override
 Start a new transaction.
 
ErrorData CommitTransaction (ClientContext &context, Transaction &transaction) override
 Commit the given transaction.
 
void RollbackTransaction (Transaction &transaction) override
 Rollback the given transaction.
 
void Checkpoint (ClientContext &context, bool force=false) override
 
transaction_t LowestActiveId () const
 
transaction_t LowestActiveStart () const
 
transaction_t GetLastCommit () const
 
transaction_t GetActiveCheckpoint () const
 
transaction_t GetNewCheckpointId ()
 
void ResetCheckpointId ()
 
bool IsDuckTransactionManager () override
 
unique_ptr< StorageLockKeySharedCheckpointLock ()
 Obtains a shared lock to the checkpoint lock.
 
unique_ptr< StorageLockKeyTryGetCheckpointLock ()
 Try to obtain an exclusive checkpoint lock.
 
unique_ptr< StorageLockKeyTryUpgradeCheckpointLock (StorageLockKey &lock)
 
unique_ptr< StorageLockKeySharedVacuumLock ()
 
unique_ptr< StorageLockKeyTryGetVacuumLock ()
 
DUCKDB_API idx_t GetCatalogVersion (Transaction &transaction)
 Returns the current version of the catalog (incremented whenever anything changes, not stored between restarts)
 
void PushCatalogEntry (Transaction &transaction_p, CatalogEntry &entry, data_ptr_t extra_data=nullptr, idx_t extra_data_size=0)
 
void PushAttach (Transaction &transaction_p, AttachedDatabase &db)
 
- Public Member Functions inherited from duckdb::TransactionManager
 TransactionManager (AttachedDatabase &db)
 
AttachedDatabaseGetDB ()
 
template<class TARGET >
TARGETCast ()
 
template<class TARGET >
const TARGETCast () const
 

Static Public Member Functions

static DuckTransactionManagerGet (AttachedDatabase &db)
 
- Static Public Member Functions inherited from duckdb::TransactionManager
static TransactionManagerGet (AttachedDatabase &db)
 

Protected Member Functions

virtual void OnCommitCheckpointDecision (const CheckpointDecision &decision, DuckTransaction &transaction)
 

Private Member Functions

transaction_t GetCommitTimestamp ()
 Generates a new commit timestamp.
 
unique_ptr< DuckCleanupInfoRemoveTransaction (DuckTransaction &transaction) noexcept
 Remove the given transaction from the list of active transactions.
 
unique_ptr< DuckCleanupInfoRemoveTransaction (DuckTransaction &transaction, bool store_transaction) noexcept
 Remove the given transaction from the list of active transactions.
 
CheckpointDecision CanCheckpoint (DuckTransaction &transaction, unique_ptr< StorageLockKey > &checkpoint_lock, const UndoBufferProperties &properties)
 Whether or not we can checkpoint.
 
CheckpointDecision GetCheckpointType (DuckTransaction &transaction, const UndoBufferProperties &undo_properties)
 Get the checkpoint type of an automatic checkpoint.
 
bool HasOtherTransactions (DuckTransaction &transaction)
 
void CleanupTransactions ()
 

Private Attributes

transaction_t current_start_timestamp
 The current start timestamp used by transactions.
 
transaction_t current_transaction_id
 The current transaction ID used by transactions.
 
atomic< transaction_tlowest_active_id
 The lowest active transaction id.
 
atomic< transaction_tlowest_active_start
 The lowest active transaction timestamp.
 
atomic< transaction_tlast_commit
 The last commit timestamp.
 
atomic< transaction_tactive_checkpoint
 The currently active checkpoint.
 
vector< unique_ptr< DuckTransaction > > active_transactions
 Set of currently running transactions.
 
vector< unique_ptr< DuckTransaction > > recently_committed_transactions
 Set of recently committed transactions.
 
mutex transaction_lock
 The lock used for transaction operations.
 
StorageLock checkpoint_lock
 The checkpoint lock.
 
StorageLock vacuum_lock
 The vacuum lock - necessary to start vacuum operations.
 
mutex start_transaction_lock
 Lock necessary to start transactions only - used by FORCE CHECKPOINT to prevent new transactions from starting.
 
atomic< idx_tlast_uncommitted_catalog_version = {TRANSACTION_ID_START}
 
idx_t last_committed_version = 0
 
mutex cleanup_lock
 Only one cleanup can be active at any time.
 
mutex cleanup_queue_lock
 Changes to the cleanup queue must be synchronized.
 
queue< unique_ptr< DuckCleanupInfo > > cleanup_queue
 

Additional Inherited Members

- Protected Attributes inherited from duckdb::TransactionManager
AttachedDatabasedb
 The attached database.
 

Detailed Description

The Transaction Manager is responsible for creating and managing transactions

Member Function Documentation

◆ StartTransaction()

Transaction & duckdb::DuckTransactionManager::StartTransaction ( ClientContext context)
overridevirtual

Start a new transaction.

Implements duckdb::TransactionManager.

◆ CommitTransaction()

ErrorData duckdb::DuckTransactionManager::CommitTransaction ( ClientContext context,
Transaction transaction 
)
overridevirtual

Commit the given transaction.

Implements duckdb::TransactionManager.

◆ RollbackTransaction()

void duckdb::DuckTransactionManager::RollbackTransaction ( Transaction transaction)
overridevirtual

Rollback the given transaction.

Implements duckdb::TransactionManager.

◆ Checkpoint()

void duckdb::DuckTransactionManager::Checkpoint ( ClientContext context,
bool  force = false 
)
overridevirtual

◆ LowestActiveId()

transaction_t duckdb::DuckTransactionManager::LowestActiveId ( ) const
inline
22764 {
22765 return lowest_active_id;
22766 }
atomic< transaction_t > lowest_active_id
The lowest active transaction id.
Definition duckdb.cpp:22832

◆ LowestActiveStart()

transaction_t duckdb::DuckTransactionManager::LowestActiveStart ( ) const
inline
22767 {
22768 return lowest_active_start;
22769 }
atomic< transaction_t > lowest_active_start
The lowest active transaction timestamp.
Definition duckdb.cpp:22834

◆ GetLastCommit()

transaction_t duckdb::DuckTransactionManager::GetLastCommit ( ) const
inline
22770 {
22771 return last_commit;
22772 }
atomic< transaction_t > last_commit
The last commit timestamp.
Definition duckdb.cpp:22836

◆ GetActiveCheckpoint()

transaction_t duckdb::DuckTransactionManager::GetActiveCheckpoint ( ) const
inline
22773 {
22774 return active_checkpoint;
22775 }
atomic< transaction_t > active_checkpoint
The currently active checkpoint.
Definition duckdb.cpp:22838

◆ IsDuckTransactionManager()

bool duckdb::DuckTransactionManager::IsDuckTransactionManager ( )
inlineoverridevirtual

Reimplemented from duckdb::TransactionManager.

22779 {
22780 return true;
22781 }

◆ OnCommitCheckpointDecision()

virtual void duckdb::DuckTransactionManager::OnCommitCheckpointDecision ( const CheckpointDecision decision,
DuckTransaction transaction 
)
inlineprotectedvirtual
22865 {
22866 }

Member Data Documentation

◆ last_uncommitted_catalog_version

atomic<idx_t> duckdb::DuckTransactionManager::last_uncommitted_catalog_version = {TRANSACTION_ID_START}
private
22852{TRANSACTION_ID_START};

◆ cleanup_queue

queue<unique_ptr<DuckCleanupInfo> > duckdb::DuckTransactionManager::cleanup_queue
private

Cleanups have to happen in-order. E.g., if one transaction drops a table, and another creates a table, inverting the cleanup order can result in catalog errors.


The documentation for this class was generated from the following file: