From d277dd49a389b8b810dab721c22a3bbaf2bdb701 Mon Sep 17 00:00:00 2001 From: Antonio Andelic Date: Fri, 26 Nov 2021 15:31:25 +0100 Subject: [PATCH] Update stats with query modules (#304) --- src/query/metadata.hpp | 2 +- src/query/procedure/mg_procedure_impl.cpp | 81 ++++++++++++++++++----- 2 files changed, 67 insertions(+), 16 deletions(-) diff --git a/src/query/metadata.hpp b/src/query/metadata.hpp index 58da744dbd..3ca176a721 100644 --- a/src/query/metadata.hpp +++ b/src/query/metadata.hpp @@ -87,4 +87,4 @@ struct ExecutionStats { std::string ExecutionStatsKeyToString(ExecutionStats::Key key); -} // namespace query \ No newline at end of file +} // namespace query diff --git a/src/query/procedure/mg_procedure_impl.cpp b/src/query/procedure/mg_procedure_impl.cpp index 3b3912f318..ce20b775cc 100644 --- a/src/query/procedure/mg_procedure_impl.cpp +++ b/src/query/procedure/mg_procedure_impl.cpp @@ -1583,7 +1583,11 @@ mgp_error mgp_vertex_set_property(struct mgp_vertex *v, const char *property_nam } } - auto *trigger_ctx_collector = v->graph->ctx->trigger_context_collector; + auto &ctx = v->graph->ctx; + + ctx->execution_stats[query::ExecutionStats::Key::UPDATED_PROPERTIES] += 1; + + auto *trigger_ctx_collector = ctx->trigger_context_collector; if (!trigger_ctx_collector || !trigger_ctx_collector->ShouldRegisterObjectPropertyChange()) { return; } @@ -1619,8 +1623,12 @@ mgp_error mgp_vertex_add_label(struct mgp_vertex *v, mgp_label label) { } } - if (v->graph->ctx->trigger_context_collector) { - v->graph->ctx->trigger_context_collector->RegisterSetVertexLabel(v->impl, label_id); + auto &ctx = v->graph->ctx; + + ctx->execution_stats[query::ExecutionStats::Key::CREATED_LABELS] += 1; + + if (ctx->trigger_context_collector) { + ctx->trigger_context_collector->RegisterSetVertexLabel(v->impl, label_id); } }); } @@ -1646,8 +1654,13 @@ mgp_error mgp_vertex_remove_label(struct mgp_vertex *v, mgp_label label) { throw SerializationException{"Cannot serialize removing a label from a vertex."}; } } - if (v->graph->ctx->trigger_context_collector) { - v->graph->ctx->trigger_context_collector->RegisterRemovedVertexLabel(v->impl, label_id); + + auto &ctx = v->graph->ctx; + + ctx->execution_stats[query::ExecutionStats::Key::DELETED_LABELS] += 1; + + if (ctx->trigger_context_collector) { + ctx->trigger_context_collector->RegisterRemovedVertexLabel(v->impl, label_id); } }); } @@ -1994,6 +2007,10 @@ mgp_error mgp_edge_set_property(struct mgp_edge *e, const char *property_name, m } } + auto &ctx = e->from.graph->ctx; + + ctx->execution_stats[query::ExecutionStats::Key::UPDATED_PROPERTIES] += 1; + auto *trigger_ctx_collector = e->from.graph->ctx->trigger_context_collector; if (!trigger_ctx_collector || !trigger_ctx_collector->ShouldRegisterObjectPropertyChange()) { return; @@ -2059,8 +2076,12 @@ mgp_error mgp_graph_create_vertex(struct mgp_graph *graph, mgp_memory *memory, m throw ImmutableObjectException{"Cannot create a vertex in an immutable graph!"}; } auto vertex = graph->impl->InsertVertex(); - if (graph->ctx->trigger_context_collector) { - graph->ctx->trigger_context_collector->RegisterCreatedObject(vertex); + + auto &ctx = graph->ctx; + ctx->execution_stats[query::ExecutionStats::Key::CREATED_NODES] += 1; + + if (ctx->trigger_context_collector) { + ctx->trigger_context_collector->RegisterCreatedObject(vertex); } return NewRawMgpObject(memory, vertex, graph); }, @@ -2087,8 +2108,17 @@ mgp_error mgp_graph_delete_vertex(struct mgp_graph *graph, mgp_vertex *vertex) { throw SerializationException{"Cannot serialize removing a vertex."}; } } - if (graph->ctx->trigger_context_collector && *result) { - graph->ctx->trigger_context_collector->RegisterDeletedObject(**result); + + if (!*result) { + return; + } + + auto &ctx = graph->ctx; + + ctx->execution_stats[query::ExecutionStats::Key::DELETED_NODES] += 1; + + if (ctx->trigger_context_collector) { + ctx->trigger_context_collector->RegisterDeletedObject(**result); } }); } @@ -2113,10 +2143,20 @@ mgp_error mgp_graph_detach_delete_vertex(struct mgp_graph *graph, mgp_vertex *ve } } - auto *trigger_ctx_collector = graph->ctx->trigger_context_collector; - if (!trigger_ctx_collector || !*result) { + if (!*result) { + return; + } + + auto &ctx = graph->ctx; + + ctx->execution_stats[query::ExecutionStats::Key::DELETED_NODES] += 1; + ctx->execution_stats[query::ExecutionStats::Key::DELETED_EDGES] += static_cast((*result)->second.size()); + + auto *trigger_ctx_collector = ctx->trigger_context_collector; + if (!trigger_ctx_collector) { return; } + trigger_ctx_collector->RegisterDeletedObject((*result)->first); if (!trigger_ctx_collector->ShouldRegisterDeletedObject()) { return; @@ -2149,8 +2189,12 @@ mgp_error mgp_graph_create_edge(mgp_graph *graph, mgp_vertex *from, mgp_vertex * throw SerializationException{"Cannot serialize creating an edge."}; } } - if (graph->ctx->trigger_context_collector) { - graph->ctx->trigger_context_collector->RegisterCreatedObject(*edge); + auto &ctx = graph->ctx; + + ctx->execution_stats[query::ExecutionStats::Key::CREATED_EDGES] += 1; + + if (ctx->trigger_context_collector) { + ctx->trigger_context_collector->RegisterCreatedObject(*edge); } return NewRawMgpObject(memory, edge.GetValue(), from->graph); }, @@ -2176,8 +2220,15 @@ mgp_error mgp_graph_delete_edge(struct mgp_graph *graph, mgp_edge *edge) { throw SerializationException{"Cannot serialize removing an edge."}; } } - if (graph->ctx->trigger_context_collector && *result) { - graph->ctx->trigger_context_collector->RegisterDeletedObject(**result); + + if (!*result) { + return; + } + auto &ctx = graph->ctx; + + ctx->execution_stats[query::ExecutionStats::Key::DELETED_EDGES] += 1; + if (ctx->trigger_context_collector) { + ctx->trigger_context_collector->RegisterDeletedObject(**result); } }); }