reth_libmdbx

Struct Transaction

Source
pub struct Transaction<K>
where K: TransactionKind,
{ /* private fields */ }
Expand description

An MDBX transaction.

All database operations require a transaction.

Implementations§

Source§

impl<K> Transaction<K>
where K: TransactionKind,

Source

pub fn txn_execute<F, T>(&self, f: F) -> Result<T>
where F: FnOnce(*mut MDBX_txn) -> T,

Executes the given closure once the lock on the transaction is acquired.

The caller must ensure that the pointer is not used after the lifetime of the transaction.

Source

pub fn env(&self) -> &Environment

Returns a raw pointer to the MDBX environment.

Source

pub fn id(&self) -> Result<u64>

Returns the transaction id.

Source

pub fn get<Key>(&self, dbi: MDBX_dbi, key: &[u8]) -> Result<Option<Key>>
where Key: TableObject,

Gets an item from a database.

This function retrieves the data associated with the given key in the database. If the database supports duplicate keys (DatabaseFlags::DUP_SORT) then the first data item for the key will be returned. Retrieval of other items requires the use of Cursor. If the item is not in the database, then None will be returned.

Source

pub fn commit(self) -> Result<(bool, CommitLatency)>

Commits the transaction.

Any pending operations will be saved.

Source

pub fn prime_for_permaopen(&self, db: Database)

Source

pub fn commit_and_rebind_open_dbs( self, ) -> Result<(bool, CommitLatency, Vec<Database>)>

Commits the transaction and returns table handles permanently open until dropped.

Source

pub fn open_db(&self, name: Option<&str>) -> Result<Database>

Opens a handle to an MDBX database.

If name is None, then the returned handle will be for the default database.

If name is not None, then the returned handle will be for a named database. In this case the environment must be configured to allow named databases through EnvironmentBuilder::set_max_dbs().

The returned database handle may be shared among any transaction in the environment.

The database name may not contain the null character.

Source

pub fn db_flags(&self, db: &Database) -> Result<DatabaseFlags>

Gets the option flags for the given database in the transaction.

Source

pub fn db_stat(&self, db: &Database) -> Result<Stat>

Retrieves database statistics.

Source

pub fn db_stat_with_dbi(&self, dbi: MDBX_dbi) -> Result<Stat>

Retrieves database statistics by the given dbi.

Source

pub fn cursor(&self, db: &Database) -> Result<Cursor<K>>

Open a new cursor on the given database.

Source

pub fn cursor_with_dbi(&self, dbi: MDBX_dbi) -> Result<Cursor<K>>

Open a new cursor on the given dbi.

Source

pub fn disable_timeout(&self)

Available on crate feature read-tx-timeouts only.

Disables a timeout for this read transaction.

Source§

impl Transaction<RW>

Source

pub fn create_db( &self, name: Option<&str>, flags: DatabaseFlags, ) -> Result<Database>

Opens a handle to an MDBX database, creating the database if necessary.

If the database is already created, the given option flags will be added to it.

If name is None, then the returned handle will be for the default database.

If name is not None, then the returned handle will be for a named database. In this case the environment must be configured to allow named databases through EnvironmentBuilder::set_max_dbs().

This function will fail with Error::BadRslot if called by a thread with an open transaction.

Source

pub fn put( &self, dbi: MDBX_dbi, key: impl AsRef<[u8]>, data: impl AsRef<[u8]>, flags: WriteFlags, ) -> Result<()>

Stores an item into a database.

This function stores key/data pairs in the database. The default behavior is to enter the new key/data pair, replacing any previously existing key if duplicates are disallowed, or adding a duplicate data item if duplicates are allowed (DatabaseFlags::DUP_SORT).

Source

pub fn reserve( &self, db: &Database, key: impl AsRef<[u8]>, len: usize, flags: WriteFlags, ) -> Result<&mut [u8]>

Returns a buffer which can be used to write a value into the item at the given key and with the given length. The buffer must be completely filled by the caller.

Source

pub fn del( &self, dbi: MDBX_dbi, key: impl AsRef<[u8]>, data: Option<&[u8]>, ) -> Result<bool>

Delete items from a database. This function removes key/data pairs from the database.

The data parameter is NOT ignored regardless the database does support sorted duplicate data items or not. If the data parameter is Some only the matching data item will be deleted. Otherwise, if data parameter is None, any/all value(s) for specified key will be deleted.

Returns true if the key/value pair was present.

Source

pub fn clear_db(&self, dbi: MDBX_dbi) -> Result<()>

Empties the given database. All items will be removed.

Source

pub unsafe fn drop_db(&self, db: Database) -> Result<()>

Drops the database from the environment.

§Safety

Caller must close ALL other Database and Cursor instances pointing to the same dbi BEFORE calling this function.

Source§

impl Transaction<RO>

Source

pub unsafe fn close_db(&self, db: Database) -> Result<()>

Closes the database handle.

§Safety

Caller must close ALL other Database and Cursor instances pointing to the same dbi BEFORE calling this function.

Source§

impl Transaction<RW>

Source

pub fn begin_nested_txn(&mut self) -> Result<Self>

Begins a new nested transaction inside of this transaction.

Trait Implementations§

Source§

impl<K> Clone for Transaction<K>
where K: TransactionKind,

Source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<K> Debug for Transaction<K>
where K: TransactionKind,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<K> Freeze for Transaction<K>

§

impl<K> !RefUnwindSafe for Transaction<K>

§

impl<K> Send for Transaction<K>

§

impl<K> Sync for Transaction<K>

§

impl<K> Unpin for Transaction<K>

§

impl<K> !UnwindSafe for Transaction<K>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit #126799)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 8 bytes