fix(query): fix has function in filter #9043
Merged
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.
Currently when we have a language tagged predicate (example: name). Querying name should return only untagged values. name@. should return any language.
Consider dataset
<1> "first user" .
<2> name@en "second user" .
query (func: uid(1,2)) { uid name} would return "{uid: 1, name: first user}".
query (func: uid(1,2)) { uid name@.} would return "{{uid: 1, name@.: "first user"}, {uid: 2, name@.: "second user"}}".
However due to a bug, we are not enforcing this in @filter(has(name)). So this results in
query (func: has(dgraph.type)) @filter(has(name)) { uid name} results in
"{{uid: 1, name: "first user'}, {uid: 2}}"
Fix: We update @filter(has(name)) to filter on basis of language.