pub struct ArrayShardSliceReq {
pub array_id_msgpack: Vec<u8>,
pub slice_msgpack: Vec<u8>,
pub attr_projection: Vec<u32>,
pub limit: u32,
pub cell_filter_msgpack: Vec<u8>,
pub prefix_bits: u8,
pub slice_hilbert_ranges: Vec<(u64, u64)>,
pub shard_hilbert_range: Option<(u64, u64)>,
pub system_as_of: Option<i64>,
pub valid_at_ms: Option<i64>,
}Expand description
Scatter request: coordinator asks a shard to execute a coord-range slice.
slice_msgpack is a zerompk encoding of nodedb_array::query::Slice.
attr_projection is the attribute index list; empty means all attributes.
Fields§
§array_id_msgpack: Vec<u8>Array scoped by tenant + name (zerompk encoding of nodedb_array::types::ArrayId).
slice_msgpack: Vec<u8>Zerompk encoding of nodedb_array::query::Slice.
attr_projection: Vec<u32>§limit: u32§cell_filter_msgpack: Vec<u8>Optional surrogate pre-filter bitmap bytes (zerompk encoding of SurrogateBitmap).
Empty slice means no filter.
prefix_bits: u8Prefix bits used for Hilbert routing (1–16). 0 means no routing validation.
When non-zero the shard verifies that its local_vshard_id is covered
by the Hilbert ranges in slice_hilbert_ranges before executing the
scan. A mismatch returns ClusterError::WrongOwner so the coordinator
can retry against a refreshed routing table.
slice_hilbert_ranges: Vec<(u64, u64)>Inclusive Hilbert-prefix ranges (lo, hi) that this slice covers,
pre-computed by the coordinator from the slice predicate. Each entry
is encoded as two consecutive u64 values (little-endian). Empty
means unbounded (no routing validation is performed).
shard_hilbert_range: Option<(u64, u64)>Hilbert-prefix range [lo, hi] that this shard owns. The shard
applies this as a pre-filter so it only returns cells whose Hilbert
prefix falls within the range. None means unbounded (return all
matching cells). Used by the distributed shard handler to prevent
duplicate rows in single-node harnesses where all vShards share one
Data Plane.
system_as_of: Option<i64>Bitemporal system-time cutoff forwarded from ArrayOp::Slice::system_as_of.
None = live read.
valid_at_ms: Option<i64>Bitemporal valid-time point forwarded from ArrayOp::Slice::valid_at_ms.
None = no valid-time filter.
Trait Implementations§
Source§impl Clone for ArrayShardSliceReq
impl Clone for ArrayShardSliceReq
Source§fn clone(&self) -> ArrayShardSliceReq
fn clone(&self) -> ArrayShardSliceReq
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ArrayShardSliceReq
impl Debug for ArrayShardSliceReq
Source§impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for ArrayShardSliceReq
impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for ArrayShardSliceReq
Auto Trait Implementations§
impl Freeze for ArrayShardSliceReq
impl RefUnwindSafe for ArrayShardSliceReq
impl Send for ArrayShardSliceReq
impl Sync for ArrayShardSliceReq
impl Unpin for ArrayShardSliceReq
impl UnsafeUnpin for ArrayShardSliceReq
impl UnwindSafe for ArrayShardSliceReq
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.