pub struct Open {
pub node: u32,
pub seq: u64,
pub sealed: Sealed,
}Expand description
A snapshot of the open, unsealed block: rows that have been acknowledged but not yet published, in the same Arrow shape the read path already knows.
This is the read-your-writes repair the write-ahead log made necessary
(ARCHITECTURE section 4). With the log on, an export is acknowledged when its bytes
reach the page cache, which is well before the block that will hold them is
sealed and renamed into place — so without this, a client that just got a
200 and queried immediately would see nothing for up to max_block_age.
seq is the sequence the block will publish under, and that is what makes
the whole thing cheap. A snapshot holds the builder’s rows from row zero, in
the order they will be written, so row n of the snapshot is row n of the
eventual block. A cursor handed out over open data is therefore still exactly
correct after the seal, and the read path can drop the snapshot the moment a
real block turns up under the same (node, seq) — no rebasing, no dedupe by
content, no second identity for a row.
Fields§
§node: u32§seq: u64§sealed: SealedAuto Trait Implementations§
impl !RefUnwindSafe for Open
impl !UnwindSafe for Open
impl Freeze for Open
impl Send for Open
impl Sync for Open
impl Unpin for Open
impl UnsafeUnpin for Open
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].