Skip to main content

MemoryKeyValueStore

Struct MemoryKeyValueStore 

Source
pub struct MemoryKeyValueStore { /* private fields */ }
Expand description

In-memory Key/Value store used by trait-level tests and future non-SQL fixtures.

Implementations§

Trait Implementations§

Source§

impl Debug for MemoryKeyValueStore

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for MemoryKeyValueStore

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl KeyValueStore for MemoryKeyValueStore

Source§

fn with_read_view( &self, read: &mut KeyValueReadScope<'_>, ) -> StorageBackendResult<()>

Evaluate a compound read once against one fixed committed/private view. The callback must use the supplied reader and must not reenter this session. Stores without this capability reject it explicitly.
Source§

fn with_mutation( &self, mutate: &mut KeyValueMutation<'_>, ) -> StorageBackendResult<()>

Evaluate once against the same view that supplies write preconditions, then atomically stage the batch. Errors and unwinds discard that batch; failed publication retains the evaluated attempt. The callback must not reenter this session or perform transaction control.
Source§

fn visit_value( &self, key: &[u8], control: &StorageReadControl, visit: &mut ValueReadVisitor<'_>, ) -> StorageBackendResult<()>

Visit one borrowed value under the retained read. Providers reserve any temporary encoded payload before fetching it; callbacks must not reenter the store.
Source§

fn visit_prefix_after( &self, prefix: &[u8], after: Option<&[u8]>, limit: usize, control: &StorageReadControl, visit: &mut KeyValueReadVisitor<'_>, ) -> StorageBackendResult<()>

Visit at most limit entries in key order, strictly after after when supplied. Encoded values remain borrowed from their provider owner and callbacks must not reenter the store.
Source§

fn get(&self, key: &[u8]) -> StorageBackendResult<Option<Vec<u8>>>

Source§

fn contains_key(&self, key: &[u8]) -> StorageBackendResult<bool>

Source§

fn put(&self, key: &[u8], value: &[u8]) -> StorageBackendResult<()>

Source§

fn delete(&self, key: &[u8]) -> StorageBackendResult<()>

Source§

fn scan_prefix( &self, prefix: &[u8], ) -> StorageBackendResult<Vec<(Vec<u8>, Vec<u8>)>>

Source§

fn scan_prefix_after( &self, prefix: &[u8], after: Option<&[u8]>, limit: usize, ) -> StorageBackendResult<Vec<(Vec<u8>, Vec<u8>)>>

Return at most limit key/value pairs in key order, strictly after after when supplied. This is the bounded value cursor used by large format migrations and other paged consumers.
Source§

fn scan_prefix_keys_after( &self, prefix: &[u8], after: Option<&[u8]>, limit: usize, ) -> StorageBackendResult<Vec<Vec<u8>>>

Return at most limit keys in key order, strictly after after when it is present. Backends should override this method with a key-only, bounded range scan so cursor consumers neither materialize the entire prefix nor read values they do not need on every page.
Source§

fn first_prefix_after( &self, prefix: &[u8], after: Option<&[u8]>, ) -> StorageBackendResult<Option<(Vec<u8>, Vec<u8>)>>

Source§

fn delete_prefix(&self, prefix: &[u8]) -> StorageBackendResult<usize>

Source§

fn batch(&self) -> Box<dyn KeyValueBatch + '_>

Source§

fn begin_transaction(&self) -> StorageBackendResult<()>

Source§

fn begin_read_transaction(&self) -> StorageBackendResult<()>

Source§

fn in_transaction(&self) -> bool

Source§

fn transaction_has_written(&self) -> StorageBackendResult<bool>

Report ordinary record and derived-index writes, excluding typed auxiliary notification effects. Ordinary writes remain forbidden in read-only transactions.
Source§

fn change_version(&self) -> StorageBackendResult<Option<u64>>

Source§

fn commit_transaction(&self) -> StorageBackendResult<()>

Source§

fn rollback_transaction(&self) -> StorageBackendResult<()>

Source§

fn savepoint(&self, name: &str) -> StorageBackendResult<()>

Source§

fn release_savepoint(&self, name: &str) -> StorageBackendResult<()>

Source§

fn rollback_to_savepoint(&self, name: &str) -> StorageBackendResult<()>

Source§

fn resource_leases(&self) -> Option<&dyn ResourceLeaseProvider>

Physical resource ownership for retained builds and recovery. Versioned wrappers must forward this capability.
Source§

fn auxiliary_encryption_key(&self) -> Option<StorageEncryptionKey>

Credential for database-owned auxiliary files. Wrappers over an encrypted store must forward it; None permits unencrypted auxiliary storage.
Source§

fn retention_control(&self) -> Option<StorageReadControl>

Shared session allowance, including resources retained by readers after their producer finishes. Versioned wrappers must forward this capability.
Source§

fn notification_publications(&self) -> Option<&dyn NotificationPublicationStore>

Atomic auxiliary notification publication and fresh committed recovery. Session wrappers must forward this capability.
Source§

fn serializable_session(&self) -> Option<&dyn SerializableSession>

Original participant admission and logical observations. Wrappers must forward this capability, including original attribution on retained read-only sessions; capability presence does not establish complete SQL SSI support.
Source§

fn reclaim_obsolete(&self) -> StorageBackendResult<()>

Reclaim obsolete records and committed history without a whole-file rewrite. Versioned wrappers must forward maintenance; serialized stores that eagerly remove obsolete values may keep the default.
Source§

fn vacuum(&self) -> StorageBackendResult<()>

Reclaim obsolete records and compact physical storage where supported, outside this session’s transaction.
Source§

fn write_cancellation(&self) -> Option<CancellationToken>

Token shared with the execution that owns this session’s writes. Cancellation must not prevent rollback cleanup or diagnostic reads. Versioned wrappers must forward this capability.
Source§

fn open_controlled_session( &self, _control: &StorageReadControl, ) -> StorageBackendResult<Arc<dyn KeyValueStore>>

Open an independent writer sharing the invoking maintenance operation’s allowance and write cancellation. Retained reads and cleanup keep independent cancellation. Capable wrappers must forward this without granting another memory limit.
Source§

fn open_session_with_cancellation( &self, cancellation: &CancellationToken, ) -> StorageBackendResult<Arc<dyn KeyValueStore>>

Create a transaction-isolated session with the caller’s write cancellation and a fresh retention budget.
Source§

fn open_retained_read_session( &self, cancellation: &CancellationToken, ) -> StorageBackendResult<Arc<dyn KeyValueStore>>

Retain this exact committed/private view in a separate read-only session, including its original logical reader attribution. The returned session cannot publish records or complete the source transaction. Versioned wrappers must forward this capability; opening a newer independent snapshot is not equivalent.
Source§

fn transaction_model(&self) -> StorageTransactionModel

Whether writes remain private while independent sessions read and write. Versioned stores must provide command refresh, retained reads, savepoint undo and conditional publication under one reported affinity.
Source§

fn identifier_allocator(&self) -> Option<&dyn IdentifierAllocator>

Durable reservations outside private record undo. Serialized custom stores may omit this capability; wrappers over a capable store must forward it.
Source§

fn with_versioned_mutation( &self, _mutate: &mut KeyValueVersionedMutation<'_>, ) -> StorageBackendResult<()>

Evaluate and stage once with the actual durable writer and a non-reused mutation revision. Origins may be persisted alongside canonical values, but do not prove publication or visibility. The callback has the same non-reentrancy rules as with_mutation; capable wrappers must preserve the original origin and atomic batch.
Source§

fn transaction_affinity(&self) -> Option<StorageSessionAffinity>

Identity of the transaction context shared by this store’s catalog and data handles. Independent sessions must report different identities, even over the same file.
Source§

fn storage_identity( &self, ) -> StorageBackendResult<Option<PersistentStorageIdentity>>

Source§

fn open_session(&self) -> StorageBackendResult<Arc<dyn KeyValueStore>>

Open an independent transaction session over the same logical store. The default keeps simple test/custom stores source-compatible while making the missing MVCC capability explicit when a persistent engine needs a committed reader alongside a pinned statement snapshot.
Source§

fn visit_value_bounded( &self, _key: &[u8], _max_bytes: usize, control: &StorageReadControl, _visit: &mut ValueReadVisitor<'_>, ) -> StorageBackendResult<()>

Visit one value with an encoded-size cap checked before provider materialization. This is distinct from the shared workspace allowance; unsupported stores must not fetch an unbounded value as a fallback.
Source§

fn contains_prefix_budgeted( &self, prefix: &[u8], control: &StorageReadControl, ) -> StorageBackendResult<bool>

Test prefix existence under the read allowance. Providers that materialize values should implement a key-only probe.
Source§

fn begin_upgradeable_transaction(&self) -> StorageBackendResult<()>

Source§

fn change_version_monitor_is_nonblocking(&self) -> StorageBackendResult<bool>

Source§

fn pin_transaction_snapshot(&self) -> StorageBackendResult<()>

Source§

fn refresh_transaction_snapshot( &self, _cancellation: &CancellationToken, ) -> StorageBackendResult<()>

Advance an active logical transaction’s committed view while preserving its private writes and retained readers. The caller chooses command boundaries allowed by SQL isolation. Stores without this capability must reject the request; ending or replaying the caller’s transaction is not a valid fallback.

Auto Trait Implementations§

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, 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> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.