From f517f8f368b6be2a9b2e58f0f1cd4115c054187e Mon Sep 17 00:00:00 2001 From: Josip Mrden <josip.mrden@memgraph.io> Date: Wed, 20 Mar 2024 13:33:09 +0100 Subject: [PATCH] Fix --- src/query/procedure/mg_procedure_impl.cpp | 11 +++++++---- src/query/procedure/mg_procedure_impl.hpp | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/query/procedure/mg_procedure_impl.cpp b/src/query/procedure/mg_procedure_impl.cpp index 8db56fdf0..70d67080c 100644 --- a/src/query/procedure/mg_procedure_impl.cpp +++ b/src/query/procedure/mg_procedure_impl.cpp @@ -4088,10 +4088,7 @@ mgp_error mgp_execute_query(mgp_graph *graph, mgp_memory *memory, const char *qu auto *interpreter = new memgraph::query::Interpreter(instance, instance->dbms_handler->Get()); interpreter->SetUser(graph->ctx->user_or_role); - // instance->interpreters.WithLock([&interpreter](auto &interpreters) { interpreters.insert(&interpreter); }); - // memgraph::utils::OnScopeExit erase_interpreter([&] { - // instance->interpreters.WithLock([&interpreter](auto &interpreters) { interpreters.erase(&interpreter); }); - // }); + instance->interpreters.WithLock([interpreter](auto &interpreters) { interpreters.insert(interpreter); }); const auto query_params = CreateQueryParams(params); @@ -4108,6 +4105,12 @@ mgp_error mgp_execute_query(mgp_graph *graph, mgp_memory *memory, const char *qu result); } +mgp_execution_result::~mgp_execution_result() { + auto *instance = memgraph::query::InterpreterContext::getInstance(); + instance->interpreters.WithLock([this](auto &interpreters) { interpreters.erase(interpreter); }); + interpreter = nullptr; +} + mgp_error mgp_fetch_execution_headers(mgp_execution_result *exec_result, mgp_execution_headers **result) { return WrapExceptions([exec_result]() { return &exec_result->headers; }, result); } diff --git a/src/query/procedure/mg_procedure_impl.hpp b/src/query/procedure/mg_procedure_impl.hpp index 4923cd35e..d14734862 100644 --- a/src/query/procedure/mg_procedure_impl.hpp +++ b/src/query/procedure/mg_procedure_impl.hpp @@ -1021,7 +1021,7 @@ struct mgp_execution_rows { struct mgp_execution_result { mgp_execution_result(memgraph::query::Interpreter *interpreter, mgp_execution_headers headers) : interpreter(interpreter), headers(headers) {} - ~mgp_execution_result() = default; + ~mgp_execution_result(); memgraph::query::Interpreter *interpreter; mgp_execution_headers headers;