pub struct RecursiveCteProcessor;
Expand description
Recursive CTE (Common Table Expression) processor for graph path queries Supports patterns like: WITH RECURSIVE paths AS (…) SELECT … FROM paths
Implementations§
Source§impl RecursiveCteProcessor
impl RecursiveCteProcessor
pub fn new() -> Self
Sourcepub fn find_recursive_paths(
&self,
edges: &[(String, String, f64)],
start_node: &str,
end_node: Option<&str>,
config: &RecursiveQueryConfig,
) -> DataFusionResult<Vec<GraphPath>>
pub fn find_recursive_paths( &self, edges: &[(String, String, f64)], start_node: &str, end_node: Option<&str>, config: &RecursiveQueryConfig, ) -> DataFusionResult<Vec<GraphPath>>
Process a recursive path query Example: Find all paths from node A to node B with max depth 5
Sourcepub fn find_shortest_paths(
&self,
edges: &[(String, String, f64)],
start_node: &str,
end_node: &str,
max_depth: usize,
) -> DataFusionResult<Vec<GraphPath>>
pub fn find_shortest_paths( &self, edges: &[(String, String, f64)], start_node: &str, end_node: &str, max_depth: usize, ) -> DataFusionResult<Vec<GraphPath>>
Find shortest paths using recursive approach (for CTE queries)
Sourcepub fn find_reachable_nodes(
&self,
edges: &[(String, String, f64)],
start_node: &str,
max_depth: usize,
) -> DataFusionResult<Vec<String>>
pub fn find_reachable_nodes( &self, edges: &[(String, String, f64)], start_node: &str, max_depth: usize, ) -> DataFusionResult<Vec<String>>
Find all reachable nodes from a starting node (for CTE queries)
Sourcepub fn parse_and_execute_recursive_cte(
&self,
_cte_query: &str,
edges: &[(String, String, f64)],
) -> DataFusionResult<Vec<GraphPath>>
pub fn parse_and_execute_recursive_cte( &self, _cte_query: &str, edges: &[(String, String, f64)], ) -> DataFusionResult<Vec<GraphPath>>
Process a WITH RECURSIVE query (simplified parser) Example: “WITH RECURSIVE paths(source, target, depth) AS ( SELECT source, target, 1 FROM edges WHERE source = ‘A’ UNION ALL SELECT e.source, e.target, p.depth + 1 FROM edges e JOIN paths p ON e.source = p.target WHERE p.depth < 5 ) SELECT * FROM paths”
Trait Implementations§
Auto Trait Implementations§
impl Freeze for RecursiveCteProcessor
impl RefUnwindSafe for RecursiveCteProcessor
impl Send for RecursiveCteProcessor
impl Sync for RecursiveCteProcessor
impl Unpin for RecursiveCteProcessor
impl UnwindSafe for RecursiveCteProcessor
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> 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 more