pub enum PlanNode {
NodeScan {
mode: ScanMode,
filter: Option<Predicate>,
},
EdgeScan {
mode: ScanMode,
filter: Option<Predicate>,
},
HyperedgeScan {
mode: ScanMode,
filter: Option<Predicate>,
},
Filter {
input: Box<PlanNode>,
predicate: Predicate,
},
Join {
left: Box<PlanNode>,
right: Box<PlanNode>,
join_type: JoinType,
on: Vec<(String, String)>,
},
Aggregate {
input: Box<PlanNode>,
group_by: Vec<String>,
aggregates: Vec<(AggregateFunction, String)>,
},
Sort {
input: Box<PlanNode>,
order_by: Vec<(String, SortOrder)>,
},
Limit {
input: Box<PlanNode>,
limit: usize,
offset: usize,
},
Project {
input: Box<PlanNode>,
columns: Vec<String>,
},
}Expand description
Plan node types
Variants§
NodeScan
Sequential or index-based node scan
EdgeScan
Edge scan
HyperedgeScan
Hyperedge scan
Filter
Filter rows by predicate
Join
Join two inputs
Aggregate
Aggregate with grouping
Sort
Sort results
Limit
Limit and offset
Project
Project columns
Implementations§
Source§impl PlanNode
impl PlanNode
Sourcepub fn is_parallelizable(&self) -> bool
pub fn is_parallelizable(&self) -> bool
Check if node can be parallelized
Sourcepub fn estimate_cardinality(&self) -> usize
pub fn estimate_cardinality(&self) -> usize
Estimate output cardinality
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PlanNode
impl RefUnwindSafe for PlanNode
impl Send for PlanNode
impl Sync for PlanNode
impl Unpin for PlanNode
impl UnwindSafe for PlanNode
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request