# Change history for the MongoDB Perl driver:

v0.708.3.0 2015-07-14 15:42:16-04:00 America/New_York

  [Bug fixes]

  - PERL-543 fix serialization of undef in tied hashes

  - PERL-553 fix duplicate _id bug with Tie::IxHash and array reference
    documents with an existing _id

  - Fix BSON tests on Perl with long doubled enabled

v0.708.2.0 2015-06-05 16:39:00-04:00 America/New_York

  [Bug fixes]

  - PERL-536 fix GridFS to stop throwing an error when a known empty file has
    no chunks; errors will still be thrown if a non-empty file has no chunks.

  - PERL-541 fixed remove() to respect MongoClient write concern

  [Documentation]

  - PERL-525 updated legacy author emails in docs and metadata

v0.708.1.0 2015-04-29 16:51:52-04:00 America/New_York

  [Bug fixes]

  - PERL-479 retrieving a GridFS file now throws an error if no chunks exist
    instead of returning an empty string

  [Removals]

  - PERL-496 The $MongoDB::BSON::use_boolean never worked; BSON boolean values
    were always deserialized as boolean.pm objects.  Rather than
    "fix" this and break people's code, the option has been removed
    and documented as such.

v0.708.0.0 2015-01-20 16:57:11-05:00 America/New_York

  [Additions]

  - Added 'get_namespace' method (and 'ns' alias) to MongoDB::MongoClient
    for getting a collection directly without an intermediate database object.

  - Added 'db' and 'coll' aliases for 'get_database' and 'get_collection'

  [Bug fixes]

  - PERL-489 references to scalars with both number and string slots internally
    would crash on BSON encoding, rather than encode the string part as a
    binary.

  [Diagnostics]

  - Added parenthetical note to "can't get db response" errors to disambiguate
    where they occur.

v0.707.2.0 2014-12-22 05:35:31-05:00 America/New_York

  [Bug fixes]

  - PERL-476 fixed getting lists of collections and indices for changes in
    MongoDB 2.8-rc3 and later.

v0.707.1.0 2014-12-10 12:50:45-05:00 America/New_York

  [Bug fixes]

  - PERL-465 allowed arbitrary options on index creation

  - Fixed t/database.t for change in error message for missing commands

  - Fixed undef warning from get_indexes on older MongoDB versions

  [Prerequisites]

  - Removed Data::Types as a test dependency as it was barely used
    and not necessary

v0.707.0.0 2014-11-12 15:04:46-05:00 America/New_York

  [Additions]

  - Supports MongoDB 2.8-RC0; in addition to prior feature support, this release
    fixes tests that were broken against non-default storage engines

  [Bug fixes]

  - PERL-454 suppress warnings storing datetimes at the epoch

v0.706.0.0 2014-10-28 11:30:42-04:00 America/New_York

  [*** Deprecations ***]

  - PERL-425 the 'drop_dups' indexing option is deprecated because it is
    ignored as of server version 2.7.5

  [Additions]

  - PERL-408 added support for SCRAM-SHA-1 (for MongoDB 2.7.8+)

  [Bug fixes]

  - PERL-409 fixed compilation on MSWin32 using the MinGW compiler

  - Fixed compilation errors on MSWin32 using the MSVC compiler

  - Fixed construction of Makefile LIBS argument for some platforms

  - Fixed parallel scan and explain tests for changes in the MongoDB 2.7.x
    development series

  [Diagnostics]

  - Passing the "ssl" parameter to MongoDB::MongoClient will now warn if SSL
    support is not available.

  [Documentation]

  - Revised "run_command" documentation to explain that array references or
    Tie::IxHash should be used.

  [Prerequisites]

  - Added dependency on Authen::SCRAM::Client 0.003

  - Removed (test) dependency on File::Slurp

  - Minimum required versions of configuration dependencies Path::Tiny and
    Config::AutoConf are now enforced in the code, not just specified in
    META.json

  [~ Internal changes ~]

  - PERL-433 uses the listCollections command if available (MongoDB 2.7.8+)

  - PERL-434 uses the listIndexes command if available (MongoDB 2.7.8+)

  - PERL-436 bumped supported maxWireProtocolVersion to 3 (MongoDB 2.7.8+)

v0.705.0.0 2014-09-09 10:04:59-04:00 America/New_York

  [Additions]

  - PERL-406 allow count() to use hints

  [Prerequisites]

  - Clarified that Test::Deep 0.111 is required rather than any version

v0.704.5.0 2014-08-19 14:17:00-04:00 America/New_York

  [Bug fixes]

  - PERL-407 fixed request_id race condition under threads

  - PERL-410 dies on BSON encoding/decoding if invalid UTF-8 is detected

v0.704.4.0 2014-07-30 05:43:11-04:00 America/New_York

  [Testing]

  - Restores behavior of skipping tests if no mongod is available for testing

v0.704.3.0 2014-07-28 17:02:13-04:00 America/New_York

  [Additions]

  - PERL-130 improved support for connection string URI; added support for
    options: ssl, connectTimeoutMS, w, wtimeoutMS, and journal

  [Bug fixes]

  - PERL-130 fixed parsing of connection string to allow for usernames containing :
    and passwords containing @ if they are percent encoded (RFC 3986)

  - PERL-166 fixed tailable cursors with no initial results

  - PERL-290 when find_master is 0, the driver now consistently picks the first
    server in the list

  - PERL-387 made database_names() retry up to three times if the server returns
    a lock error

v0.704.2.0 2014-07-08 12:04:02-04:00 America/New_York

  [Bug fixes]

  - PERL-376 fixed fatal error loading the MongoDB::MongoClient module before
    loading the top-level MongoDB module

  - Fixed cursor to catch query or timeout errors that occur after the initial
    query batch is received

  - Fixed primary server selection to retry for 60 seconds instead of
    immediately failing with an error

  - Changed bulk insert to shallow copy inserted documents before adding
    an '_id' field (if it didn't exist) to avoid modifying the original

  [Testing]

  - Fixed t/database.t for old versions of mongos

  - PERL-355 Added support for parallel testing

  - Finished converting from Test::Exception to the more robust Test::Fatal

  - Improved test coverage

v0.704.1.0 2014-06-17 21:55:18-04:00 America/New_York

  [Bug fixes]

  - PERL-336 fixed unknown command exception with index creation on 2.2 and
    older servers; we now correctly fall back to legacy index creation

  - PERL-349 fixed request ID misordering when reconnecting to a server; this
    fixes the known issue regarding test failures with threads under
    find_master

  - PERL-368 changed all query docs to be coerced to Tie::IxHash; this ensures
    that command queries are properly ordered and fixes a crashing bug when
    using command helpers in concert with read preference

  - PERL-369 fixed segfaults deserializing 64-bit integers from BSON on
    pure 32-bit perls

  - PERL-370 fixed bulk update results for upserts with non OID _id
    on servers prior to 2.6

  - Fixed stale detection of write command support for bulk operations

  - Fixed wire version checks and max BSON size inspection for replica
    sets with multiple hosts in the connection URI

  [Documentation]

  - PERL-366 documented bulk write initializers in Collection docs

  - Updated Example.pod docs for field projection (Johann Rolschewski)

  [Testing]

  - PERL-348 tests report MongoDB version in test diagnostics

  - PERL-351 fixed test failures if the local database has auth enabled;
    tests will skip instead of fail

  - PERL-356 enabled additional tests if the test database is a replica set
    or sharded cluster

  - Added test for field projection (Johann Rolschewski)

  - Fixed various tests to run against a sharded cluster

  - Moved unused orchestration tests out of the main test suite

  [~ Internal changes ~]

  - PERL-357 added developer tools for testing different cluster
    configuration

v0.704.0.0 2014-05-27 13:54:01-04:00 America/New_York

  [!!! Incompatible Changes !!!]

  - PERL-108 removed previously-deprecated AUTOLOAD functions

  [*** Deprecations ***]

  - PERL-320 low-level protocol functions in MongoDB.pm are deprecated

  [Additions]

  - PERL-221 added MongoDB::Regex class to represent stored regexes

  - PERL-251 implemented support for aggregation command cursors

  - PERL-252 added 'max_time_ms' method to cursors

  - PERL-258 added support for '$out' aggregation pipeline operator

  - PERL-262 read preference implementation

  - PERL-278 added explain support for aggregation queries

  - PERL-298 implement parallel_scan method for collections

  - PERL-299 implemented new bulk write API

  - Added nolock support to eval in MongoDB::Database (Ashley Willis)

  [Bug Fixes]

  - PERL-233 Fix find_and_modify error handling

  - PERL-260 ensure_index no longer ignores weights, default_language, and
    language_override options

  - PERL-267 memory leak fixes (Casey Rojas)

  - PERL-307 fix drop_dups option for ensure_index

  - PERL-315 require DateTime 0.78 or later

  - PERL-318 fix compiler warnings

  - PERL-319 fix compilation failures on some platforms

  - PERL-322 change return value and document low-level recv

  - PERL-323 fixed possible socket leaks on communication errors

  - PERL-336 fixed index creation legacy fallback against older mongos

  - Cached client constructor arguments for replica set connections

  - Cleaned Moose class namespaces of imported methods

  - Ensured internal run_command exceptions include correct error string

  - Fixed a bug that would serialize an index direction as a string on some
    older Perls

  - Fixed clock race in OID unit test

  - Fixed exception handling for internal run_command calls

  - Fixed fatal error in DESTROY with find_master and down server

  - Fixed gridfs test for unique keys

  - Fixed hint tests for MongoDB >= 2.5.4

  - Fixed index creation and drop on MongoDB 2.6

  - Fixed memory corruption error on Perl 5.19.1+

  - Fixed several compiler warnings on Perl 5.8

  - Fixed use of re::regexp_pattern for 5.10.0

  - Made t/dbref.t use fresh test database

  - Prevented GridFS MD5 calculation when 'safe' is not set (mapbuh)

  - Provided backwards compatible HeUTF8 macro for Perl v5.10 and v5.8.8 and
    earlier

  - Removed hard-coded compiler flags for Darwin

  - Updated ppport.h to version 3.22

  [Documentation]

  - PERL-217 improved documentation of GridFS::get

  - PERL-287 updated "j" and "fsync" option docs for MongoDB 2.6

  - PERL-311 fix legacy docs authentication link

  - PERL-317 Clarified support for threads

  - PERL-341 Added install documentation including use of non-standard C
    library paths

  - Added abstract to MongoDB::BSON::Regexp documentation

  - Revised main MongoDB module and MongoDB::MongoClient docs

  - Updated Changes file with changes since 0.701

  [Prerequisites]

  - Added namespace::clean

  - Added Test::Deep

  - Added Test::Fatal

  - Added Throwable

  - Added Syntax::Keyword::Junction

  - Changed Test::More requirement to 0.96

  - Removed Devel::Size

  [~ Internal changes ~]

  - PERL-261 use setVersion field in isMaster for replica set discovery (David
    Storch)

  - PERL-264 test for closing connection when MongoClient object leaves scope.
    (Ashley Willis)

  - PERL-269 test libraries for replica set and sharded cluster testing

  - PERL-285 added wire protocol check

  - PERL-296 implemented new index creation command for MongoDB 2.6

  - PERL-312 default GridFS chunk size changed from 1mb -> 255kb

  - Switched BSON implementation to libbson and bundled patched libbson 0.6.4
    to avoid external library dependency

  [~ Known Issues ~]

  - PERL-233 SSL certificate validation not yet implemented

  - PERL-349 changes to the testing framework revealed a bug when
    threads are used with 'find_master' on the client; the offending
    test is marked TODO and the bug will be addressed in the next
    stable release.

  - Some platforms may not compile, including Windows and some Solaris
    and OpenBSD systems; these issues will be addressed in a future release

v0.703.5  2014-05-23 06:26:46-04:00 America/New_York (TRIAL RELEASE)

v0.703.4  2014-04-07 20:12:27-04:00 America/New_York (TRIAL RELEASE)

v0.703.3  2014-04-01 10:32:49-04:00 America/New_York (TRIAL RELEASE)

0.703_2 (TRIAL RELEASE)

0.702.2

  [Bug Fixes]

  - Fix double-from-buffer alignment issue on ARM platform (Robin Lee)

  - Set BSON_MINKEY to 255 if char is unsigned (Robin Lee)

  - Fix test plans in connection.t and delegation.t (Robin Lee)

  [Internal]

  - Copyright update s/10gen/MongoDB/ due to company name change

0.702.1

  [Bug Fixes]

  - Query Fields accept Tie::IxHash and Hashref.. (Colin Cyr)

  - Fix for gridfs and creation of indexes (mapbuh)

0.702.0

  [Enhancements]

  - SASL PLAIN suport added

  - Makefile.PL can enable SSL/SASL builds via environment variables

  [Bug Fixes]

  - PERL-162 set_timeout fix

  - PERL-245 fix fractional seconds in BSON datetime deserialization

  - Fix specifying index keys as an array ref (D. Ilmari Mannsåker)

  - Prevent legacy auth when in SASL mode

  - Drop all created collections in dbref.t (D. Ilmari Mannsåker)

  [Documentation]

  - Deprecated AUTOLOAD functions removed from documenation

  - Various module docs revised and updated

  [Internal]

  - Refactored boilerplate test code to a separate testing module

0.701

  [Enhancements]

  - Support for Kerberos authentication on Linux (EXPERIMENTAL)

  - Add a get_collection method to MongoDB::Collection (@sanbeg, pull #52)

  - Optimizations on inserts and fetch (@ilmari, pull #66, PERL-129)

  - Hash ordering fixes (@ilmari, pull #64)

  - Double and int type helpers (@kenahoo, pull #65, PERL-227)

  - TTL index support (@drtz, pull #60, PERL-222)

  - Restored support for Perl 5.8.

  - Support for native DBRefs.

  [Bug Fixes]

  - UTF-8 fixes (@ilmari, pull #67, #68)

  - DateTime fixes (@kenahoo, pull #65)

  - Don't do aggregation tests when running against MongoDB < 2.2.


0.47 - 0.503.4

  [Enhancements]

  - Ordered hash support for MongoDB::Cursor::hint() (Colin Syr)

  - timegm() implementation for Windows (Stevie-O)

  - aggregate() helper method
 
  - find_and_modify helper

  - Connection URI support enhancements (Tianon Gravi)

  - MongoClient new top-level object

  - Removing AUTOLOAD method examples from documentation

  - Replacing $conn examples with $client in docs.

  - Deprecation warning for MongoDB::Connection

  - Removed dependence on Any::Moose

  - Support for fsyncLock/unlock (Casey Rojas)

  - Support for dt_type param, DateTime::Tiny and raw epoch times

  - Support for UTF8 hash keys (Roman Yerin)

  - Support for 'j' param to turn on journaling (Casey Rojas)

  [Bug Fixes]

  - Miscellaneous documentation fixes (Andrey Khozov, others)

  - Fixed socket timeout bug (nightlord)

  - Fixed broken regex test for Perls < 5.14.

  - More accurate isUTF8 function (Jan Anderssen)

  - Proper serialization of regex flags via re::regexp_pattern


0.46

  [Enhancements]

  - Added SSL support (Casey Rojas). See new documentation on
    MongoDB::Connection's ssl attribute.

  - Added MongoDB::BSON::Binary type and MongoDB::BSON::use_binary option. See
    the Data Types documentation on using the Binary type instead of string refs
    for binary data.

  - Change default binary type from 2 to 0.  See MongoDB::BSON::Binary for
    more information about the implications of this change.

  [Bug Fixes]

  - Fix auth connection issues (Olly Stephens)

  - Fix driver creating duplicate connections when port isn't specified (Olly
    Stephens)

  - Fix authentication check on some versions of Perl (Olly Stephens)

0.45 - September 7, 2011

  This is a recommended upgrade.  There are no backwards-breaking changes, only
  bug fixes and enhancements.

  [Enhancements]

  - Perl 5.8.4 and higher is now officially supported (5.8.7 was the previous
    minimum version).

  - Improved the way that connecting handles an interrupt signal.  The driver
    now continues to attempt connection for the remaining duration of the
    timeout, instead of erroring out immediately.

  [Bug Fixes]

  - Fixed MaxKey and MinKey deserialization. Deserializing these types would seg
    fault if they hadn't been serialized previously.

  - Fixed Windows compilation (Taro Nishino)

  - Fixed MakeMaker arguments which were causing build problems on 5.14.

0.44 - July 26, 2011

  This is a recommended upgrade.  There are no backwards-breaking changes, only
  bug-fixes and enhancements.

  [Enhancements]

  - Added MongoDB::BSON::looks_like_number flag.

    The Perl driver has always been coy about turning strings into numbers.  If
    you would like aggressive number parsing (if it looks like a number, send it
    to the DB as a number), you can set MongoDB::BSON::looks_like_number to 1
    (defaults to 0, the previous behavior).  See the MongoDB::DataTypes pod for
    more info.

  - Tests should now clean up after themselves, leaving no test databases
    behind.

  [Bug Fixes]

  - Setting a sort in the arguments to MongoDB::Collection::find is now passed
    through correctly to the cursor.

  - Fixed segmentation fault in array serialization: caused by specifying an _id
    field on insert and using an array (not a hash or Tie::IxHash).

  - Fixed segmentation fault in threading: if Mouse was used instead of Moose,
    version 0.43 of the driver would segfault if multiple threads were used.

  - MongoDB::Cursor now inherits the $Mongo::Cursor::slave_okay global setting,
    as well as checking if slave_okay is set on the cursor instance.

  - Fix GridFS functions to only ensure GridFS indexes on writes, allowing
    GridFS API usage on slaves.

0.43 - May 31, 2011

  This is a recommended upgrade.  There are no backwards-breaking changes, only
  bug-fixes and enhancements.

  [Enhancements]

  - Auto-detects max BSON size for inserts, which means documents larger than
    4MB can now be inserted.  See L<MongoDB::Connection/max_bson_size> for
    details.

  - Added the L<MongoDB::Cursor/info> method, which returns meta information
    about the results being returned.

  [Bug Fixes]

  - When high UTF-8 values as hash keys, the driver now croaks instead of
    segfaulting.

  - Added 'use IO::File' before IO::File is used (Michael Langner)

  - Fixed Perl 5.14 compile (Chip Salzenberg)

0.42

  - Fixes for Sparc architecture
  - Fixed PVIV misinterpretations

0.41

  - Re-discover master on "not master" errors
  - Make driver thread safe (Florian Ragwitz)
  - POD fix (Ronald Kimball)
  - Fix GridFS warning (Graham Barr)
  - Allow auto_connect => 0 for replica sets (Graham Barr)

0.40

  - DateTime floating timezones now warn on serialization
  - Attempting to serialize unrecognized object types now croaks
  - MongoDB::Cursor::explain now resets cursor properly
  - Added BSON::encode_bson and BSON::decode_bson (Jason Toffaletti)
  - Safe writes return a hash of information instead of 1 (on success)
  - Improved last_error/safe docs
  - Fixed doc spelling errors (Stefan Hornburg)

0.39

  - Fixed memory leak

0.38

  - Fixed indexing subdocuments (x.y.z)
  - Fixed GridFS to accept non-fs prefixes (Olly Stephens)
  - Fixed compile for old C compilers (Taro Nishino)
  - Added MongoDB::read_documents for handling db replies (Graham Barr)

0.37

  - Fixed cursor not found error condition
  - Fixed compile for old C compilers
  - Fixed weird file behavoir on some machines

0.36

  - Replica set support
  - Deserialize booleans as booleans (instead of ints) (Andrew Page)
  - Fixed OS X build (Todd Caine)
  - Added background option for index creation (Graham Barr)
  - Fixed slurp tests (Josh Rabinowitz)
  - Added MongoDB::Timestamp type

0.35 - 02 July 2010

  - Added MongoDB::BSON::utf8_flag_on (Pan Fan)
  - Added MongoDB::GridFS::File::slurp (Pan Fan)
  - Fixed memory leak

0.34 - 17 June 2010

  - $conn->foo->bar->baz now gets the bar.baz collection in the foo database
  - Slight speed improvements on inserts
  - Added $conn->query_timeout option to control timeout lengths for all queries
    done over a given connection
  - MongoDB::Cursor::tailable and MongoDB::Cursor::immortal
  - Added TO_JSON function to MongoDB::OID
  - Fixed safe save (Othello Maurer)
  - BACKWARD-BREAKING: removed old indexing syntax (if you started using the
    driver less than a year ago, this shouldn't affect you.  If you're an old-
    timer, make sure you're not using the syntax that has been deprecated for a
    year).

0.33 26 April 2010

  - Fixed tests

0.32 21 April 2010

  - BACKWARD COMPATIBILITY BREAK: croak on failed safe
    update/insert/remove/ensure_index (Eric Wilhelm)
  - w and wtimeout (see MongoDB::Connection::w)
  - die correctly on MongoCollection::count errors (help from Josh Rabinowitz)
  - Added MongoDB::Collection::find (same as query)
  - Added get, put, and delete methods to MongoDB::GridFS
  - Perl 5.12 compatibility

0.31 05 April 2010

  - C89 fix (Taro Nishino)
  - Added MongoDB::Code type
  - Use connection format: mongodb://host1,host2:port2,host3...
  - Arbitrary number of hosts supported
  - Auto-reauthentication on dropped connection
  - ensure_index name option

0.30 10 March 2010

  - Support BigInt
  - On 64-bit machines, support 64-bit nums w/out BigInt (Ryan Olson)
  - Added connection timeout option (Othello Maurer)
  - Added clarifying docs on fields (Josh Rabinowitz)

0.29 01 March 2010

  - Added safe options for remove, update, and ensure_index
  - Added save method
  - Fixed bug in UTF8 checking
  - Fixed serialization of "tie %hash, 'Tie:IxHash'"

0.28 28 Jan 2010

  - Fixed undef values (Andrew Bryan)
  - Added GridFS multi-chunk test using File::Temp (Josh Rabinowitz)
  - Allow tie(%h, 'Tie::IxHash') to be used as well as Tie::IxHash->new
  - Fixed GridFS indexes and added chunkSize and uploadDate to metadata
  - Fixed batch_insert doc (Eric Wilhelm)
  - Fixed big endian build

0.27 22 Dec 2009

  - Indexes: Improved ensure_index syntax, added drop_dups option
  - Inserts: Added safe insert, checks object is < 4 MB before inserting
  - Fixed socket closing bug
  - Big-endian support
  - $ can be replaced by any character using MongoDB::BSON::char
  - MongoDB::OIDs: Fixed undefined behavior in serialization (Peter Edwards), added OID::get_time
  - 5.8.7-compatible memory allocation (Peter Edwards)
  - Added MongoDB::MaxKey and MongoDB::MinKey support

0.26  09 Nov 2009

  - Don't force i386 arch (Needed to compile on OS X with x86_64) (Graham Barr)
  - Include inc/ dir for CPAN
  - Memory leak fixes
  - Added tutorial

0.24  15 Oct 2009

  - Fix for uninitialized array values (David Morrison)
  - Boolean support
  - Connection memory leak fix
  - Added MongoDB::Cursor::count

0.23  25 Sept 2009

  Changes in this version by Ask Bjørn Hansen, Florian Ragwitz,
  Orlando Vazquez, Kristina Chodorow, and Eric Wilhelm:

  - Make inserting double's (floats/NV's), undefined/null, Tie::IxHash values
  - Query sorting, snapshot, explain, and hint
  - Added non-unique ensure_index
  - Added GridFS
  - Added regex support
  - find_one takes optional fields parameter
  - DateTime used for dates
  - No C++ driver dependency

0.01  06 May 2009
  - Initial release.

# vim: ts=2 sts=2 sw=2 et: