Skip to content

Commit

Permalink
[GIE Runtime] do not throw error for shortest path
Browse files Browse the repository at this point in the history
  • Loading branch information
BingqingLyu committed Oct 21, 2024
1 parent e2e2291 commit c7c7cd2
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,11 @@ pub enum GraphPath {
impl GraphPath {
pub fn new<E: Into<VertexOrEdge>>(
entry: E, path_opt: pb::path_expand::PathOpt, result_opt: pb::path_expand::ResultOpt,
) -> Self {
match result_opt {
) -> Result<Self, ParsePbError> {
if let pb::path_expand::PathOpt::AnyShortest | pb::path_expand::PathOpt::AllShortest = path_opt {
return Err(ParsePbError::Unsupported("unsupported path type of shortest path".to_string()));
}
let path = match result_opt {
pb::path_expand::ResultOpt::EndV => match path_opt {
pb::path_expand::PathOpt::Arbitrary => GraphPath::EndV((entry.into(), 1)),
pb::path_expand::PathOpt::Simple => {
Expand All @@ -106,13 +109,20 @@ impl GraphPath {
GraphPath::SimpleEndV((entry, vec![id], 1))
}
pb::path_expand::PathOpt::Trail => GraphPath::TrailAllPath(vec![entry.into()]),
pb::path_expand::PathOpt::AnyShortest | pb::path_expand::PathOpt::AllShortest => {
unreachable!()
}
},
pb::path_expand::ResultOpt::AllV | pb::path_expand::ResultOpt::AllVE => match path_opt {
pb::path_expand::PathOpt::Arbitrary => GraphPath::AllPath(vec![entry.into()]),
pb::path_expand::PathOpt::Simple => GraphPath::SimpleAllPath(vec![entry.into()]),
pb::path_expand::PathOpt::Trail => GraphPath::TrailAllPath(vec![entry.into()]),
pb::path_expand::PathOpt::AnyShortest | pb::path_expand::PathOpt::AllShortest => {
unreachable!()
}
},
}
};
Ok(path)
}

// append an entry and return the flag of whether the entry has been appended or not.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ impl FilterMapFunction<Record, Record> for PathStartOperator {
self.start_tag, input
))
})?;
let graph_path = GraphPath::new(v.clone(), self.path_opt, self.result_opt);
let graph_path = GraphPath::new(v.clone(), self.path_opt, self.result_opt)
.map_or_else(|e| Err(FnExecError::unsupported_error(&format!("{}", e))), |p| Ok(p))?;
input.append(graph_path, None);
Ok(Some(input))
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1570,7 +1570,8 @@ mod tests {
Vertex::new(vids[0], None, details.clone()),
pb::path_expand::PathOpt::Arbitrary,
pb::path_expand::ResultOpt::AllV,
);
)
.unwrap();
for i in 1..vids.len() {
path.append(Vertex::new(vids[i], None, details.clone()));
}
Expand All @@ -1583,7 +1584,8 @@ mod tests {
Vertex::new(vids[0], None, details.clone()),
pb::path_expand::PathOpt::Simple,
pb::path_expand::ResultOpt::AllV,
);
)
.unwrap();
for i in 1..vids.len() {
path.append(Vertex::new(vids[i], None, details.clone()));
}
Expand Down Expand Up @@ -1708,23 +1710,26 @@ mod tests {
Vertex::new(1, None, details.clone()),
pb::path_expand::PathOpt::Arbitrary,
pb::path_expand::ResultOpt::AllVE,
);
)
.unwrap();
sub_path1.append(Edge::new(12, None, 1, 2, details.clone()));
sub_path1.append(Vertex::new(2, None, details.clone()));
// sub_path2: [3 <- 2]
let mut sub_path2 = GraphPath::new(
Vertex::new(3, None, details.clone()),
pb::path_expand::PathOpt::Arbitrary,
pb::path_expand::ResultOpt::AllVE,
);
)
.unwrap();
sub_path2.append(Edge::new(23, None, 2, 3, details.clone()));
sub_path2.append(Vertex::new(2, None, details.clone()));
// concat path: [1 -> 2 <- 3]
let mut concat_path = GraphPath::new(
Vertex::new(1, None, details.clone()),
pb::path_expand::PathOpt::Arbitrary,
pb::path_expand::ResultOpt::AllVE,
);
)
.unwrap();
concat_path.append(Edge::new(12, None, 1, 2, details.clone()));
concat_path.append(Vertex::new(2, None, details.clone()));
concat_path.append(Edge::new(23, None, 2, 3, details.clone()));
Expand Down Expand Up @@ -1811,7 +1816,8 @@ mod tests {
let vertex1 = init_vertex1();
let vertex2 = init_vertex2();
let mut path =
GraphPath::new(vertex1, pb::path_expand::PathOpt::Arbitrary, pb::path_expand::ResultOpt::AllV);
GraphPath::new(vertex1, pb::path_expand::PathOpt::Arbitrary, pb::path_expand::ResultOpt::AllV)
.unwrap();
path.append(vertex2);
Record::new(path, None)
}
Expand Down

0 comments on commit c7c7cd2

Please sign in to comment.