-
Notifications
You must be signed in to change notification settings - Fork 455
CDRIVER-4363 add nsInfo
builder
#1584
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
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
This is an unmodified copy
Intended to be used to construct the `nsInfo` payload for the upcoming `bulkWrite` command
eramongodb
reviewed
Apr 26, 2024
eramongodb
requested changes
Apr 26, 2024
This enables keeping an unmodified copy of the `uthash.h` file.
kkloberdanz
approved these changes
Apr 26, 2024
To include `uthash-2.3.0` in the include path of `#include <uthash-2.3.0/uthash.h>`. This may clarify the expected header location for readers.
kevinAlbs
commented
Apr 26, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the suggestions.
utlist.h
has also been updated to 2.3.0.
Patch build to verify: https://spruce.mongodb.com/version/662bc956c099380007552450
eramongodb
approved these changes
Apr 26, 2024
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.
Summary
This PR adds a private component to build the
nsInfo
payload for CDRIVER-4363. No publicly visible changes are expected.mcd_nsinfo_t
to build thensInfo
payload in thebulkWrite
command.Background & Motivation
The
mcd_nsinfo_t
is intended for upcoming support of thebulkWrite
command. Each operation in abulkWrite
references an int32 index into an array of unique namespaces:The syntax of the
bulkWrite
command is further described in Scope: Server improved bulk write command.Each operation can refer to a different namespace. There can be up to
maxWriteBatchSize
operations in one command. The server currently definesmaxWriteBatchSize
in the response to thehello
command as 100,000.My initial implementation stored a map of namespace to int32 in a
bson_t
and did linear look-up. This resulted in an O(n^2) algorithm which took very long to execute for a large number of namespaces (I stopped waiting after several minutes).A hash table with faster look-up seemed needed. uthash was chosen for simplicity (small header-only library) and consistency with other dependencies used (utlist.h is already copied).