pub enum LogicalOperator {
Show 52 variants
NodeScan(NodeScanOp),
EdgeScan(EdgeScanOp),
Expand(ExpandOp),
Filter(FilterOp),
Project(ProjectOp),
Join(JoinOp),
Aggregate(AggregateOp),
Limit(LimitOp),
Skip(SkipOp),
Sort(SortOp),
Distinct(DistinctOp),
CreateNode(CreateNodeOp),
CreateEdge(CreateEdgeOp),
DeleteNode(DeleteNodeOp),
DeleteEdge(DeleteEdgeOp),
SetProperty(SetPropertyOp),
AddLabel(AddLabelOp),
RemoveLabel(RemoveLabelOp),
Return(ReturnOp),
Empty,
TripleScan(TripleScanOp),
Union(UnionOp),
LeftJoin(LeftJoinOp),
AntiJoin(AntiJoinOp),
Bind(BindOp),
Unwind(UnwindOp),
MapCollect(MapCollectOp),
Merge(MergeOp),
MergeRelationship(MergeRelationshipOp),
ShortestPath(ShortestPathOp),
InsertTriple(InsertTripleOp),
DeleteTriple(DeleteTripleOp),
Modify(ModifyOp),
ClearGraph(ClearGraphOp),
CreateGraph(CreateGraphOp),
DropGraph(DropGraphOp),
LoadGraph(LoadGraphOp),
CopyGraph(CopyGraphOp),
MoveGraph(MoveGraphOp),
AddGraph(AddGraphOp),
HorizontalAggregate(HorizontalAggregateOp),
VectorScan(VectorScanOp),
VectorJoin(VectorJoinOp),
Except(ExceptOp),
Intersect(IntersectOp),
Otherwise(OtherwiseOp),
Apply(ApplyOp),
ParameterScan(ParameterScanOp),
CreatePropertyGraph(CreatePropertyGraphOp),
MultiWayJoin(MultiWayJoinOp),
CallProcedure(CallProcedureOp),
LoadData(LoadDataOp),
}Expand description
A logical operator in the query plan.
Variants§
NodeScan(NodeScanOp)
Scan all nodes, optionally filtered by label.
EdgeScan(EdgeScanOp)
Scan all edges, optionally filtered by type.
Expand(ExpandOp)
Expand from nodes to neighbors via edges.
Filter(FilterOp)
Filter rows based on a predicate.
Project(ProjectOp)
Project specific columns.
Join(JoinOp)
Join two inputs.
Aggregate(AggregateOp)
Aggregate with grouping.
Limit(LimitOp)
Limit the number of results.
Skip(SkipOp)
Skip a number of results.
Sort(SortOp)
Sort results.
Distinct(DistinctOp)
Remove duplicate results.
CreateNode(CreateNodeOp)
Create a new node.
CreateEdge(CreateEdgeOp)
Create a new edge.
DeleteNode(DeleteNodeOp)
Delete a node.
DeleteEdge(DeleteEdgeOp)
Delete an edge.
SetProperty(SetPropertyOp)
Set properties on a node or edge.
AddLabel(AddLabelOp)
Add labels to a node.
RemoveLabel(RemoveLabelOp)
Remove labels from a node.
Return(ReturnOp)
Return results (terminal operator).
Empty
Empty result set.
TripleScan(TripleScanOp)
Scan RDF triples matching a pattern.
Union(UnionOp)
Union of multiple result sets.
LeftJoin(LeftJoinOp)
Left outer join for OPTIONAL patterns.
AntiJoin(AntiJoinOp)
Anti-join for MINUS patterns.
Bind(BindOp)
Bind a variable to an expression.
Unwind(UnwindOp)
Unwind a list into individual rows.
MapCollect(MapCollectOp)
Collect grouped key-value rows into a single Map value.
Used for Gremlin groupCount() semantics.
Merge(MergeOp)
Merge a node pattern (match or create).
MergeRelationship(MergeRelationshipOp)
Merge a relationship pattern (match or create).
ShortestPath(ShortestPathOp)
Find shortest path between nodes.
InsertTriple(InsertTripleOp)
Insert RDF triples.
DeleteTriple(DeleteTripleOp)
Delete RDF triples.
Modify(ModifyOp)
SPARQL MODIFY operation (DELETE/INSERT WHERE). Evaluates WHERE once, applies DELETE templates, then INSERT templates.
ClearGraph(ClearGraphOp)
Clear a graph (remove all triples).
CreateGraph(CreateGraphOp)
Create a new named graph.
DropGraph(DropGraphOp)
Drop (remove) a named graph.
LoadGraph(LoadGraphOp)
Load data from a URL into a graph.
CopyGraph(CopyGraphOp)
Copy triples from one graph to another.
MoveGraph(MoveGraphOp)
Move triples from one graph to another.
AddGraph(AddGraphOp)
Add (merge) triples from one graph to another.
HorizontalAggregate(HorizontalAggregateOp)
Per-row aggregation over a list-valued column (horizontal aggregation, GE09).
VectorScan(VectorScanOp)
Scan using vector similarity search.
VectorJoin(VectorJoinOp)
Join graph patterns with vector similarity search.
Computes vector distances between entities from the left input and a query vector, then joins with similarity scores. Useful for:
- Filtering graph traversal results by vector similarity
- Computing aggregated embeddings and finding similar entities
- Combining multiple vector sources with graph structure
Except(ExceptOp)
Set difference: rows in left that are not in right.
Intersect(IntersectOp)
Set intersection: rows common to all inputs.
Otherwise(OtherwiseOp)
Fallback: use left result if non-empty, otherwise right.
Apply(ApplyOp)
Apply (lateral join): evaluate a subplan per input row.
ParameterScan(ParameterScanOp)
Parameter scan: leaf of a correlated inner plan that receives values
from the outer Apply operator. The column names match ApplyOp.shared_variables.
CreatePropertyGraph(CreatePropertyGraphOp)
Define a property graph schema (SQL/PGQ DDL).
MultiWayJoin(MultiWayJoinOp)
Multi-way join using worst-case optimal join (leapfrog). Used for cyclic patterns (triangles, cliques) with 3+ relations.
CallProcedure(CallProcedureOp)
Invoke a stored procedure (CALL … YIELD).
LoadData(LoadDataOp)
Load data from a file (CSV, JSONL, or Parquet), producing one row per record.
Implementations§
Source§impl LogicalOperator
impl LogicalOperator
Sourcepub fn has_mutations(&self) -> bool
pub fn has_mutations(&self) -> bool
Returns true if this operator or any of its children perform mutations.
Sourcepub fn children(&self) -> Vec<&LogicalOperator>
pub fn children(&self) -> Vec<&LogicalOperator>
Returns references to the child operators.
Used by crate::query::profile::build_profile_tree to walk the logical
plan tree in post-order, matching operators to profiling entries.
Sourcepub fn display_label(&self) -> String
pub fn display_label(&self) -> String
Returns a compact display label for this operator, used in PROFILE output.
Source§impl LogicalOperator
impl LogicalOperator
Sourcepub fn explain_tree(&self) -> String
pub fn explain_tree(&self) -> String
Formats this operator tree as a human-readable plan for EXPLAIN output.
Trait Implementations§
Source§impl Clone for LogicalOperator
impl Clone for LogicalOperator
Source§fn clone(&self) -> LogicalOperator
fn clone(&self) -> LogicalOperator
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for LogicalOperator
impl RefUnwindSafe for LogicalOperator
impl Send for LogicalOperator
impl Sync for LogicalOperator
impl Unpin for LogicalOperator
impl UnsafeUnpin for LogicalOperator
impl UnwindSafe for LogicalOperator
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
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> 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 more