#+STARTUP: indent showall -*- org -*- * 0.1.8 - <2014-05-22 Thu> ** Feature: Connection recovery cache This new feature makes the replica set support easier to use, and more robust. New functions include: `mongo_sync_conn_recovery_cache_new`, `mongo_sync_conn_recovery_cache_free`, `mongo_sync_conn_recovery_cache_discard`, `mongo_sync_conn_recovery_cache_seed_add`, and `mongo_sync_connect_recovery_cache`. ** New function: mongo_sync_cmd_get_last_error_full The new `mongo_sync_cmd_get_last_error_full` function can be used to retrieve the last server-side error as a full BSON object, not just the textual error message. ** New function: mongo_sync_conn_get_last_error Returns the last cached error message. ** Portability: Test suite improvements The test suite was improved to work properly on even more platforms. ** Bugfix: Support reconnecting to Unix domain sockets When a replica-set is set up using unix domain sockets, reconnecting failed. This has been corrected in this version. ** Bugfix: Fix random reconnect failures When reconnecting, only close the old connection if it differs from the new one. ** Bugfix: Memory leak in an error-case When sending a packet to MongoDB, while enforcing being connected to a master node, if ensuring that connection failed, memory was leaked. The hole has been plugged. * 0.1.7.1 - <2014-03-12 Wed> ** Portability: Support HP-UX Compatibility code was added to make libmongo-client portable to HP-UX. ** Portability: prove made optional On platforms where the `prove' utility is not readily available, a custom test runner can be used by setting the PROVE environment variable when running `make check'. ** Bugfix: Safe-mode robustness improvement When safe mode is turned on, the code now verifies not only that getLastError() doesn't return an error, but also verifies that the command succeeds, too. * 0.1.7 - <2013-12-10 Tue> ** Feature: Automatic re-authentication This release adds support for automatically re-authenticating when reconnecting, by storing the credentials used for the last authentication in a safe, memory-locked area. ** New function: mongo_sync_cmd_user_add_with_roles() A new function was added to create users with their roles already set at the same time. ** Bugfix: Enable subdir-objects for automake Since we have sources that reside in a subdirectory, to avoid conflicts and a lot of automake warnings, enable the subdir-objects automake option. * 0.1.6.3 - <2013-08-27 Tue> Another bugfix release with a couple of important bugfixes, and a few minor improvements here and there. ** Improvement: configure.ac updated to modern autotools The configure.ac script was updated to not use obsolete macros, and to work with automake 1.13+ (where the aforementioned macros were removed). ** Bugfix: Fix chunked GridFS file retrieval When retrieving files via the chunked GridFS API, order the chunks by their number, so reassembling them will succeed. ** Bugfix: Stop crashing in case verification fails When safe-mode is enabled, but getLastError() fails, the library crashed due to an uninitialised pointer. This has been fixed in this release. * 0.1.6.2 - <2012-12-21 Fri> Another bugfix release with mostly minor improvements and documentation updates. ** Feature: Support for the Binary subtype in GridFS The GridFS support in the library only supported the "Generic" subtype until now, but with this release, the (obsolete) "Binary" subtype is supported aswell. ** Bugfix: Plugged a memory leak in the GridFS code The GridFS code (the chunked file constructor, in particular) leaked the generated ObjectId. This has been corrected. ** Documentation: New tutorials New tutorials were written for showing how to handle indexes, and how to run custom commands. * 0.1.6.1 - <2012-10-14 Sun> This is a quick bugfix release, that restores ABI compatibility with versions prior to 0.1.6, and cleans up a few other minor issues. * 0.1.6 - <2012-10-14 Sun> With this release, thanks to Conrad Hoffmann , it is now possible to connect to mongodb via unix sockets. See the documentation and the updated mongo-dump example for details. * 0.1.5 - <2012-04-13 Fri> This is a bugfix release, without any new functionality. It is expected that this will be the last release before a complete overhaul of the library. ** Bugfix: Restore glib 2.12 compatibility The examples used features not available in glib 2.12, they were changed to not do that, and work with this old version too. ** Bugfix: Do not accept invalid index specifications When creating an index, the library now bails out early with an error in case the index specification is not acceptable. ** Bugfix: Fix glib sanity check when glib is on a non-standard path In case glib was installed to a path that is not on the compiler's default search path, the sanity check at configure time failed. This has been corrected. ** Bugfix: bson_cursor_find() & co. must match the whole key Due to a silly matching logic in bson_cursor_find(), and anything that built on it (bson_find() included) was able to match keys of which the sought name was a prefix of. This is now fixed, and the find functions will correctly match the whole key. ** Bugfix: Fixed OID generation on 64-bit big-endian machines Due to a rounding error, OID generation on certain 64-bit big-endian platforms resulted in the timestamp part always being zeroed out, which made OIDs generated on such platforms useless. The rounding error was eliminated. * 0.1.4 - <2011-08-27 Sat> This release is a minor update, with neither new functionality, nor any bugfixes, except in the packaging. It does come with slightly more documentation, however. * 0.1.3 - <2011-07-19 Tue> ** New feature: GridFS support. This version introduces a set of GridFS APIs, to ease working with GridFS, be that retrieving files chunk by chunk, listing and removing files, or offering a file-like streaming API. ** New function: mongo_sync_cmd_create() A new helper function was introduced to aid us in creating capped and pre-allocated collections. ** New function: mongo_sync_cmd_exists() Another new helper function to aid in retrieving information about a collection - whether it exists, and if so, with what parameters. ** New function: mongo_util_oid_as_string() When one needs to print the value of an ObjectId in human-readable hexadecimal format, this new function is the one to turn to. ** New index options: background & sparse. It is now possible to create sparse indexes, and create them in the background, using two new option flags: MONGO_INDEX_BACKGROUND and MONGO_INDEX_SPARSE. * 0.1.2 - <2011-07-01 Fri> ** Bugfix: mongo_packet_recv() waits for all data. Previously, mongo_packet_recv() did not wait for all data to arrive, and returned whatever already arrived at the time of reading. This has been corrected, mongo_packet_recv() correctly blocks now. ** Implemented support for passive secondaries. Support was added for passive secondaries, they're now automatically discovered too. ** New feature: Index handling functions Implemented some helper functions to create and delete indexes. ** New function: bson_cursor_find() Combining the powers of bson_find() and bson_cursor_find_next(), this new function can find a key anywhere in a BSON object, yet, maintains the ability to continue a previous scan. ** New function: mongo_connection_set_timeout() On systems that support it (most modern systems should), sets a timeout for send and receive operations. Setting the timeout to zero clears the timeout, and these calls will block forever. The timeout is not preserved accross reconnects, if using the Sync API, however. ** Removed dependency on OpenSSL Instead of using OpenSSL's MD5 functions, use the checksum capabilities of glib 2.16 and newer. This halves the dependencies of the library! * 0.1.1 - <2011-06-16 Thu> ** Cursor-based query iterator API The new cursor-based query iterator API makes it possible to grab the results of a mongo_sync_cmd_query(), and conveniently iterate over the results, hiding the get_more() calls underneath. The implementation is clever enough to only query the database when it needs to, and when it does, query in bulk (asking for the same amount of documents that the last query returned). Thanks to Federico Rodriguez for the suggestion. ** New function: bson_validate_key() With this new function, one can validate BSON keys: whether they can contain dots (allowed when using dot-notation, forbidden otherwise), or whether they start with a '$' sign. It is up to the application developer to decide when to validate a key, and what restrictions make sense in the given context. The function does NOT do UTF-8 validation, that is completely left up to the application developer. ** New function: bson_cursor_find_next() When we know that key G always comes after key A, but we do not care how far apart they may be, and we do not want to use a separate cursor (due to, for example, performance reasons), this new function can help: unlike bson_find(), this will start scanning from the current cursor position. ** New function: bson_stream_doc_size() A little helper function to help determine the size of a BSON document when it's only available as a bytestream. This is mostly for use with bson_new_from_data(). ** Symbol versioning The symbols of the library can now be versioned, if configured with the --with-versioned-symbols configure flag (not enabled by default). * 0.1.0 - <2011-05-25 Wed> ** Shared library The configure script now defaults to enabling shared library building by default (along with a static library). ** Bug fixes The pkg-config file was setting an incorrect include directory in it's Cflags. This is now fixed. ** C++ Compatibility The public headers are now guarded by extern "C" {} wrappers, so that they can be included in C++ projects. ** Performance enhancements A minor performance issue was corrected in the BSON code, that had the possibility of forcing unneccessary memory allocations. The library now allocates the proper amount of memory at the soonest time possible, so it doesn't have to grow it later on unnecessarily. Anoter performance issue was corrected in the BSON library: bson_find() was comparing key names in BSON objects with the sought for key using strcmp(), which was unacceptably slow when dealing with BSON objects that have a lot of keys. We now use memcmp(), which means we don't have to traverse the sought for key all the time. * 0.0.2 - <2011-05-07 Sat> ** Replica set seeding support It is now possible to add seeds to a connection, so that the library can try connecting to those in case automatic discovery fails (or if the seeds are hidden). ** Failover redesign Instead of preemptively pinging & checking for a master before each and every command, the library does so only upon errors. This way, when everything's working as expected, there is no extra overhead. Yet, if things go wrong, failover will still work. By design, automatic failover only occurs when an error is detected during a write operation. When an error occurs during read, it will be propagated back to the application. Automatic failover is disabled by default, and can be turned on via the mongo_sync_conn_set_auto_reconnect() function. ** safe-mode support With safe mode enabled, extra care will be taken to ensure that data gets to the server, and that the library does everything within its power to maintain a connection. This means that after insert and update operations, the library will issue a getLastError command, and only return successfully if that command did not signal an error. Safe-mode also enables the previously default preemptive connection checks (along with the post-mortem failover). Safe-mode is off by default. * 0.0.1 - <2011-04-10 Sun> Initial public release.