GODRIVER-2702 Update bsoncore value string to preserve timestamp type #1150
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.
GODRIVER-2702
Summary
Update the "bsoncore.Value#String" method to preserve timestamp int/uint type during string conversion. This method is intended to express BSON as extended JSON and converting the timestamp (I,U) values is in antithesis to specifications.
Background & Motivation
The "CommandStartedMessage" for command logging and monitoring has a field called "command" which is the "relaxed extJSON representation of the command." To accomplish this in the Go Driver, we use the "bsoncore.Value#String" method to convert
cmdCopy
in the operation executor to a string before logging. However, "bsoncore.Value#String" does not preserve timestamp types and so decoding the resulting string will result in the following error:This use-case arises with the addition of the "$$matchAsDocument" and "$$matchAsRoot" operators to the driver test runners, here.