pub struct ScanOptions {Show 16 fields
pub limit: Option<usize>,
pub offset: usize,
pub batch_size: usize,
pub vertex_id_range: Option<Range<i64>>,
pub edge_src_id_range: Option<Range<i64>>,
pub edge_type: Option<String>,
pub tag: Option<String>,
pub projection: Option<Vec<RequiredProperty>>,
pub topology_only: bool,
pub read_timestamp: Option<u64>,
pub predicate: Option<Vec<ScanPredicate>>,
pub column_block_mode: bool,
pub internal_id_allowlist: Option<Vec<u32>>,
pub edge_table_allowlist: Option<Vec<EdgeTableKey>>,
pub shard_slice: Option<ShardSlice>,
pub edge_src_slice: Option<ShardSlice>,
}Expand description
Unified scan options that configure cursor behavior.
This is the contract between the query planner/executor and the storage layer. Future phases will add predicate pushdown, projection, partition, range, and snapshot support.
Fields§
§limit: Option<usize>Maximum number of rows to return (None = unlimited).
offset: usizeNumber of matching rows to skip before emitting the first row.
batch_size: usizeBatch size for cursor reads.
vertex_id_range: Option<Range<i64>>Optional vertex ID range filter over the external vertex ID
(the same i64 domain as PartitionSpec ranges). Only vertices whose
external ID falls in this range (inclusive of start, exclusive of
end) are returned. When set, this filter is applied at scan time,
not as a post-filter.
edge_src_id_range: Option<Range<i64>>Optional edge source ID range filter. Only edges whose source ID
(parsed as i64) falls in this range are returned.
edge_type: Option<String>Edge type filter (for edge scans only).
tag: Option<String>Optional tag filter for vertex scans: only rows whose tag matches
this name are scanned. The tag tables of all other tags are skipped
at scan time (the query layer may therefore elide the matching
contains(labels(v), ...) residual conjunct).
projection: Option<Vec<RequiredProperty>>Optional property projection pushed into the physical scan.
topology_only: boolTopology-only vertex scan: return vertex identities and tags with zero property decode. Only valid with an empty projection and no pushed predicates; the cursor rejects any other combination at open so misuse surfaces as an error instead of silently wrong rows.
read_timestamp: Option<u64>Read timestamp captured by the caller.
predicate: Option<Vec<ScanPredicate>>Optional conjunctive scan predicates pushed from the query layer.
All predicates must match for a row to be emitted. The query layer
keeps the original filter on top, so the pushdown is a pure
pre-filter (see ScanPredicate).
column_block_mode: boolColumn-block scan mode: pull column-major batches from the storage
cursor via VertexCursor::next_column_batch instead of row-major
batches. Default off — the row-based path stays the fallback.
internal_id_allowlist: Option<Vec<u32>>Optional internal-ID allowlist (semi-mask) for vertex scans: when
set, the cursor decodes exactly these global internal IDs instead of
enumerating the table’s live IDs. IDs that are deleted, invisible at
the read timestamp, or out of range yield no row, mirroring the
batch point-lookup semantics. Internal ID spaces are per tag table,
so an allowlist requires ScanOptions::tag; opening without a tag
fails. The join/expand layer uses this to push a known vertex set
into the scan instead of scanning whole tables.
edge_table_allowlist: Option<Vec<EdgeTableKey>>Optional edge-table allowlist for table-sharded parallel scans: when
set, the edge cursor only drains tables whose key is listed. Shards
partition the key set, so the union of shards covers every table of
the edge type exactly once. None (default) scans all tables.
shard_slice: Option<ShardSlice>Optional shard slice for parallel vertex scans: when set, the cursor
enumerates only this slice of every tag table’s shard-local id
space. Slices partition the enumeration space (not the external-id
value space, which is hash-distributed over shards and cannot prune
enumeration), so the union of all slices covers the table exactly
once. None (default) enumerates the whole table.
edge_src_slice: Option<ShardSlice>Optional shard slice for parallel edge scans: when set, the cursor
walks only the edges whose source internal id falls in this slice of
the source tables’ shard-local id space. Same division contract as
shard_slice, applied to the edge source space so the union of all
slices covers every edge exactly once. Composes with
edge_src_id_range, which stays a row-level external-id filter.
None (default) walks the whole source space.
Implementations§
Source§impl ScanOptions
impl ScanOptions
pub const DEFAULT_BATCH_SIZE: usize = 1024
pub fn new() -> ScanOptions
Sourcepub fn with_edge_type(self, edge_type: String) -> ScanOptions
pub fn with_edge_type(self, edge_type: String) -> ScanOptions
Builder: set edge type filter.
Sourcepub fn with_limit(self, limit: usize) -> ScanOptions
pub fn with_limit(self, limit: usize) -> ScanOptions
Builder: set row limit.
Sourcepub fn with_offset(self, offset: usize) -> ScanOptions
pub fn with_offset(self, offset: usize) -> ScanOptions
Builder: set the number of matching rows to skip.
pub fn with_projection_named(self, projection: Vec<String>) -> ScanOptions
pub fn with_projection(self, projection: Vec<RequiredProperty>) -> ScanOptions
Sourcepub fn with_tag(self, tag: String) -> ScanOptions
pub fn with_tag(self, tag: String) -> ScanOptions
Builder: restrict a vertex scan to a single tag by name.
Sourcepub fn with_internal_id_allowlist(self, ids: Vec<u32>) -> ScanOptions
pub fn with_internal_id_allowlist(self, ids: Vec<u32>) -> ScanOptions
Builder: decode exactly these global internal IDs instead of
enumerating live IDs (semi-mask pushdown). Requires with_tag.
Sourcepub fn with_shard_slice(self, slice: ShardSlice) -> ScanOptions
pub fn with_shard_slice(self, slice: ShardSlice) -> ScanOptions
Builder: enumerate only one shard slice of the table instead of the whole table (parallel-scan division).
Sourcepub fn with_edge_src_slice(self, slice: ShardSlice) -> ScanOptions
pub fn with_edge_src_slice(self, slice: ShardSlice) -> ScanOptions
Builder: walk only one shard slice of the edge source space instead of the whole space (parallel edge-scan division).
pub fn batch_size(&self) -> usize
Trait Implementations§
Source§impl Clone for ScanOptions
impl Clone for ScanOptions
Source§fn clone(&self) -> ScanOptions
fn clone(&self) -> ScanOptions
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 ScanOptions
impl Debug for ScanOptions
Source§impl Default for ScanOptions
impl Default for ScanOptions
Source§fn default() -> ScanOptions
fn default() -> ScanOptions
Auto Trait Implementations§
impl Freeze for ScanOptions
impl RefUnwindSafe for ScanOptions
impl Send for ScanOptions
impl Sync for ScanOptions
impl Unpin for ScanOptions
impl UnsafeUnpin for ScanOptions
impl UnwindSafe for ScanOptions
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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> ⓘ
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> ⓘ
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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.