Fix inconsistencies in text index updating
This commit is contained in:
parent
e1e025f0ed
commit
00bdd8ac96
@ -3106,7 +3106,9 @@ bool SetProperties::SetPropertiesCursor::Pull(Frame &frame, ExecutionContext &co
|
||||
}
|
||||
#endif
|
||||
SetPropertiesOnRecord(&lhs.ValueVertex(), rhs, self_.op_, &context, cached_name_id_);
|
||||
context.db_accessor->TextIndexUpdateVertex(&lhs.ValueVertex());
|
||||
if (flags::run_time::GetExperimentalTextSearchEnabled()) {
|
||||
context.db_accessor->TextIndexUpdateVertex(&lhs.ValueVertex());
|
||||
}
|
||||
break;
|
||||
case TypedValue::Type::Edge:
|
||||
#ifdef MG_ENTERPRISE
|
||||
|
@ -1841,11 +1841,13 @@ mgp_error mgp_vertex_set_property(struct mgp_vertex *v, const char *property_nam
|
||||
std::visit([property_name](auto *impl) { return impl->NameToProperty(property_name); }, v->graph->impl);
|
||||
|
||||
const auto result = std::visit(
|
||||
[prop_key, property_value](auto &impl) {
|
||||
// TODO antepusic also update text index
|
||||
return impl.SetProperty(prop_key, ToPropertyValue(*property_value));
|
||||
},
|
||||
[prop_key, property_value](auto &impl) { return impl.SetProperty(prop_key, ToPropertyValue(*property_value)); },
|
||||
v->impl);
|
||||
if (memgraph::flags::run_time::GetExperimentalTextSearchEnabled() && !result.HasError()) {
|
||||
auto v_impl = v->getImpl();
|
||||
v->graph->getImpl()->TextIndexUpdateVertex(&v_impl);
|
||||
}
|
||||
|
||||
if (result.HasError()) {
|
||||
switch (result.GetError()) {
|
||||
case memgraph::storage::Error::DELETED_OBJECT:
|
||||
@ -1902,7 +1904,11 @@ mgp_error mgp_vertex_set_properties(struct mgp_vertex *v, struct mgp_map *proper
|
||||
}
|
||||
|
||||
const auto result = v->getImpl().UpdateProperties(props);
|
||||
// TODO antepusic also update text index
|
||||
if (memgraph::flags::run_time::GetExperimentalTextSearchEnabled() && !result.HasError()) {
|
||||
auto v_impl = v->getImpl();
|
||||
v->graph->getImpl()->TextIndexUpdateVertex(&v_impl);
|
||||
}
|
||||
|
||||
if (result.HasError()) {
|
||||
switch (result.GetError()) {
|
||||
case memgraph::storage::Error::DELETED_OBJECT:
|
||||
@ -1959,12 +1965,11 @@ mgp_error mgp_vertex_add_label(struct mgp_vertex *v, mgp_label label) {
|
||||
throw ImmutableObjectException{"Cannot add a label to an immutable vertex!"};
|
||||
}
|
||||
|
||||
const auto result = std::visit(
|
||||
[label_id](auto &impl) {
|
||||
// TODO antepusic also update text index
|
||||
return impl.AddLabel(label_id);
|
||||
},
|
||||
v->impl);
|
||||
const auto result = std::visit([label_id](auto &impl) { return impl.AddLabel(label_id); }, v->impl);
|
||||
if (memgraph::flags::run_time::GetExperimentalTextSearchEnabled() && !result.HasError()) {
|
||||
auto v_impl = v->getImpl();
|
||||
v->graph->getImpl()->TextIndexUpdateVertex(&v_impl);
|
||||
}
|
||||
|
||||
if (result.HasError()) {
|
||||
switch (result.GetError()) {
|
||||
@ -2006,12 +2011,11 @@ mgp_error mgp_vertex_remove_label(struct mgp_vertex *v, mgp_label label) {
|
||||
if (!MgpVertexIsMutable(*v)) {
|
||||
throw ImmutableObjectException{"Cannot remove a label from an immutable vertex!"};
|
||||
}
|
||||
const auto result = std::visit(
|
||||
[label_id](auto &impl) {
|
||||
// todo also remove from text index
|
||||
return impl.RemoveLabel(label_id);
|
||||
},
|
||||
v->impl);
|
||||
const auto result = std::visit([label_id](auto &impl) { return impl.RemoveLabel(label_id); }, v->impl);
|
||||
if (memgraph::flags::run_time::GetExperimentalTextSearchEnabled() && !result.HasError()) {
|
||||
auto v_impl = v->getImpl();
|
||||
v->graph->getImpl()->TextIndexUpdateVertex(&v_impl, {label_id});
|
||||
}
|
||||
|
||||
if (result.HasError()) {
|
||||
switch (result.GetError()) {
|
||||
@ -2981,6 +2985,11 @@ mgp_error mgp_graph_create_vertex(struct mgp_graph *graph, mgp_memory *memory, m
|
||||
}
|
||||
auto *vertex = std::visit(
|
||||
[=](auto *impl) { return NewRawMgpObject<mgp_vertex>(memory, impl->InsertVertex(), graph); }, graph->impl);
|
||||
// TODO antepusic update text index
|
||||
if (memgraph::flags::run_time::GetExperimentalTextSearchEnabled()) {
|
||||
auto v_impl = vertex->getImpl();
|
||||
vertex->graph->getImpl()->TextIndexAddVertex(&v_impl);
|
||||
}
|
||||
|
||||
auto &ctx = graph->ctx;
|
||||
ctx->execution_stats[memgraph::query::ExecutionStats::Key::CREATED_NODES] += 1;
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Copyright 2023 Memgraph Ltd.
|
||||
// Copyright 2024 Memgraph Ltd.
|
||||
//
|
||||
// Use of this software is governed by the Business Source License
|
||||
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
||||
@ -562,6 +562,13 @@ struct mgp_graph {
|
||||
memgraph::query::ExecutionContext *ctx;
|
||||
memgraph::storage::StorageMode storage_mode;
|
||||
|
||||
memgraph::query::DbAccessor *getImpl() const {
|
||||
return std::visit(
|
||||
memgraph::utils::Overloaded{[](memgraph::query::DbAccessor *impl) { return impl; },
|
||||
[](memgraph::query::SubgraphDbAccessor *impl) { return impl->GetAccessor(); }},
|
||||
this->impl);
|
||||
}
|
||||
|
||||
static mgp_graph WritableGraph(memgraph::query::DbAccessor &acc, memgraph::storage::View view,
|
||||
memgraph::query::ExecutionContext &ctx) {
|
||||
return mgp_graph{&acc, view, &ctx, acc.GetStorageMode()};
|
||||
|
@ -149,10 +149,6 @@ Result<std::optional<VertexAccessor>> Storage::Accessor::DeleteVertex(VertexAcce
|
||||
return res.GetError();
|
||||
}
|
||||
|
||||
if (flags::run_time::GetExperimentalTextSearchEnabled()) {
|
||||
storage_->indices_.text_index_.RemoveNode(vertex->vertex_);
|
||||
}
|
||||
|
||||
const auto &value = res.GetValue();
|
||||
if (!value) {
|
||||
return std::optional<VertexAccessor>{};
|
||||
@ -190,10 +186,6 @@ Result<std::optional<std::pair<VertexAccessor, std::vector<EdgeAccessor>>>> Stor
|
||||
return res.GetError();
|
||||
}
|
||||
|
||||
if (flags::run_time::GetExperimentalTextSearchEnabled()) {
|
||||
storage_->indices_.text_index_.RemoveNode(vertex->vertex_);
|
||||
}
|
||||
|
||||
auto &value = res.GetValue();
|
||||
if (!value) {
|
||||
return std::optional<ReturnType>{};
|
||||
|
Loading…
Reference in New Issue
Block a user