Open
Conversation
aheev
suggested changes
May 5, 2026
| -LOG QueryDynamicNodePropertyInPatternFilter | ||
| -STATEMENT MATCH (u:User {age: 30}) RETURN u.name, u.age | ||
| ---- 1 | ||
| "Alice"|30 |
Contributor
There was a problem hiding this comment.
Shouldn’t we return a plain string instead of a quoted one, just like the normal graphs?
Contributor
There was a problem hiding this comment.
Also a test involving string prop filters would help
Contributor
Author
There was a problem hiding this comment.
Both good suggestions. Yes - the ideal of end users can't detect any differences between strictly typed vs open type graphs at the query level is worth going for.
Open type graph dynamic properties are stored in the system data column, but filtered scans were treating them like physical table columns. This made pattern predicates and WHERE predicates on labels such as User.age call property metadata lookups that do not exist for _nodes/_edges, which surfaced as unordered_map::at failures instead of behaving like a declared node or edge table. Route missing dynamic properties through JSON extraction during scan planning, return scalar JSON strings without serialization quotes, apply the same casting path for relationship scans, and avoid cardinality estimation lookups for properties that are not physical columns. Add ANY graph regressions for numeric and string node filters plus relationship property filters so open graphs match the behavior users get after creating explicit node and edge tables.
65b1bcd to
e73c10f
Compare
aheev
approved these changes
May 5, 2026
| } | ||
|
|
||
| std::string jsonExtractScalarToString(const JsonWrapper& wrapper, std::string path) { | ||
| std::vector<std::string> actualPath; |
Contributor
There was a problem hiding this comment.
nit: can this code be de-dupped?
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes: #451
Open type graph dynamic properties are stored in the system data
JSONcolumn, but filtered scans were treating them like physical table columns. This made pattern predicates and WHERE predicates on labels such as User.age call property metadata lookups that do not exist for _nodes/_edges, which surfaced as unordered_map::at failures instead of behaving like a declared node or edge table.Route missing dynamic properties through JSON extraction during scan planning, apply the same casting path for relationship scans, and avoid cardinality estimation lookups for properties that are not physical columns. Add ANY graph regressions for node and relationship property filters so open graphs match the behavior users get after creating explicit node and edge tables.