Fix node attribute-index updates for SET statements
This PR fixes an issue where nodes could not be found by their updated property values after using a SET statement. Previously when updating a node property with SET, the node-attribute-index was not updated to reflect the new property values.
Problem
When updating a node property with the SET statement (e.g., SET n+={id: 'a2'}), the actual property was updated in the node, but the node-attribute-index still pointed to the old value. This meant that queries like MATCH (n:AttributesType {id: 'a2'}) would return no results, even though the node with that property value existed.
Solution
I added functionality to scan nodes directly when property lookup fails through the index, and to update the index accordingly:
- Added a
removeLookupNodeIdfunction to remove node IDs from indexes - Modified the
matchNodePropertiesfunction to:- Search all nodes directly when a property lookup through the index returns no results
- Add found nodes to the index for future queries
Example
The following now works as expected:
// Create a node
CREATE (n:AttributesType {id: 'a'}) return n
// Update its property
MATCH (n:AttributesType {id: 'a'}) SET n+={id: 'a2'} RETURN n
// Query by the new property value (previously returned 0 nodes)
MATCH (n:AttributesType {id: 'a2'}) RETURN n
The solution is minimal and maintains backward compatibility with the rest of the codebase.
Fixes #2.
[!WARNING]
Firewall rules blocked me from connecting to one or more addresses
I tried to connect to the following addresses, but was blocked by firewall rules:
cdn.fwupd.org
- Triggering command:
/usr/bin/fwupdmgr refresh(dns block)If you need me to access, download, or install something from one of these locations, you can either:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to my firewall allow list
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.