Do not pull vertices one by one
This commit is contained in:
parent
fe14a8674c
commit
6f730f9a91
@ -3087,25 +3087,18 @@ class DistributedExpandCursor : public Cursor {
|
|||||||
MG_ASSERT(direction != EdgeAtom::Direction::BOTH);
|
MG_ASSERT(direction != EdgeAtom::Direction::BOTH);
|
||||||
const auto &edge = frame[self_.common_.edge_symbol].ValueEdge();
|
const auto &edge = frame[self_.common_.edge_symbol].ValueEdge();
|
||||||
static constexpr auto get_dst_vertex = [](const EdgeAccessor &edge,
|
static constexpr auto get_dst_vertex = [](const EdgeAccessor &edge,
|
||||||
const EdgeAtom::Direction direction) -> msgs::VertexId {
|
const EdgeAtom::Direction direction) -> accessors::VertexAccessor {
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case EdgeAtom::Direction::IN:
|
case EdgeAtom::Direction::IN:
|
||||||
return edge.From().Id();
|
return edge.From();
|
||||||
case EdgeAtom::Direction::OUT:
|
case EdgeAtom::Direction::OUT:
|
||||||
return edge.To().Id();
|
return edge.To();
|
||||||
case EdgeAtom::Direction::BOTH:
|
case EdgeAtom::Direction::BOTH:
|
||||||
throw std::runtime_error("EdgeDirection Both not implemented");
|
throw std::runtime_error("EdgeDirection Both not implemented");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
msgs::GetPropertiesRequest request;
|
frame[self_.common_.node_symbol] = get_dst_vertex(edge, direction);
|
||||||
// to not fetch any properties of the edges
|
|
||||||
request.vertex_ids.push_back(get_dst_vertex(edge, direction));
|
|
||||||
auto result_rows = context.request_router->GetProperties(std::move(request));
|
|
||||||
MG_ASSERT(result_rows.size() == 1);
|
|
||||||
auto &result_row = result_rows.front();
|
|
||||||
frame[self_.common_.node_symbol] =
|
|
||||||
accessors::VertexAccessor(msgs::Vertex{result_row.vertex}, result_row.props, context.request_router);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InitEdges(Frame &frame, ExecutionContext &context) {
|
bool InitEdges(Frame &frame, ExecutionContext &context) {
|
||||||
|
@ -66,4 +66,5 @@ add_manual_test(ssl_server.cpp)
|
|||||||
target_link_libraries(${test_prefix}ssl_server mg-communication)
|
target_link_libraries(${test_prefix}ssl_server mg-communication)
|
||||||
|
|
||||||
add_manual_test(query_performance.cpp)
|
add_manual_test(query_performance.cpp)
|
||||||
|
target_sources(${test_prefix}query_performance PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/query_performance_run.cpp)
|
||||||
target_link_libraries(${test_prefix}query_performance mg-communication mg-utils mg-io mg-io-simulator mg-coordinator mg-query-v2 mg-storage-v3 mg-query mg-storage-v2)
|
target_link_libraries(${test_prefix}query_performance mg-communication mg-utils mg-io mg-io-simulator mg-coordinator mg-query-v2 mg-storage-v3 mg-query mg-storage-v2)
|
||||||
|
Loading…
Reference in New Issue
Block a user