pub enum SourceSpec {
Show 13 variants
ScanVertices {
rows: Vec<Vec<Value>>,
col_names: Vec<String>,
},
CteScan {
cte_name: String,
col_names: Vec<String>,
},
StandaloneValues {
values: Vec<Vec<ContextualExpression>>,
col_names: Vec<String>,
},
StorageScanVertices {
space_name: String,
limit: Option<usize>,
col_names: Vec<String>,
projected_properties: Vec<String>,
identity_only: bool,
skip_rows: bool,
predicate: Vec<ScanPredicate>,
tag: Option<String>,
partition_range: Option<Range<i64>>,
shard_slice: Option<ShardSlice>,
},
ScanEdges {
rows: Vec<Vec<Value>>,
col_names: Vec<String>,
},
StorageScanEdges {
space_name: String,
limit: Option<usize>,
edge_type: Option<String>,
col_names: Vec<String>,
projected_properties: Vec<String>,
identity_only: bool,
predicate: Vec<ScanPredicate>,
shard_slice: Option<ShardSlice>,
},
GetVertices {
space_name: String,
tag: String,
vertex_ids: Option<Vec<Value>>,
projected_properties: Vec<String>,
col_names: Vec<String>,
},
GetEdges {
space_name: String,
edge_type: Option<String>,
src: Option<String>,
dst: Option<String>,
rank: i64,
projected_properties: Vec<String>,
},
GetNeighbors {
space_name: String,
tag: String,
direction: String,
projected_properties: Vec<String>,
},
IndexScan {
space_name: String,
index_name: String,
index_id: u64,
tag: String,
predicate: Box<BoundIndexPredicate>,
projection: IndexProjection,
residual_filter: Option<Expression>,
output_layout: Arc<SlotLayout>,
},
Argument {
col_names: Vec<String>,
},
GetProp {
space_name: String,
entity_slot: usize,
prop_names: Vec<String>,
is_vertex: bool,
output_layout: Arc<SlotLayout>,
},
Start,
}Expand description
Immutable config for source operators.
Mutable state (cursor, buffer, current_index, partition_id,
partition_range) lives in SourceState.
Variants§
ScanVertices
CteScan
Recursive-CTE working-table scan.
Reads the rows published by the enclosing fixpoint operator under the
mangled cte_name (see crate::cte). Produced when a step pattern
labels a node with the CTE name; never touches storage.
StandaloneValues
Standalone DML values — evaluated once per execution in the source
operator so that volatile expressions (e.g. now()) are resolved at
execution time, not at plan build time.
StorageScanVertices
Fields
identity_only: boolIdentity mode: the scan variable is never consumed as a whole
entity downstream, so the entity column carries lightweight
Value::VertexId instead of boxed vertices.
skip_rows: boolRowless mode (set with identity_only by the planner when the
direct consumer is column-capable): skip the row view entirely
and emit typed columns only. Valid only when the columnar path
is on; the scan falls back to rows when it is off.
predicate: Vec<ScanPredicate>Scan predicates pushed into the storage layer (pure pre-filter; the original filter still runs on top).
tag: Option<String>Tag-restricted scan: only rows of this tag are scanned at the
storage layer (the matching contains(labels(v), ...) residual
conjunct may then be elided).
partition_range: Option<Range<i64>>Optional vertex-id range restricting the scan to one partition.
Set only on per-partition copies produced by the partitioned
physical-plan builder; None means a full scan.
shard_slice: Option<ShardSlice>Optional shard slice dividing a partitioned scan’s enumeration
across partitions. Set together with a cleared partition_range
on per-partition copies whose union must cover the table without
repeating full-table walks; None enumerates the whole table.
ScanEdges
StorageScanEdges
Fields
identity_only: boolIdentity mode: the scan variable is never consumed as a whole
entity downstream, so the entity column carries lightweight
Value::EdgeHeader instead of boxed edges.
predicate: Vec<ScanPredicate>Scan predicates pushed into the storage layer (pure pre-filter; the original filter still runs on top).
shard_slice: Option<ShardSlice>Optional shard slice dividing a partitioned edge scan’s source
enumeration across partitions. Set on per-partition copies whose
union must cover every edge without repeating full-table walks;
None walks the whole source space.
GetVertices
Fields
GetEdges
Fields
GetNeighbors
IndexScan
Index scan with typed predicate and projection.
The predicate and projection are validated at build time against the index schema. Stale row IDs are skipped, not treated as EOF.
Fields
predicate: Box<BoundIndexPredicate>projection: IndexProjectionresidual_filter: Option<Expression>output_layout: Arc<SlotLayout>Argument
Produces one singleton row from which correlated apply can pull.
col_names mirrors the outer (left) layout so the emitted chunk slots
align with the correlation frame read at runtime.
GetProp
Unary property retrieval: reads properties from the input entity IDs.
Unlike the source-variant GetProp (which is a zero-input stub), this unary variant takes an input child and produces one output row per input row with additional property columns.
Fields
output_layout: Arc<SlotLayout>Output layout (input columns + new property columns).
Start
Produces one zero-column row on first next(), then None.
Used as the seed for command-type operators (DDL, DML, etc.)
that require a source but have no real input.
Trait Implementations§
Source§impl Clone for SourceSpec
impl Clone for SourceSpec
Auto Trait Implementations§
impl !RefUnwindSafe for SourceSpec
impl !UnwindSafe for SourceSpec
impl Freeze for SourceSpec
impl Send for SourceSpec
impl Sync for SourceSpec
impl Unpin for SourceSpec
impl UnsafeUnpin for SourceSpec
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.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.