From a06b3fc7e4e414ed34fb4be3f8dba9122d84af0a Mon Sep 17 00:00:00 2001 From: Matea Pesic <80577904+matea16@users.noreply.github.com> Date: Wed, 16 Jul 2025 15:01:41 +0200 Subject: [PATCH] Memgraph integration fixes (#991) ## Description Created a fix for Memgraph integration where the query silently fails in relationship creation if nodes don't exist. ## DCO Affirmation I affirm that all code in every commit of this pull request conforms to the terms of the Topoteretes Developer Certificate of Origin. --------- Co-authored-by: github-actions[bot] Co-authored-by: hajdul88 <52442977+hajdul88@users.noreply.github.com> Co-authored-by: Boris --- .../databases/graph/memgraph/memgraph_adapter.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cognee/infrastructure/databases/graph/memgraph/memgraph_adapter.py b/cognee/infrastructure/databases/graph/memgraph/memgraph_adapter.py index 050e3a3c8..3612e3277 100644 --- a/cognee/infrastructure/databases/graph/memgraph/memgraph_adapter.py +++ b/cognee/infrastructure/databases/graph/memgraph/memgraph_adapter.py @@ -381,12 +381,19 @@ class MemgraphAdapter(GraphDBInterface): The result of the edge addition operation, including relationship details. """ + + exists = await asyncio.gather(self.has_node(str(from_node)), self.has_node(str(to_node))) + + if not all(exists): + return None + serialized_properties = self.serialize_properties(edge_properties or {}) query = dedent( f"""\ MATCH (from_node {{id: $from_node}}), (to_node {{id: $to_node}}) + WHERE from_node IS NOT NULL AND to_node IS NOT NULL MERGE (from_node)-[r:{relationship_name}]->(to_node) ON CREATE SET r += $properties, r.updated_at = timestamp() ON MATCH SET r += $properties, r.updated_at = timestamp()