From 14ddd7254d5be185fae59038eb8c0466a69b93f4 Mon Sep 17 00:00:00 2001 From: jbajic <jure.bajic@memgraph.com> Date: Tue, 15 Nov 2022 19:37:24 +0100 Subject: [PATCH] Fix communication and memgraph --- src/glue/v2/communication.cpp | 14 ++++++------ src/glue/v2/communication.hpp | 8 +++---- src/memgraph.cpp | 40 +++++++++++++++++++++++------------ 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/glue/v2/communication.cpp b/src/glue/v2/communication.cpp index ebca8c23f..495ce1698 100644 --- a/src/glue/v2/communication.cpp +++ b/src/glue/v2/communication.cpp @@ -71,7 +71,7 @@ query::v2::TypedValue ToTypedValue(const Value &value) { } } -storage::v3::Result<communication::bolt::Vertex> ToBoltVertex( +storage::v3::ShardResult<communication::bolt::Vertex> ToBoltVertex( const query::v2::accessors::VertexAccessor &vertex, const msgs::ShardRequestManagerInterface *shard_request_manager, storage::v3::View /*view*/) { auto id = communication::bolt::Id::FromUint(0); @@ -91,7 +91,7 @@ storage::v3::Result<communication::bolt::Vertex> ToBoltVertex( return communication::bolt::Vertex{id, new_labels, new_properties}; } -storage::v3::Result<communication::bolt::Edge> ToBoltEdge( +storage::v3::ShardResult<communication::bolt::Edge> ToBoltEdge( const query::v2::accessors::EdgeAccessor &edge, const msgs::ShardRequestManagerInterface *shard_request_manager, storage::v3::View /*view*/) { // TODO(jbajic) Fix bolt communication @@ -108,16 +108,16 @@ storage::v3::Result<communication::bolt::Edge> ToBoltEdge( return communication::bolt::Edge{id, from, to, type, new_properties}; } -storage::v3::Result<communication::bolt::Path> ToBoltPath( +storage::v3::ShardResult<communication::bolt::Path> ToBoltPath( const query::v2::accessors::Path & /*edge*/, const msgs::ShardRequestManagerInterface * /*shard_request_manager*/, storage::v3::View /*view*/) { // TODO(jbajic) Fix bolt communication - return {storage::v3::Error::DELETED_OBJECT}; + return {SHARD_ERROR(storage::v3::ErrorCode::DELETED_OBJECT)}; } -storage::v3::Result<Value> ToBoltValue(const query::v2::TypedValue &value, - const msgs::ShardRequestManagerInterface *shard_request_manager, - storage::v3::View view) { +storage::v3::ShardResult<Value> ToBoltValue(const query::v2::TypedValue &value, + const msgs::ShardRequestManagerInterface *shard_request_manager, + storage::v3::View view) { switch (value.type()) { case query::v2::TypedValue::Type::Null: return Value(); diff --git a/src/glue/v2/communication.hpp b/src/glue/v2/communication.hpp index ea9c6b4c9..debc26adf 100644 --- a/src/glue/v2/communication.hpp +++ b/src/glue/v2/communication.hpp @@ -35,7 +35,7 @@ namespace memgraph::glue::v2 { /// @param storage::v3::View for deciding which vertex attributes are visible. /// /// @throw std::bad_alloc -storage::v3::Result<communication::bolt::Vertex> ToBoltVertex( +storage::v3::ShardResult<communication::bolt::Vertex> ToBoltVertex( const storage::v3::VertexAccessor &vertex, const msgs::ShardRequestManagerInterface *shard_request_manager, storage::v3::View view); @@ -44,7 +44,7 @@ storage::v3::Result<communication::bolt::Vertex> ToBoltVertex( /// @param storage::v3::View for deciding which edge attributes are visible. /// /// @throw std::bad_alloc -storage::v3::Result<communication::bolt::Edge> ToBoltEdge( +storage::v3::ShardResult<communication::bolt::Edge> ToBoltEdge( const storage::v3::EdgeAccessor &edge, const msgs::ShardRequestManagerInterface *shard_request_manager, storage::v3::View view); @@ -53,7 +53,7 @@ storage::v3::Result<communication::bolt::Edge> ToBoltEdge( /// @param storage::v3::View for ToBoltVertex and ToBoltEdge. /// /// @throw std::bad_alloc -storage::v3::Result<communication::bolt::Path> ToBoltPath( +storage::v3::ShardResult<communication::bolt::Path> ToBoltPath( const query::v2::accessors::Path &path, const msgs::ShardRequestManagerInterface *shard_request_manager, storage::v3::View view); @@ -62,7 +62,7 @@ storage::v3::Result<communication::bolt::Path> ToBoltPath( /// @param storage::v3::View for ToBoltVertex and ToBoltEdge. /// /// @throw std::bad_alloc -storage::v3::Result<communication::bolt::Value> ToBoltValue( +storage::v3::ShardResult<communication::bolt::Value> ToBoltValue( const query::v2::TypedValue &value, const msgs::ShardRequestManagerInterface *shard_request_manager, storage::v3::View view); diff --git a/src/memgraph.cpp b/src/memgraph.cpp index deaf9e568..f553d1821 100644 --- a/src/memgraph.cpp +++ b/src/memgraph.cpp @@ -483,13 +483,19 @@ class BoltSession final : public memgraph::communication::bolt::Session<memgraph auto maybe_value = memgraph::glue::v2::ToBoltValue(kv.second, interpreter_.GetShardRequestManager(), memgraph::storage::v3::View::NEW); if (maybe_value.HasError()) { - switch (maybe_value.GetError()) { - case memgraph::storage::v3::Error::DELETED_OBJECT: - case memgraph::storage::v3::Error::SERIALIZATION_ERROR: - case memgraph::storage::v3::Error::VERTEX_HAS_EDGES: - case memgraph::storage::v3::Error::PROPERTIES_DISABLED: - case memgraph::storage::v3::Error::NONEXISTENT_OBJECT: - case memgraph::storage::v3::Error::VERTEX_ALREADY_INSERTED: + switch (maybe_value.GetError().code) { + case memgraph::storage::v3::ErrorCode::DELETED_OBJECT: + case memgraph::storage::v3::ErrorCode::SERIALIZATION_ERROR: + case memgraph::storage::v3::ErrorCode::VERTEX_HAS_EDGES: + case memgraph::storage::v3::ErrorCode::PROPERTIES_DISABLED: + case memgraph::storage::v3::ErrorCode::NONEXISTENT_OBJECT: + case memgraph::storage::v3::ErrorCode::VERTEX_ALREADY_INSERTED: + case memgraph::storage::v3::ErrorCode::SCHEMA_NO_SCHEMA_DEFINED_FOR_LABEL: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_PROPERTY_WRONG_TYPE: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_UPDATE_PRIMARY_KEY: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_UPDATE_PRIMARY_LABEL: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_SECONDARY_LABEL_IS_PRIMARY: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_PRIMARY_PROPERTIES_UNDEFINED: throw memgraph::communication::bolt::ClientError("Unexpected storage error when streaming summary."); } } @@ -516,15 +522,21 @@ class BoltSession final : public memgraph::communication::bolt::Session<memgraph for (const auto &v : values) { auto maybe_value = memgraph::glue::v2::ToBoltValue(v, shard_request_manager_, memgraph::storage::v3::View::NEW); if (maybe_value.HasError()) { - switch (maybe_value.GetError()) { - case memgraph::storage::v3::Error::DELETED_OBJECT: + switch (maybe_value.GetError().code) { + case memgraph::storage::v3::ErrorCode::DELETED_OBJECT: throw memgraph::communication::bolt::ClientError("Returning a deleted object as a result."); - case memgraph::storage::v3::Error::NONEXISTENT_OBJECT: + case memgraph::storage::v3::ErrorCode::NONEXISTENT_OBJECT: throw memgraph::communication::bolt::ClientError("Returning a nonexistent object as a result."); - case memgraph::storage::v3::Error::VERTEX_HAS_EDGES: - case memgraph::storage::v3::Error::SERIALIZATION_ERROR: - case memgraph::storage::v3::Error::PROPERTIES_DISABLED: - case memgraph::storage::v3::Error::VERTEX_ALREADY_INSERTED: + case memgraph::storage::v3::ErrorCode::VERTEX_HAS_EDGES: + case memgraph::storage::v3::ErrorCode::SERIALIZATION_ERROR: + case memgraph::storage::v3::ErrorCode::PROPERTIES_DISABLED: + case memgraph::storage::v3::ErrorCode::VERTEX_ALREADY_INSERTED: + case memgraph::storage::v3::ErrorCode::SCHEMA_NO_SCHEMA_DEFINED_FOR_LABEL: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_PROPERTY_WRONG_TYPE: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_UPDATE_PRIMARY_KEY: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_UPDATE_PRIMARY_LABEL: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_SECONDARY_LABEL_IS_PRIMARY: + case memgraph::storage::v3::ErrorCode::SCHEMA_VERTEX_PRIMARY_PROPERTIES_UNDEFINED: throw memgraph::communication::bolt::ClientError("Unexpected storage error when streaming results."); } }