pub struct SnapshotBundle {
pub snapshot: Option<SnapshotContext>,
pub auth: Option<(String, Role)>,
pub tenant: Option<String>,
}Expand description
Frozen MVCC + identity context for callers that need to reinstall the same view across thread-local boundaries — long-lived cursors, background batchers, anything that detaches from the dispatch path and re-enters later.
The bundle bakes in the three thread-locals every read path
consults: SnapshotContext (MVCC visibility), the auth identity
(RLS policy gate), and the tenant id (RLS scope). A FETCH that
reinstalls the bundle sees exactly the same rows as the DECLARE
would have, regardless of writes that landed in between.
Cheap to clone — SnapshotContext is a clone of three
Arc-backed fields, identity is a (String, Role), tenant is a
String. None of these contend with the read path.
Fields§
§snapshot: Option<SnapshotContext>§auth: Option<(String, Role)>§tenant: Option<String>Trait Implementations§
Source§impl Clone for SnapshotBundle
impl Clone for SnapshotBundle
Source§fn clone(&self) -> SnapshotBundle
fn clone(&self) -> SnapshotBundle
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Default for SnapshotBundle
impl Default for SnapshotBundle
Source§fn default() -> SnapshotBundle
fn default() -> SnapshotBundle
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for SnapshotBundle
impl !RefUnwindSafe for SnapshotBundle
impl Send for SnapshotBundle
impl Sync for SnapshotBundle
impl Unpin for SnapshotBundle
impl UnsafeUnpin for SnapshotBundle
impl !UnwindSafe for SnapshotBundle
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request