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.