fix(GRAPHQL): fix duplicate xid error for multiple xid fields. #7546
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