Struct tikv::storage::mvcc::MvccTxn[][src]

pub struct MvccTxn {
    pub(crate) start_ts: TimeStamp,
    pub(crate) write_size: usize,
    pub(crate) modifies: Vec<Modify>,
    pub(crate) locks_for_1pc: Vec<(Key, Lock, bool)>,
    pub(crate) concurrency_manager: ConcurrencyManager,
    pub(crate) guards: Vec<KeyHandleGuard>,
}

An abstraction of a locally-transactional MVCC key-value store

Fields

start_ts: TimeStampwrite_size: usizemodifies: Vec<Modify>locks_for_1pc: Vec<(Key, Lock, bool)>concurrency_manager: ConcurrencyManagerguards: Vec<KeyHandleGuard>

Implementations

impl MvccTxn[src]

pub fn new(
    start_ts: TimeStamp,
    concurrency_manager: ConcurrencyManager
) -> MvccTxn
[src]

pub fn into_modifies(self) -> Vec<Modify>[src]

pub fn take_guards(&mut self) -> Vec<KeyHandleGuard>[src]

pub fn write_size(&self) -> usize[src]

pub(crate) fn put_lock(&mut self, key: Key, lock: &Lock)[src]

pub(crate) fn put_locks_for_1pc(
    &mut self,
    key: Key,
    lock: Lock,
    remove_pessimstic_lock: bool
)
[src]

pub(crate) fn unlock_key(
    &mut self,
    key: Key,
    pessimistic: bool
) -> Option<ReleasedLock>
[src]

pub(crate) fn put_value(&mut self, key: Key, ts: TimeStamp, value: Value)[src]

pub(crate) fn delete_value(&mut self, key: Key, ts: TimeStamp)[src]

pub(crate) fn put_write(&mut self, key: Key, ts: TimeStamp, value: Value)[src]

pub(crate) fn delete_write(&mut self, key: Key, ts: TimeStamp)[src]

pub(crate) fn mark_rollback_on_mismatching_lock(
    &mut self,
    key: &Key,
    lock: Lock,
    is_protected: bool
)
[src]

Add the timestamp of the current rollback operation to another transaction’s lock if necessary.

When putting rollback record on a key that’s locked by another transaction, the second transaction may overwrite the current rollback record when it’s committed. Sometimes it may break consistency. To solve the problem, add the timestamp of the current rollback to the lock. So when the lock is committed, it can check if it will overwrite a rollback record by checking the information in the lock.

Trait Implementations

impl Debug for MvccTxn[src]

Auto Trait Implementations

impl !RefUnwindSafe for MvccTxn

impl Send for MvccTxn

impl Sync for MvccTxn

impl Unpin for MvccTxn

impl !UnwindSafe for MvccTxn

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<V, W> ConvertFrom<W> for V where
    W: ConvertTo<V>, 
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Same<T> for T[src]

type Output = T

Should always be Self

impl<T> Sealed<T> for T where
    T: ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]