mongo-c-driver 1.16.1
I'm pleased to announce version 1.16.1 of libbson and libmongoc,
the libraries constituting the MongoDB C Driver.
libbson
It is my pleasure to announce libbson 1.16.1.
Features:
Add bson_isspace, a safer isspace alternative.
libmongoc
It is my pleasure to announce the MongoDB C Driver 1.16.1.
Bug fixes:
Fix listed library dependency on mongoc_static target when building with libmongocrypt.
Replace a call of free to bson_free.
Vendor Sphinx basic theme and correctly list static files for docs.
Fix a compilation warning introduced in 1.16.0.
mongo-c-driver 1.16.0
I'm pleased to announce version 1.16.0 of libbson and libmongoc,
the libraries constituting the MongoDB C Driver.
libbson
It is my pleasure to announce libbson 1.16.0.
Bug fixes:
Fix crash if an empty BSON binary value is copied and then appended.
Fix out-of-bounds read when parsing JSON.
Fix out-of-bounds read when parsing base64.
libmongoc
It is my pleasure to announce the MongoDB C Driver 1.16.0.
Features:
Support Client-side Field Level Encryption.
Support ability to pass an index hint to update operations.
Add cmake export targets.
Bug fixes:
Fix a bug with Windows SSPI failing to authenticate with GSSAPI when using
pooled clients for certain operations.
Fix behavior for bulk writes that retry to keep track of the successful server.
Remove hard limit of 1024 characters for SRV response.
Fix racy crash when using client pool against a sharded cluster if a server is invalidated shortly before a new socket is opened against it.
Remove unnecessary library dependencies causing overlinking.
Ensure server proof has been validated during SCRAM conversation.
mongo-c-driver 1.15.3
I'm pleased to announce version 1.15.3 of libbson and libmongoc,
the libraries constituting the MongoDB C Driver.
libbson
It is my pleasure to announce libbson 1.15.3.
No changes since 1.15.2; release to keep pace with libmongoc's version.
libmongoc
It is my pleasure to announce the MongoDB C Driver 1.15.3.
Bug fixes:
* Fix a hang on macOS when connecting to a server over TLS
* Add zstd as a dependency when libmongoc static library is compiled with zstd support
* Fix compilation on AIX 6.1
mongo-c-driver 1.15.2
I'm pleased to announce version 1.15.2 of libbson and libmongoc,
the libraries constituting the MongoDB C Driver.
libbson
No changes since 1.15.1; release to keep pace with libmongoc's version.
libmongoc
Bug fixes:
Prevent mongoc_transaction_opts_set_max_commit_time_ms from applying to subsequent transactions that should be using the default.
Do not report the initial error if a retry for a change stream function (mongoc_collection_watch, mongoc_database_watch, or mongoc_client_watch) succeeds
mongo-c-driver 1.15.1
I'm pleased to announce version 1.15.1 of libbson and libmongoc,
the libraries constituting the MongoDB C Driver.
libbson
No change since 1.15.0; released to keep pace with libmongoc's version.
libmongoc
It is my pleasure to announce the MongoDB C Driver 1.15.1.
Bug fixes:
Fix change stream resume logic when no documents received
Reduce the required cmake version to build with zstd support
Minor fixes to mongos pinning logic
Do not resume a change stream on NonResumableChangeStreamError
mongo-c-driver 1.15.0
I'm pleased to announce version 1.15.0 of libbson and libmongoc,
the libraries constituting the MongoDB C Driver.
libbson
No change since 1.14.1; released to keep pace with libmongoc's version.
libmongoc
It is my pleasure to announce the MongoDB C Driver 1.15.0. This release adds
support for MongoDB 4.2 features.
Features:
Support for sharded transactions on MongoDB sharded clusters 4.2+.
Add convenient transaction runner (mongoc_client_session_with_transaction),
which accepts a callback and performs appropriate retry logic.
Add a new transaction option to specify maximum time to wait for a commit,
mongoc_transaction_opts_set_max_commit_time_ms.
Add URI option "retryReads=true" safely and automatically retries certain
read operations if the server is a MongoDB 3.6+. Note, this may require applications to adjust any custom retry logic to prevent inadvertently retrying for too long
Poll SRV records to mongos servers periodically.
Keep connections alive after a primary stepdown detected.
Standardizes URI options supported across all spec-compliant MongoDB drivers.
"retryWrites" URI option now defaults to true (requires crypto for session
support).
Send any aggregate with $out or $merge stage to a primary.
Add the ability to specify an aggregate pipeline as an update document.
Add a database aggregate helper, mongoc_database_aggregate.
Add option for change streams, "startAfter".
Add mongoc_change_stream_get_resume_token, which returns the resume token
which should be used to resume a change stream.
Add support for zstd compression.
Bug fixes:
Correctly report an error in mongoc_change_stream_next if the resume token
(_id) is not a document. Previously, an error was only reported if the
field was missing.
Fix mongoc_collection_update with MONGOC_UPDATE_MULTI_UPDATE,
mongoc_collection_remove, and mongoc_collection_delete when retryWrites
was enabled. They would fail previously.
Command options are now correctly taken into account when batching bulk
writes for OP_QUERY. It was possible to exceed the maximum document size
before.
Fix a crash if a multi-batch bulk write with OP_MSG errored on a batch.
mongo-c-driver 1.14.0
=====================
It is my pleasure to announce the MongoDB C Driver 1.14.0.
Features:
* Support for OpenSSL 1.1.1 and its implementation of TLS v1.3.
* New function mongoc_stream_should_retry.
* New accessor mongoc_server_description_last_update_time.
* New method mongoc_client_reset to be called after forking.
Bug fixes:
* OP_MSG with unacknowledged writes (write concern of w:0) would serialize
incorrectly on big-endian platforms, causing writes to use the default
write concern of w:1.
* mongoc_collection_update_many and mongoc_collection_delete_many would fail
with the URI option retryWrites=true.
* In a transaction, the driver now properly ignores the readConcern configured
on a client, database, or collection: only the mongoc_transaction_opt_t's
readConcern is used.
* Remove timestamp from uninstall scripts to permit reproducible build.
* Setting mongoc_ssl_opt_t.pem_file or ca_file to a bad file path caused a
hang with Darwin SSL.
* Fix the ENABLE_SASL cmake option:
* Remove unnecessary GSSAPI value. It was equivalent to specifying ENABLE_SASL=CYRUS.
* ENABLE_SASL=AUTO now correctly chooses SSPI on Windows instead of CYRUS.
* The client pool failed to set proper apm callbacks for clients created
via try_pop().
mongo-c-driver 1.13.1
=====================
It is my pleasure to announce the MongoDB C Driver 1.13.1.
Bug fixes:
* mongoc_collection_update_many and mongoc_collection_delete_many would fail
with the URI option retryWrites=true.
* Remove timestamp from uninstall scripts to permit reproducible build.
* Add missing header files to the release tarball to fix compilation when
configuring with ENABLE_SASL=GSSAPI.
* Separate libmongoc and libbson uninstall scripts so they do not overwrite
each other.
* Fix running make install with DESTDIR.
mongo-c-driver 1.13.0
=====================
It is my pleasure to announce the MongoDB C Driver 1.13.0.
Features:
* Report a new error code, MONGOC_ERROR_GRIDFS_CORRUPT, when a chunk larger
than chunkSize is detected. Before, the driver had crashed with an assert.
* Restructure of install directory. All mongoc headers are under mongoc/
and all bson headers are under bson/. The preferred way of including the
headers are mongoc/mongoc.h and bson/bson.h respectively.
Forwarding headers in the root are provided for backwards compatibility.
* The default CMake build type had been unspecified, now it is RelWithDebInfo.
* Support LibreSSL 2.7+.
Bug fixes:
* mongoc_collection_replace_one is now a correctly exported symbol.
* Fix multiple issues with readConcern and writeConcern inheritance.
* Fix rare crash with mongodb+srv URIs on Windows.
* mongoc_gridfs_create_file_from_stream ignored errors while writing chunks
to the server.
* The following functions should not have taken a "bypassDocumentValidation"
option in bson_t *opts, the option is now prohibited:
- mongoc_bulk_operation_insert_with_opts
- mongoc_bulk_operation_update_one_with_opts
- mongoc_bulk_operation_update_many_with_opts
- mongoc_bulk_operation_replace_one_with_opts
* The heartbeat-succeeded and heartbeat-failed events (part of SDAM
Monitoring) had uninitialized "duration" fields, they are now set correctly.
mongo-c-driver 1.12.0
=====================
It is my pleasure to announce the MongoDB C Driver 1.12.0.
Features:
* New function mongoc_client_session_in_transaction to check if a multi-
document transaction is started.
* New examples for change streams and transactions, improved guide for
migrating from mongoc_collection_count to mongoc_collection_count_documents
Bug fixes:
* Fix occasional crash in sharded queries
* Retry all retryable write concern errors
* mongoc_client_session_commit_transaction sets the correct error label when
the primary is unavailable
* mongoc_collection_find_with_opts had prohibited read preference "primary"
in a transaction
* mongoc_collection_aggregate had not inherited its mongoc_collection_t's
read preference; only an explicitly provided read preference was used.
* Allow unencoded delimiters in username/password if unambiguous
mongo-c-driver 1.11.0
=====================
It is my pleasure to announce the MongoDB C Driver 1.11.0. This release adds
support for MongoDB 4.0 features. It includes the following additions and
improvements:
* Multi-document transactions, see mongoc_client_session_start_transaction
* New function mongoc_error_has_label to check for specific error labels such
as "TransientTransactionError" or "UnknownTransactionCommitResult" in
error replies.
* New functions to subscribe to changes on an entire client or database:
- mongoc_client_watch
- mongoc_database_watch
* New option for change streams, "startAtOperationTime".
* mongoc_collection_count_with_opts is deprecated for two new functions:
- mongoc_collection_count_documents
- mongoc_collection_estimated_document_count
* Support for SCRAM-SHA-256 authentication, including support for non-ASCII
passwords using libicu is an optional dependency.
* Faster mongoc_database_get_collection_names_with_opts fetches only names,
not the entire collection metadata.
Additional changes not specific to MongoDB 4.0:
* All "destroy" functions such as mongoc_collection_destroy now ignore a NULL
argument.
* The driver now returns an error if you attempt to use "arrayFilters" in an
update with a MongoDB server older than 3.6.
* Update functions include a new "upsertedCount" field in the reply document.
* Replace MD5 with FNV-1a hash to generate ObjectIds (for FIPS compliance).
Bug fixes:
* Functions incorrectly marked with the "const" compiler attribute are now
marked as "pure", fixes build error when link-time optimization is enabled.
mongo-c-driver 1.10.3
=====================
No change since 1.10.2; released to keep pace with libbson's version.
mongo-c-driver 1.10.2
=====================
It is my pleasure to announce the MongoDB C Driver 1.10.2. This release fixes
the libbson and libmongoc installed library filenames and SONAMEs on Linux.
They had changed unintentionally with the switch to CMake in 1.10.0; they are
now consistent with 1.9.x and previous releases. Thanks to Roberto C. Sánchez
for the fix.
mongo-c-driver 1.10.1
=====================
It is my pleasure to announce the MongoDB C Driver 1.10.1. This release fixes
the following bugs introduced in version 1.10.0:
* Client sessions were not prohibited with unacknowledged write concern and
mongoc_bulk_operation_execute; now they are prohibited. Client sessions have
been prohibited with all other unacknowledged writes since 1.10.
* The "arrayFilters" update option, new in MongoDB 3.6 and supported since
libmongoc 1.9.0, was inadvertently prohibited by
mongoc_bulk_operation_update_one_with_opts and
mongoc_bulk_operation_update_many_with_opts in 1.10. The option is now
permitted again.
* The mongoc-stat tool for displaying shared counters was disabled on Linux
and not installed; it is now restored.
mongo-c-driver 1.10.0
=====================
It is my pleasure to announce MongoDB C Driver 1.10.0. This version drops
support for MongoDB 2.6 and adds the following features and bugfixes:
* libbson and libmongoc are now maintained in the mongo-c-driver repository,
although they are still built as separate libraries, and libbson can still
be used without libmongoc.
* Building libbson and libmongoc now requires CMake on all platforms. The
Autotools build scripts ("configure" and related scripts) have been deleted.
See the "installing" page for updated instructions, including the new
ENABLE_MONGOC option and changes to the ENABLE_BSON option.
* IPv6 is now fully supported and conforms to RFC-6555. If a hostname has both
IPv4 and IPv6 DNS records, the driver tries connecting with IPv6 first. If a
connection can't be established after 250ms then IPv4 is tried in parallel.
Whichever succeeds connection first cancels the other. The successful DNS
result is cached for 10 minutes.
* If CMake is configured with ENABLE_SSL=AUTO (the default), libmongoc now
uses native TLS libraries on Mac and Windows, and OpenSSL everywhere else.
Before, it would search for OpenSSL on all platforms and only use native
TLS on Mac and Windows as a fallback.
* The driver now handshakes SSL connections to multiple servers in a replica
set or sharded cluster in parallel, so long as it uses OpenSSL or Windows
SChannel. (SSL handshakes with Apple's Secure Transport are still serial.)
A larger receive buffer with SChannel increases performance over slow
connections.
* All functions that accept read concern now prohibit it, if MongoDB is too
old to support it (MongoDB 3.0).
* Client sessions are now prohibited with unacknowledged writes.
* mongoc_collection_find_and_modify_with_opts now prohibits write concern if
MongoDB is too old to support it (MongoDB 3.0).
* Other helper functions for commands that write, now prohibit write concern
if MongoDB is too old to support it (pre-3.4):
mongoc_client_read_write_command_with_opts
mongoc_client_write_command_with_opts
mongoc_collection_read_write_command_with_opts
mongoc_collection_write_command_with_opts
mongoc_database_read_write_command_with_opts
mongoc_database_write_command_with_opts
mongoc_collection_aggregate with $out
mongoc_collection_drop_index_with_opts
mongoc_collection_drop_with_opts
mongoc_collection_rename_with_opts
mongoc_database_drop_with_opts
Write concern behavior is unchanged for regular CRUD functions.
* Setting a negative writeConcern level of -2 or smaller, via the "opts"
parameter to functions that accept BSON options, is now prohibited. The
special "w" values -2 through -4 are only used internally. The deprecated
"w=-1" is still allowed, as a synonym for "w=0".
* The Kerberos URI option authMechanismProperties=CANONICALIZE_HOST_NAME:true
is now implemented with the Windows Kerberos provider, SSPI.
* This repository now includes GDB and LLDB customizations for pretty-printing
bson_t structs as JSON while debugging. See the "debugging" page.
* The internal preprocessor symbol HAVE_STRINGS_H has been renamed
BSON_HAVE_STRINGS_H. If you maintain a handwritten bson-config.h you must
rename this symbol.
* The following helper functions do not work with mongoc_client_session_t,
they are deprecated in favor of running MongoDB commands directly with a
function like mongoc_client_read_command_with_opts:
mongoc_client_get_server_status
mongoc_collection_stats
mongoc_collection_validate
* mongoc_cursor_is_alive is now deprecated for mongoc_cursor_more, which is
functionally equivalent.
- New change streams API functions were not marked extern "C"
- mongoc_collection_watch now accepts a pipeline argument as a BSON
array, in addition to accepting a BSON document with a "pipeline"
array field
- Crashes in several change stream error handling paths
- Commands could return false with an empty bson_error_t after a
replica set reconfig
- Network error messages omitted the command name when using OP_MSG
- Compatibility with Sphinx 1.7.0
- Ensure a change stream uses the proper session id while iterating
- Fix a rare crash in pooled mode when a replica set member was
disconnected
- Fix a session-management bug that could cause an authentication error
while connected to MongoDB 3.6+ and iterating a cursor
- Permit the $gleStats modifier with mongoc_collection_aggregate.
This version drops support for MongoDB 2.4 and adds support
for MongoDB 3.6 features:
- New struct mongoc_change_stream_t to watch a collection for changes.
- New struct mongoc_client_session_t represents a MongoDB 3.6 session,
which supports causal consistency: you are guaranteed to read your writes
and to perform monotonic reads, even when reading from secondaries or in
a sharded cluster.
- New functions that accept flexible options as a BSON document. These
accept a "sessionId" option and any future options. In addition, the
two new "update" functions accept the "arrayFilters" option that is new
in MongoDB 3.6:
- mongoc_collection_insert_one
- mongoc_collection_insert_many
- mongoc_collection_update_one
- mongoc_collection_update_many
- mongoc_collection_replace_one
- mongoc_collection_delete_one
- mongoc_collection_delete_many
- mongoc_client_command_with_opts
- mongoc_database_command_with_opts
- mongoc_collection_command_with_opts
- mongoc_client_find_databases_with_opts
- mongoc_client_get_database_names_with_opts
- mongoc_collection_create_bulk_operation_with_opts
- mongoc_collection_find_indexes_with_opts
- mongoc_database_find_collections_with_opts
- mongoc_database_get_collection_names_with_opts
- New URI option "retryWrites=true" safely and automatically retries certain
write operations if the server is a MongoDB 3.6 replica set or sharded
cluster.
- Support for MongoDB OP_MSG wire protocol.
Additional changes not specific to MongoDB 3.6:
- Support for mongodb+srv URIs to query DNS for SRV and TXT records that
configure the connection to MongoDB.
- Support LibreSSL with CMake build
- The "minPoolSize" URI option is deprecated: it's confusing and not useful.
Bug fixes:
- mongoc_bulk_operation_execute did not always initialize "reply".
- Fix C99 pedantic warnings.
- Remove option to bundle the Snappy compression library, it caused issues
for programs linking to libmongoc
- Fix pkg-config and CMake config file flags for programs that statically
link to libmongoc when libmongoc is statically linked to zLib
- The configure flag "--with-zlib=no" was ignored
- Fix crash in authentication when username is NULL
- Remove a syntax error in the configure script that affects some shells.
- The configure script respects --with-zlib=system and --with-snappy=system.
- The internal mongoc_server_description_t struct is properly reinitialized
after a network error.
- Fix the encoding of this NEWS file.
- The zLib and Snappy compression libraries are bundled if not
available.
Wire protocol compression is enabled on Windows.
- mongoc_collection_find_and_modify_with_opts now respects a
"writeConcern" field in the "extra" BSON document in its
mongoc_find_and_modify_opts_t.
- The command functions mongoc_client_read_write_command_with_opts,
mongoc_database_read_write_command_with_opts, and
mongoc_collection_read_write_command_with_opts now ignore the
"read_prefs" parameter.
- mongoc_collection_create_index and
mongoc_collection_create_index_with_opts
are both now deprecated. Use mongoc_database_write_command_with_opts
instead; a guide to creating an index using that function has been
added.
- Use select, not WSAPoll, on Windows.
- Always mark a server "Unknown" after a network error (besides a
timeout).
- mongoc_client_pool_t sends platform metadata to the server; before,
only a single mongoc_client_t did.
- New stream method mongoc_stream_timed_out.
- Wire version checks introduced in 1.8.0 will prevent the driver from
connecting to a future MongoDB server version if its wire protocol is
incompatible.
- New CMake option ENABLE_MAINTAINER_FLAGS.
- CMake build now installs .pc files for programs that link to
libmongoc using pkg-config.
- New CMake option ENABLE_STATIC can be ON, OFF, or AUTO (the default)
- Minimum required CMake version has been increased to 3.1.
- Support for wire compression.
- Support for snappy and zlib. MongoDB 3.4 only supports snappy,
while zlib support is expected in MongoDB 3.6.
- New functions: mongoc_uri_get_compressors &
mongoc_uri_set_compressors, to get and set compressor
configuration on mongoc_uri_t
- Added support for comma seperated "compressors" connection string
option (e.g. mongodb://localhost/?compressors=snappy,zlib)
- Added support for configuring zlib compression level in the
connection string (e.g.
mongodb://localhost/?compressors=zlib&zlibcompressionlevel=8)
- Now requires the use of CMake config files for libbson to build
libmongoc with CMake
- Added pkg-config support for libressl.
- New function mongoc_uri_set_auth_mechanism to update the
authentication mechanism of a mongoc_uri_t after it is created from
a string.
- New function mongoc_bulk_operation_insert_with_opts provides
immediate error checking.
- New function mongoc_uri_new_with_error provides a way to parse a
connection string, and retrieve the failure reason, if any.
- Support for MongoDB Connection String specification
- All connection string options are now represented by
MONGOC_URI_xxx macros
- Paths to Unix Domain Sockets must be url encoded
- Repeated options now issue warnings
- Special characters in username, password and other values must be
url encoded
- Unsupported connection string options now issue warnings
- Boolean values can now be represented as true/yes/y/t/1 and
false/no/n/f/0.
- Case is now preserved in Unix domain paths.
- New function mongoc_cursor_error_document provides access to
server's error reply if a query or command fails.
- New function mongoc_write_concern_is_default determines whether any
write concern options have been set, and
mongoc_read_concern_is_default checks if read concern options are set.
- mongoc_gridfs_find_one_with_opts optimized to use limit 1.
mongo-c-driver 1.6.3
- mongoc_client_pool_t did not apply all TLS options to pooled connections
- SNI wasn't provided when allow_invalid_hostname is set
mongo-c-driver 1.6.2
- This release further improves HP-UX compatibility, especially when building
with CMake, adds missing Windows SSPI files to the distribution tarball, and
fixes distribution issues we introduced when porting the documentation from
Mallard to Sphinx.
mongo-c-driver 1.6.1
- Correct the rules to parse localThresholdMS option from the MongoDB URI.
- Prevent crash in mongoc_cursor_destroy if "query" or "filter" are invalid.
- Include a file, mongoc-cluster-sspi.c, that had been omitted from the
release archive.
- Fix logic bugs in mongoc_bulk_operation_t validation code.
mongo-c-driver 1.6.0
- Enterprise authentication on Windows now uses the native GSSAPI library;
Cyrus SASL is no longer required for enterprise auth on Windows.
- BSON documents are more thoroughly validated before insert or update.
- New function mongoc_uri_set_mechanism_properties to replace all the
authMechanismProperties on an existing URI.
- mongoc_uri_get_mechanism_properties asserts its inputs are not NULL.
- For consistency with other MongoDB drivers, mongoc_collection_save is
deprecated in favor of mongoc_collection_insert or mongoc_collection_update.
- The driver is now built and continuously tested with MinGW-W64 on Windows.
- Experimental support for HPUX.
- The correct operation ids are now passed to Command Monitoring callbacks.
- Fix a crash if the driver couldn't connect to the server to create an index.
- The documentation is ported from Mallard XML to ReStructured Text, the
HTML documentation is restyled, and numerous man page syntax errors fixed.
- Getter functions for options in mongoc_find_and_modify_opts_t:
* mongoc_find_and_modify_opts_get_bypass_document_validation
* mongoc_find_and_modify_opts_get_fields
* mongoc_find_and_modify_opts_get_flags
* mongoc_find_and_modify_opts_get_max_time_ms
* mongoc_find_and_modify_opts_get_sort
* mongoc_find_and_modify_opts_get_update
- All public functions now have the __cdecl calling convention on Windows.
mongo-c-driver 1.5.5
- This release fixes bugs parsing the localThresholdMS option from the MongoDB
URI, and a crash in mongoc_cursor_destroy if "query" or "filter" are
invalid.
mongo-c-driver 1.5.4
- This release fixes an error in cursor iteration when a readConcern is set.
Changes since 1.5.0:
- allow mixed $ and non-$ query ops.
- Missing exports of mongoc_gridfs_file_set_*() functions.
- update define constants for "find" opts to be unique.
- Windows CA stores should be opened with read-only flag.
- Fix SEGFAULT with performance counters on NUMA (thanks to Jonathan Wang).
- Prevent rare assertion error in mongoc_cluster_stream_for_server.
- Improve error messages from auth failure.
- Escape quotes when appending CFLAGS to handshake metadata.
- Fix OpenSSL header lookups in non-default paths.
- Fix build failure with LibreSSL.
New features and bug fixes:
- MongoDB 3.4 Support
- New URI and read preference option, "maxStalenessSeconds"
- Set MongoDB client handshake data with mongoc_client_set_appname or
mongoc_client_pool_set_appname.
- writeConcern and readConcern enhancements.
- Collation allows users to specify language-specific rules for string
comparison when sorting documents.
- mongoc_collection_count_with_opts uses the collection's read
preference if none is passed in
- Improved TLS support
- Fixed LibreSSL (libssl) support
- Added LibreSSL (libtls) support
- Fixed Secure Channel build on VS 2010
- OpenSSL now supports SNI (all others already do)
- Additional features for Application Performance Monitoring
- New functions accept flexible options as a BSON document.
- mongoc_collection_find is now deprecated in favor of
mongoc_collection_find_with_opts.
- New helper function to include read concern in one of the above
function's options parameter: mongoc_read_concern_append.
- mongoc_client_command no longer applies the client's read preference
and read concern by default. Same change for mongoc_database_command
and mongoc_collection_command.
- mongoc_collection_count_with_opts now applies the collection's read
preference if no read preference is provided
- mongoc_collection_create_index and mongoc_collection_drop_index now
apply the collection's write concern.
- mongoc_collection_create_index_with_opts now applies the collection's
write concern if none is specified in "opts"
- connectTimeoutMS timer now begins after DNS resolution, and resets for
each interface attempted (e.g., if the driver first tries IPv6, then
IPv4).
- New error code MONGOC_ERROR_DUPLICATE_KEY.
- mongoc_collection_find no longer treats the "filter" key specially in
queries - querying for a document with a key named "filter" is the
same now as any other key.
- The server description parameter to the following functions is
"const":
- mongoc_server_description_host
- mongoc_server_description_id
- mongoc_server_description_ismaster
- mongoc_server_description_round_trip_time
- mongoc_server_description_type
- Exported symbols are no longer declared in seperate export files.
- mongoc no longer crashes when multi roundtrip bulk operation fails.
- Added support for the new readConcernLevel "linearizable".
- Clients now check for misformatted "readPreferenceTags" in URI.
- New CMake option ENABLE_TRACING allows debug output, which before had
only been available with "configure --enable-tracing".
- Bugfix: "PossiblePrimary"-type replicas could be selected for reads
- Bugfixes: The random number generator used to select servers is now
properly seeded, and secondary queries are now properly distributed
according to localThresholdMS, not just to the lowest-latency secondary.
The latency estimate is reset after a connection error.
- Fix crashes in mongoc_topology_invalidate_server and
mongoc_client_kill_cursor.
- mongoc_collection_insert, mongoc_collection_update,
mongoc_collection_remove consistently use domain MONGOC_ERROR_BSON,
code MONGOC_ERROR_BSON_INVALID if passed oversized BSON, and
MONGOC_ERROR_COLLECTION for other errors. mongoc_bulk_operation_execute
continues to use MONGOC_ERROR_COMMAND for all errors.
- If mongoc_client_pool_t fails to start its scanner thread in the
background, it logs and aborts instead of silently continuing, then
failing to connect.
- The driver now updates its view of the whole topology with information
from each new connection handshake.
- Improved error reporting when the driver fails to reach the server,
and correctly distinguish "connection error" and "connection timeout".
Deprecations:
- mongoc_collection_find is deprecated for
mongoc_collection_find_with_opts.
Removed configure flags:
- --enable-experimental has been removed. All previously experimental
features are now always on.
- The configure option "--enable-hardening" had had no effect. It is
removed in favor of system-wide compiler configuration.
mongo-c-driver 1.4.2
- Fixes bugs in "minPoolSize" logic, see CDRIVER-1558 for details.
mongo-c-driver 1.4.1
- mongoc_client_get_server_descriptions could return a list
including NULLs
- Tailable cursors on MongoDB 3.2 only worked with
MONGOC_QUERY_AWAIT_DATA
- Spurious warnings with MONGOC_DISABLE_SHM
- The driver can now use the native TLS and crypto functions
included in Mac OS X and Windows.
- The driver implements the MongoDB Command Monitoring Spec.
- New functions mongoc_client_set_error_api and
mongoc_client_pool_set_error_api
allow applications to distinguish client and server errors.
- Unacknowledged writes (writes whose mongoc_write_concern_t "w"
value is zero) now reply with an empty document instead of one
with nInserted: 0, nUpdated: 0, and so on.
- Public API For Higher-Level Drivers
- New connection string option "localThresholdMS".
- zSeries, POWER8, and ARM 64-bit platform support.
- Performance enhancements, reduce allocation and copying in
command code.
- All man page names now begin with "mongoc_" to avoid install
conflicts.
- New function mongoc_gridfs_file_set_id.
1.3.5
This release fixes a crash in mongoc_cleanup when an allocator
had been set with bson_mem_set_vtable, and introduces
a configure option MONGOC_NO_AUTOMATIC_GLOBALS which prevents
code built with GCC from automatically calling mongoc_init and
mongoc_cleanup when your code does not.
1.3.4
This release fixes a security vulnerability: when a mongoc_client_t
uses SSL and is disconnected, it failed to re-verify the server
certificate after reconnecting. This flaw affects
single clients, not pooled ones.
1.3.3
- Fix a bug where a slightly-oversized bulk write operation was not split
into batches; instead, it was sent whole to the server, which rejected it.
1.3.2
- A socket is properly discarded after a network error from a command.
- mongoc_database_get_collection now copies the database's read preferences,
read concern, and write concern, instead of copying the client's.
- mongoc_cursor_t's private struct now allows a negative limit.
1.3.1
- mongoc_client_get_gridfs now copies the client's read preferences, read
concern, and write concern to the newly created mongoc_gridfs_t. Before
this fix, GridFS operations were always executed with the default config:
data was read from the primary, with the read concern level "local", and
written with write concern "acknowledged". Now, if you have configured
any of these options on the mongoc_client_t, they are respected by
the mongoc_gridfs_t.
- CMakeLists.txt now includes and installs the pkg-config files.
pkgsrc changes:
- Release tarballs cannot build man pages any more, use pre-built
ones instead.
Changes since 1.2.1:
- If the driver is compiled without SSL support but a URI with "ssl=true"
is passed to mongoc_client_new, mongoc_client_new_from_uri, or
mongoc_client_pool_new, the function logs an error and returns NULL.
Before, the driver would attempt a non-SSL connection.
- mongoc_collection_find_and_modify will now apply the mongoc_collection_t's
write_concern_t when talking to MongoDB 3.2.
- Support for MongoDB 3.2's "readConcern" feature for queries, counts,
and aggregations. The option "readConcernLevel" is now accepted in
the MongoDB URI.
- Support for MongoDB 3.2's "bypassDocumentValidation" option for writes.
- New struct mongoc_bulk_write_flags_t and related functions.
- New struct mongoc_find_and_modify_opts_t and related functions.
- New functions to copy database and collection handles.
- Support for MongoDB 3.2 wire protocol: use commands in place of OP_QUERY,
OP_GETMORE, and OP_KILLCURSORS messages.
- To explain a query plan with MongoDB 3.2, you must now call the "explain"
command, instead of including the "$explain" key in
a mongoc_collection_find query. See the mongoc_collection_find
documentation page for details.
- Configurable wait time on tailable cursors with MongoDB 3.2.
- Use electionId to detect a stale replica set primary during
a network split.
- Disconnect from replica set members whose "me" field does not match
the connection address.
- The client side matching feature, mongoc_matcher_t and related functions,
are deprecated and scheduled for removal in version 2.0.
- New CMake options ENABLE_SSL, ENABLE_SASL, ENABLE_TESTS, and
ENABLE_EXAMPLES.
- Use constant-time comparison when verifying credentials.
- Combine environment's CFLAGS with configure options when building.
- Improved man page output and "whatis" entries.
Problems found with existing distfiles:
distfiles/D6.data.ros.gz
distfiles/cstore0.2.tar.gz
distfiles/data4.tar.gz
distfiles/sphinx-2.2.7-release.tar.gz
No changes made to the cstore or mariadb55-client distinfo files.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
mongo-c-driver 1.2.0
- Much improved reporting of network errors, unavailable servers, and
authentication failure
- Destroying an exhaust cursor must close its socket
- Various bugs in server reconnection logic
- mongoc_collection_aggregate returned invalid cursor after failure
- Wrong error message after failed network write on Sparc
- Missing JSON test files in release tarball
- Enable runtime asserts in release build.
- mongoc_client_kill_cursor is now deprecated and will be removed
in version 2.0.
mongo-c-driver 1.1.11
- Undetected network errors when sending messages to the server
- Off-by-one error in mongoc_gridfs_file_seek with mode SEEK_END
- Memory leak parsing a URI that contains an invalid option
- Occasional crash reconnecting to replica set.
- Queries sent to recovering replica set members.
- Memory leak when calling ismaster on replica set members.
1.1.9
* This release fixes a common crash in 1.1.8, which itself was introduced
while fixing a rare crash in 1.1.7
1.1.8
* Crash freeing client after a replica set auth error.
* Compile error strict C89 mode.
mongo-c-driver 1.1.7
- Thread-safe use of Cyrus SASL library.
- Experimental support for building with CMake and SASL.
- Faster reconnection to replica set with some hosts down.
- Crash iterating a cursor after reconnecting to a replica set.
- Unchecked errors decoding invalid UTF-8 in MongoDB URIs.
- Fix error reporting from mongoc_client_get_database_names.
mongo-c-driver 1.1.6
- mongoc_bulk_operation_execute now coalesces consecutive update operations
into a single message to a MongoDB 2.6+ server, yielding huge performance
gains. Same for remove operations. (Inserts were always coalesced.)
- Large numbers of insert operations are now properly batched according
to number of documents and total data size.
- GSSAPI / Kerberos auth now works.
- The driver no longer tries three times in vain to reconnect to a primary,
so socketTimeoutMS and connectTimeoutMS now behave closer to what you
expect for replica sets with down members. A full fix awaits 1.2.0.
- mongoc_matcher_t now supports basic subdocument and array matching
mongo-c-driver 1.1.5
- The fsync and j write concern flags now imply acknowledged writes
- Prevent using fsync or j with conflicting w=0 write concern
- Obey socket timeout consistently in TLS/SSL mode
- Return an error promptly after a network hangup in TLS mode
- Prevent crash using SSL in FIPS mode
- Always return NULL from mongoc_database_get_collection_names on error
- Fix version check for GCC 5 and future versions of Clang
- Fix warnings and errors building on various platforms
- Add configure flag to enable/disable shared memory performance counters
- Minor docs improvements and fix links from C Driver docs to Libbson docs
- Fixed client pool concurrency issues
- Fixed some scenarios where replica sets would fail to reconnect on
primary step down.
- Improved write concern handling
- Validate port number in URI
- Various other fixes
mongo-c-driver 1.1.2
====================
* Process connectTimeoutMS cast insensitively
* Addition of missing trace macros
* Improvement of internal error messages
* Fix a segfault in OpenSSL cleanup routines
* Fix for IPv66 support for replica sets
* Coalesce small vectorized TLS writes
* MinGW fixups
* Fix for a memory leak in get_database_names()
* Fixes for patching write concern through the bulk api
* Fix to normalize hostnames in uri parsing
* Fix for managing connections in the client pool
* Various other fixes
mongo-c-driver 1.1.0
====================
* ABI versioning for 1.1 versus 1.0 symbols
* additional geo index options
* authMechanismProperties in URI
* fixes for OS X Yosemite
* removal of replica set member limit
* SCRAM-SHA-1 SASL mechanism
* updated dependency on libbson 1.1 abi
* validation for bulk insert
* various memory leak fixes
* Fixes to documentation typos
* "How to Ask For Help" in the README
* Removed dependency on sasl for PLAIN authentication
* Use provided username, if available, for X.509 auth
* Fixed WriteConcern error reporting for some writes
* Check for closed sockets before attempting RPCs
* Fixes for gridfs file seek
* Fixes for mongoc_cursor_clone()
* Fixes for unix domain socket support
* Fixes for polling on win32
* Improved warnings on failure to connect
* Addition of wired tiger options
* Fixes for examples
Additions to the ABI include:
* support for extra option in count
- mongoc_collection_count_with_opts
* additional index options
- mongoc_index_opt_geo_get_default
- mongoc_index_opt_geo_init
- mongoc_index_opt_wt_get_default
- mongoc_index_opt_wt_init
* rand interface to seed and verify the strong random number generation needed
by some auth mechanisms
- mongoc_rand_seed
- mongoc_rand_add
- mongoc_rand_status
* URI additions to support more complicated auth credentials
- mongoc_uri_get_credentials
- mongoc_uri_get_mechanism_properties
* Support for cursor returning metadata crud operations
- mongoc_client_find_databases
- mongoc_collection_find_indexes
- mongoc_database_find_collections
* Kill cursor supportp
- mongoc_client_kill_cursor
* Various get/setters on cursor
- mongoc_cursor_get_batch_size
- mongoc_cursor_get_id
- mongoc_cursor_set_batch_size
* More socket/stream options
- mongoc_socket_check_closed
- mongoc_socket_inet_ntop
- mongoc_stream_check_closed
- mongoc_stream_write
- A variety of fixes for read preference based node selection
- Avoided inclusion of getLastError in 2.6 writeConcern
- Correct handling of pass through params for collection_aggregate
- Improved error reporting in socket connect
- Public MONGOC_DEFAULT_CONNECTTIMEOUTMS
A new libmongoc-priv.so library is installed that does not have symbols
hidden. You can access private headers via the -private.h variants. This
means you will need to recompile your project every time the library is
changed (if you use those private headers, as they are subject to change).
For other minor changes, see commits made since 0.98.0:
https://github.com/mongodb/mongo-c-driver/compare/0.98.0...1.0.0
Changes in 0.98.0:
- This release is primarily a bugfix release and stabilization effort as we
approach 1.0 of the MongoDB C driver.
- This release requires 0.98.0 of Libbson for improvements to the memory
management system. You can now setup custom memory allocators at the
start of the process.
Changes in 0.96.4:
- build/mci.sh script for automatically building Debian packages, RPMs,
and Solaris packaging based on the host operating system.
- Various libbson improvements, now depending on 0.8.4.
- Alignment fixes for Solaris Studio C compiler via libbson.
- Addition of mongoc_gridfs_remove_by_filename() for removing a file from
gridfs by filename.
- client command functions can now take a fully qualified namespace.
- collections can now support names that indicate a command namespace.
- Commands will no longer fail if they do not contain an "ok" field.
- OP_QUERY will now set the slaveOk bit in the wire protocol if
readPreferences are set to non-PRIMARY.
- Various documentation and build fixes.
Changes in 0.96.2
-----------------
* Ensure batchSize is used in cursor GETMORE operations with `aggregate`.
* Ensure enough buffer space is allocated for incoming RPC when buffering
from a stream.
* Require libbson 0.8.2 for more robust `bson_next_power_of_two()` when
using `size_t` and BCON compilation fix with C++.
* Handle cursor id's that are not 64-bit values in response from
`aggregate` command.
* Handle upsert on MongoDB < 2.6 when _id does not contain an `ObjectId`.
* Use 100 for default batchSize in `aggregate` command.
Changes in 0.96.0
-----------------
This release includes much new documentation, which can be found at
http://docs.mongodb.org/ecosystem/drivers/c/.
Additionally, this release improves support for various exotic systems.
Solaris 10 is supported much better on SPARC and x86_64 based systems.
Some workarounds for mixed-mode sharded-clusters have been added to improve
resiliency when rolling upgrades are performed.
Build improvements have been added to help us detect SASL and SSL
implementations on platforms that do not support pkg-config. This should
simplify building for some of you.
We've added some more logging to SASL authentication to help debug
authentication failures.
A bug causing an abort() when SSL is used and a server is down has been fixed.
We've renamed various _delete() functions to _remove() to provide consistency
with other MongoDB drivers.
You can now specify SSL options for client pools.
-D_REENTRANT is always defined now on Solaris to help with errno detection.
This may not have been done before if using a non-GCC platform with pthreads.
A bug was fixed where timeouts could have been 1000x longer than expected
due to failure to convert from microseconds to milliseconds.
A bug was fixed with authentication in sharded cluster and replica set
scenarios.