TransactionSession

Struct TransactionSession 

Source
pub struct TransactionSession<BaseCtx, StagingCtx>
where BaseCtx: TransactionContext + 'static, StagingCtx: TransactionContext + 'static,
{ /* private fields */ }
Expand description

A session handle for transaction management.

When dropped, automatically rolls back any active transaction.

Implementations§

Source§

impl<BaseCtx, StagingCtx> TransactionSession<BaseCtx, StagingCtx>
where BaseCtx: TransactionContext + 'static, StagingCtx: TransactionContext + 'static,

Source

pub fn new( context: Arc<BaseCtx>, session_id: u64, transactions: Arc<Mutex<HashMap<u64, SessionTransaction<BaseCtx, StagingCtx>>>>, txn_manager: Arc<TxnIdManager>, ) -> TransactionSession<BaseCtx, StagingCtx>

Source

pub fn clone_session(&self) -> TransactionSession<BaseCtx, StagingCtx>

Clone this session (reuses the same session_id and shared transaction map). This is necessary to maintain transaction state across Engine clones.

Source

pub fn session_id(&self) -> u64

Get the session ID.

Source

pub fn context(&self) -> &Arc<BaseCtx>

Get the underlying context (for advanced use).

Source

pub fn has_active_transaction(&self) -> bool

Check if this session has an active transaction.

Source

pub fn is_aborted(&self) -> bool

Check if the current transaction has been aborted due to an error.

Source

pub fn is_table_created_in_transaction(&self, table_name: &str) -> bool

Check if a table was created in the current active transaction. Returns true if there’s an active transaction and the table exists in its new_tables set.

Source

pub fn table_column_specs_from_transaction( &self, table_name: &str, ) -> Option<Vec<PlanColumnSpec>>

Get column specifications for a table created in the current transaction. Returns None if there’s no active transaction or the table wasn’t created in it.

Source

pub fn tables_referencing_in_transaction( &self, referenced_table: &str, ) -> Vec<String>

Get tables that reference the given table via foreign keys created in the current transaction. Returns an empty vector if there’s no active transaction or no transactional FKs reference this table.

Source

pub fn has_table_locked_by_other_session(&self, table_name: &str) -> bool

Check if a table is locked by another active session’s transaction. Returns true if ANY other session has this table in their locked_table_names.

Source

pub fn abort_transaction(&self)

Mark the current transaction as aborted due to an error. This should be called when any error occurs during a transaction.

Source

pub fn begin_transaction( &self, staging: Arc<StagingCtx>, ) -> Result<TransactionResult<<BaseCtx as TransactionContext>::Pager>, Error>

Begin a transaction in this session.

Source

pub fn commit_transaction( &self, ) -> Result<(TransactionResult<<BaseCtx as TransactionContext>::Pager>, Vec<PlanOperation>), Error>

Commit the transaction in this session. If the transaction is aborted, this acts as a ROLLBACK instead.

Source

pub fn rollback_transaction( &self, ) -> Result<TransactionResult<<BaseCtx as TransactionContext>::Pager>, Error>

Rollback the transaction in this session.

Source

pub fn execute_operation( &self, operation: PlanOperation, ) -> Result<TransactionResult<<StagingCtx as TransactionContext>::Pager>, Error>

Execute an operation in this session’s transaction, or directly if no transaction is active.

Trait Implementations§

Source§

impl<BaseCtx, StagingCtx> Drop for TransactionSession<BaseCtx, StagingCtx>
where BaseCtx: TransactionContext, StagingCtx: TransactionContext,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<BaseCtx, StagingCtx> Freeze for TransactionSession<BaseCtx, StagingCtx>

§

impl<BaseCtx, StagingCtx> RefUnwindSafe for TransactionSession<BaseCtx, StagingCtx>
where BaseCtx: RefUnwindSafe,

§

impl<BaseCtx, StagingCtx> Send for TransactionSession<BaseCtx, StagingCtx>

§

impl<BaseCtx, StagingCtx> Sync for TransactionSession<BaseCtx, StagingCtx>

§

impl<BaseCtx, StagingCtx> Unpin for TransactionSession<BaseCtx, StagingCtx>

§

impl<BaseCtx, StagingCtx> UnwindSafe for TransactionSession<BaseCtx, StagingCtx>
where BaseCtx: RefUnwindSafe,

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,