pub enum GraphOp {
Show 17 variants
EdgePut {
collection: String,
src_id: String,
label: String,
dst_id: String,
properties: Vec<u8>,
src_surrogate: Surrogate,
dst_surrogate: Surrogate,
},
EdgePutBatch {
edges: Vec<BatchEdge>,
},
EdgeDelete {
collection: String,
src_id: String,
label: String,
dst_id: String,
},
EdgeDeleteBatch {
edges: Vec<BatchEdge>,
},
Hop {
start_nodes: Vec<String>,
edge_label: Option<String>,
direction: Direction,
depth: usize,
options: GraphTraversalOptions,
rls_filters: Vec<u8>,
frontier_bitmap: Option<SurrogateBitmap>,
},
Neighbors {
node_id: String,
edge_label: Option<String>,
direction: Direction,
rls_filters: Vec<u8>,
},
NeighborsMulti {
node_ids: Vec<String>,
edge_label: Option<String>,
direction: Direction,
max_results: u32,
rls_filters: Vec<u8>,
},
Path {
src: String,
dst: String,
edge_label: Option<String>,
max_depth: usize,
options: GraphTraversalOptions,
rls_filters: Vec<u8>,
frontier_bitmap: Option<SurrogateBitmap>,
},
Subgraph {
start_nodes: Vec<String>,
edge_label: Option<String>,
depth: usize,
options: GraphTraversalOptions,
rls_filters: Vec<u8>,
},
RagFusion {Show 13 fields
collection: String,
query_vector: Vec<f32>,
vector_top_k: usize,
edge_label: Option<String>,
direction: Direction,
expansion_depth: usize,
final_top_k: usize,
rrf_k: (f64, f64),
rrf_k_triple: Option<(f64, f64, f64)>,
vector_field: String,
options: GraphTraversalOptions,
bm25_query: Option<String>,
bm25_field: Option<String>,
},
Algo {
algorithm: GraphAlgorithm,
params: AlgoParams,
},
Match {
query: Vec<u8>,
frontier_bitmap: Option<SurrogateBitmap>,
},
SetNodeLabels {
node_id: String,
labels: Vec<String>,
},
RemoveNodeLabels {
node_id: String,
labels: Vec<String>,
},
TemporalNeighbors {
collection: String,
node_id: String,
edge_label: Option<String>,
direction: Direction,
system_as_of_ms: Option<i64>,
valid_at_ms: Option<i64>,
rls_filters: Vec<u8>,
},
TemporalAlgorithm {
algorithm: GraphAlgorithm,
params: AlgoParams,
system_as_of_ms: Option<i64>,
},
Stats {
collection: Option<String>,
as_of: Option<i64>,
},
}Expand description
Graph engine physical operations.
Variants§
EdgePut
Insert a graph edge with properties.
src_surrogate / dst_surrogate carry the global row identity for
the two endpoints, resolved at construction time. The string src_id
/ dst_id remain user-visible identifiers (used by the CSR partition
for label interning and by the edge store for keying), while the
surrogates are the cross-engine join currency.
Fields
EdgePutBatch
Batched edge insert: many (collection, src, label, dst) tuples.
Every edge in the batch must target the same collection — the
batch is a unit of work, not a cross-collection scatter.
EdgeDelete
Delete a graph edge.
EdgeDeleteBatch
Batched edge delete: used to revert a partial EdgePutBatch on
failure so the DDL leaves no stranded edges.
Hop
Graph hop traversal: BFS from start nodes via label, bounded by depth.
Fields
options: GraphTraversalOptionsfrontier_bitmap: Option<SurrogateBitmap>Optional surrogate prefilter restricting which frontier nodes are
eligible as traversal targets. None = no restriction.
Neighbors
Immediate 1-hop neighbors lookup.
Fields
NeighborsMulti
Batched 1-hop neighbors lookup: one RPC per hop of a BFS frontier
instead of one RPC per frontier node. Returns
[{ src, label, node }, ...] so the caller can attribute each
neighbor to its origin (needed for shortest-path parent pointers).
max_results is the per-RPC cap: the Data Plane handler stops
emitting entries once the batch reaches this size so a single
wide hop cannot allocate past the caller’s budget. 0 means
unbounded (use with care).
Fields
Path
Shortest path between two nodes.
Fields
options: GraphTraversalOptionsfrontier_bitmap: Option<SurrogateBitmap>Optional surrogate prefilter restricting which nodes may appear
on the path. None = no restriction.
Subgraph
Materialize a subgraph as edge tuples.
Fields
options: GraphTraversalOptionsRagFusion
GraphRAG fusion: vector search → graph expansion → RRF ranking.
Two-source form: vector + graph (backwards-compatible; bm25_query is None).
Three-source form: vector + BM25 text + graph; activated when bm25_query is set.
Fields
rrf_k: (f64, f64)Two-source RRF k constants: (vector_k, graph_k).
Used when bm25_query is absent (backwards-compatible two-source form).
rrf_k_triple: Option<(f64, f64, f64)>Three-source RRF k constants: (vector_k, text_k, graph_k).
Set when the FUSION DSL carries a BM25 '...' ON '...' clause.
vector_field: StringVector index field name. Empty string selects the raw (field-less)
index created via VectorOp::Insert; a non-empty value selects
the field-backed index created when documents are inserted with an
embedded vector column (e.g. INSERT INTO col (id, embedding) VALUES …).
options: GraphTraversalOptionsAlgo
Graph algorithm execution (PageRank, WCC, SSSP, etc.).
Match
Graph pattern matching (MATCH clause execution).
Fields
frontier_bitmap: Option<SurrogateBitmap>Optional surrogate prefilter restricting which nodes are eligible
as pattern anchors. None = no restriction.
SetNodeLabels
Set node labels (bitset-based, up to 64 distinct labels).
RemoveNodeLabels
Remove node labels.
TemporalNeighbors
Bitemporal 1-hop neighbors lookup.
Resolves edges whose latest version with system_from <= system_as_of_ms
(converted to HLC ordinal) is not a sentinel, optionally also filtering
by valid_from_ms <= valid_at_ms < valid_until_ms. The handler calls
ceiling_resolve_edge per candidate base edge.
Fields
collection: StringEdge store is collection-scoped; current-state Neighbors reads
the tenant-wide CSR, but the versioned key layout is
{collection}\x00..., so the bitemporal path must name the
collection explicitly.
TemporalAlgorithm
Bitemporal graph algorithm execution.
Identical to Algo but builds its CSR snapshot via
CsrSnapshot::from_edge_store_as_of at the given system-time cutoff
before running the algorithm.
Stats
Read persistent graph-stats counters from the edge store.
collection = Some returns stats for one (tenant, collection) pair.
collection = None returns stats for every collection that has
edges (or had any, per cold-start rebuild) for this tenant.
as_of = None is the O(1) live-snapshot path (reads the cached
summary row). as_of = Some(ms) falls back to a historical scan.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for GraphOp
impl<'de> Deserialize<'de> for GraphOp
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for GraphOp
impl<'__msgpack_de> FromMessagePack<'__msgpack_de> for GraphOp
impl StructuralPartialEq for GraphOp
Auto Trait Implementations§
impl Freeze for GraphOp
impl RefUnwindSafe for GraphOp
impl Send for GraphOp
impl Sync for GraphOp
impl Unpin for GraphOp
impl UnsafeUnpin for GraphOp
impl UnwindSafe for GraphOp
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<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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> FromMessagePackOwned for Twhere
T: for<'a> FromMessagePack<'a>,
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> 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>
impl<T> MaybeSendSync for T
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<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
impl<T> Rleable for T
impl<T> Scalar for T
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.