fix(GRAPHQL): fix duplicate xid error for multiple xid fields.#7546
Merged
JatinDev543 merged 2 commits intorelease/v21.03from Mar 11, 2021
Merged
fix(GRAPHQL): fix duplicate xid error for multiple xid fields.#7546JatinDev543 merged 2 commits intorelease/v21.03from
JatinDev543 merged 2 commits intorelease/v21.03from
Conversation
vmrajas
reviewed
Mar 11, 2021
| // } | ||
| // } | ||
| // } | ||
| // The two generated kes for this case will be |
vmrajas
approved these changes
Mar 11, 2021
Contributor
vmrajas
left a comment
There was a problem hiding this comment.
LGTM.
Nicely written tests covering a wide range of cases.
abhimanyusinghgaur
approved these changes
Mar 11, 2021
aman-bansal
pushed a commit
that referenced
this pull request
Mar 15, 2021
We were getting duplicate xid error for the multiple xid fields if typeName+xidName+xidValue is same for those fields. The reason for this is that we need to generate unique query variables for the xids field while doing mutation rewriting and for that we use a map to variable names.
we were using below key for that map
key = typ.FieldOriginatedFrom(xidName) + xidName + xidVal
This was generating same key for different xid fields. For example in below type we have two fields with id fields
type ABC {
ab: String! @id
abc: String! @id
}
And below mutation try to set them such that key = typ.FieldOriginatedFrom(xidName) + xidName + xidVal will be same for both of them i.e. ABC+ab+cd=ABC+abc+d=ABCabcd
mutation {
addABC(input: [{ ab: "cd", abc: "d" }]) {
aBC {
ab
abc
}
}
}
This error also occur in multiple types.
We now added "." between values to separate typename and xidname , and the xidValue.This will ensure unique keys for xid fields across types.
key = typ.FieldOriginatedFrom(xidName) + "." + xidName + "." + xidVal
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.
We were getting duplicate xid error for the multiple xid fields if
typeName+xidName+xidValueis same for those fields. The reason for this is that we need to generate unique query variables for the xids field while doing mutation rewriting and for that we use a map to variable names.we were using below key for that map
key = typ.FieldOriginatedFrom(xidName) + xidName + xidValThis was generating same key for different xid fields. For example in below type we have two fields with id fields
And below mutation try to set them such that
key = typ.FieldOriginatedFrom(xidName) + xidName + xidValwill be same for both of them i.e.ABC+ab+cd=ABC+abc+d=ABCabcdThis error also occur in multiple types.
We now added "." between values to separate typename and xidname , and the xidValue.This will ensure unique keys for xid fields across types.
key = typ.FieldOriginatedFrom(xidName) + "." + xidName + "." + xidValThis change is