mongo: Changelog

Version Message
1.6.16 ** Bug
* [PHP-1529] - undefined symbol: php_mongo_asn1_time_to_time_t
1.6.15 ** Bug
* [PHP-1489] - Can't run the test suite against MongoDB 3.1.2 or later
* [PHP-1528] - Extension should link OpenSSL during compilation
1.6.14 ** Bug
* [PHP-1468] - Segfault on node with high network latency
* [PHP-1511] - append_getlasterror() should ignore unset fsync/journal from link

** Improvement
* [PHP-1510] - Route unacknowledged writes through legacy op codes
1.6.13 ** Bug
* [PHP-1483] - GridFS file storage fails on big endian platform
* [PHP-1500] - Socket timeout not applied to initial command cursor query
* [PHP-1501] - Rephrase unsupported/corrupt BSON messages
* [PHP-1504] - Segfault connecting to authenticated RS after non-auth connections
* [PHP-1505] - negative files.length when storing file with size > 2GB in gridfs
1.6.12 ** Bug
* [PHP-1494] - We don't allocate enough space for the hash buffer

** Task
* [PHP-1474] - Declare no support for PHP 7
1.6.11 ** Bug
* [PHP-1467] - PHP driver on big endian platform not connecting to MongoDB
1.6.10 ** Bug
* [PHP-1460] - Query with limit leaves open cursors on server
* [PHP-1462] - Fix static compilation
* [PHP-1464] - GridFS should not drop dupes when creating index
1.6.9 ** Bug
* [PHP-1426] - Ensure buffer lengths are checked in bson_to_zval()
* [PHP-1448] - Ensure DBPointer namespace length reads as little-endian
* [PHP-1450] - Ensure strings are null-terminated in bson_to_zval()
* [PHP-1453] - Ensure BSON buffer is checked before reading regex pattern/flags

** Improvement
* [PHP-1449] - Ensure value is freed when bson_to_zval() encounters an error
* [PHP-1452] - bson_decode() should require exactly one document in buffer
1.6.8 ** Bug
* [PHP-1442] - php_mongo_stream_notify_io() segfault with stream context options
* [PHP-1445] - MongoClient does not accept boolean false as "ssl" option

** Improvement
* [PHP-1446] - Log original string values for parsed boolean options
1.6.7 ** Bug
* [PHP-1425] - explain() does not raise appropriate exception for $err conditions
* [PHP-1431] - Fix database name validation to include '$external', to allow execution of user admin commands
* [PHP-1435] - MongoCollection::getIndexInfo on non-existing collection makes segmentation fault

** Improvement
* [PHP-1427] - MongoCollection::distinct() should ensure query is serialized as BSON object
* [PHP-1433] - MongoCollection::distinct() should allow array or object for query
* [PHP-1434] - MongoCollection::findAndModify() should allow array or object for query, update, and fields
1.6.6 ** Bug
* [PHP-1413] - Driver segfaults with SSL connection and no context options
* [PHP-1414] - SSL peer verification should reference stream->context options
1.6.5 ** Bug
* [PHP-1406] - Connecting through SSL no longer works in PHP 5.6 with 2.4.13, 2.6.6, and later
* [PHP-1407] - Hostname matching with Replica Set doesn't work pre PHP 5.6
* [PHP-1412] - Compile error when OpenSSL is not available

** Improvement
* [PHP-1410] - Add certification expiration matching
1.6.4 ** Bug
* [PHP-1400] - Default writeConcern not write safe on standalone node
* [PHP-1401] - Segfault in findAndModify test running against 3.0.0-rc11
* [PHP-1402] - MongoCollection::hasNext() returns false for limit=1 result

** Task
* [PHP-1405] - Create regression tests for batchSize(1) and batchSize(-1) behavior
1.6.3 ** Bug
* [PHP-1394] - hasNext() stops one item too late when limit is present
* [PHP-1395] - Can't iterate twice over a cursor
1.6.2 ** Bug
* [PHP-1390] - MongoCursor::hasNext() may fail with one result or on getMore boundaries
1.6.1 ** Bug
* [PHP-1382] - MongoCursor::getNext() returns null, despite hasNext() returning true
* [PHP-1388] - Incorrect string comparison in mongo_db_list_collections_legacy()
1.6.0 ** Bug
* [PHP-953] - MongoCollection::ensureIndex() should not validate namespace length
* [PHP-977] - An iteration on a MongoCursor object with yield produces a memory leak.
* [PHP-1063] - Refactor cursor logic to follow MongoCommandCursor
* [PHP-1145] - Clean up MONGO_METHOD calls in db_ref.c
* [PHP-1146] - Clean up MONGO_METHOD calls in mongo.c
* [PHP-1149] - Fix database and collection name validation
* [PHP-1218] - Add MongoDate->toDateTime to allow creation of DateTime object from MongoDate
* [PHP-1229] - MongoGridFS::remove() ignores justOne option when deleting chunks
* [PHP-1237] - Possible to read memory before mongo_cursor.ns pointer
* [PHP-1245] - MONGO_METHOD calls within generators cause segfaults
* [PHP-1247] - MongoClient should not inherit timeout of persistent connection
* [PHP-1251] - MongoCursor::count() should use cursor's maxTimeMS
* [PHP-1266] - phpinfo() lists a default authentication mechanism (which may not be the default)
* [PHP-1267] - Windows build failure
* [PHP-1268] - Fix uninitialized variable usages with deprecated properties
* [PHP-1269] - Validate encoding and decoding of MongoBinData::UUID_RFC4122
* [PHP-1270] - MongoDate->toDateTime is only supported for PHP 5.3.4 and later.
* [PHP-1272] - bson_encode() segfaults with some BSON type classes
* [PHP-1273] - bson_encode() MongoTimestamp erroneously creates BSON date
* [PHP-1275] - Memory leak with 2x MongoClient
* [PHP-1276] - Fix tests for 2.8
* [PHP-1277] - bson_encode() does not handle MongoMaxKey and MongoMinKey
* [PHP-1278] - runcommand memory leak
* [PHP-1280] - Can not connect without authentication credentials (results in segfault)
* [PHP-1285] - Add MongoDB::getCollectionInfo as per SPEC-54
* [PHP-1286] - MongoCollection::count() segfaults due to a double free
* [PHP-1297] - Memory read errors with deprecated properties.
* [PHP-1351] - Handle listCollections and listIndexes results for non-existent databases and collections
* [PHP-1355] - Collection and index enumeration fails if cursor's first batch is empty
* [PHP-1357] - Command cursor may cause log_response_header callback to segfault
* [PHP-1360] - Do not compare php_mongocursor_is_valid() result to FAILURE constant
* [PHP-1361] - php_mongo_runcommand() should load current element before handling errors
* [PHP-1366] - aggregateCursor() with $out does not force primary selection
* [PHP-1367] - aggregate() with var args does not restore read pref after forcing primary for $out
* [PHP-1368] - Force primary read pref over primaryPreferred if pipeline ends with $out
* [PHP-1369] - Clear tag sets when forcing primary read pref for aggregate
* [PHP-1370] - Implement get/setReadPreference() for MongoCommandCursor
* [PHP-1371] - Resolve memory leak with connection replica set tags
* [PHP-1372] - explicitly null-terminate buffer written by gethostname()
* [PHP-1376] - MongoDB::getCollectionInfo() should trim database prefix when querying system.namespaces

** Improvement
* [PHP-904] - Implement MongoDate::__set_state
* [PHP-1160] - Allow count to work with query hints
* [PHP-1219] - Drop support for PHP 5.2.
* [PHP-1256] - Implement MongoCommandCursor::timeout()
* [PHP-1263] - MongoCollection::count() should throw MongoExecutionTimeoutException on maxTimeMS timeout
* [PHP-1321] - Support cursor in listCollections and listIndexes commands
* [PHP-1356] - Do not enforce batch size for collection and index enumeration commands
* [PHP-1358] - Allow command cursor option to be array or object
* [PHP-1378] - MongoDB::getCollectionInfo() should return a numerically indexed array

** New Feature
* [PHP-1161] - Implement the SCRAM-SHA-1 SASL Mechanism
* [PHP-1257] - Support 50 replicaset members
* [PHP-1259] - MongoDB::listCollections() should support filter option

** Task
* [PHP-1151] - Remove support for compiling without PHP streams
* [PHP-1225] - Use listCollections command for MongoDB::listCollections and MongoDB::getCollectionNames
* [PHP-1226] - Use listIndexes command for MongoCollection::getIndexInfo()
* [PHP-1227] - Bump maxWireProtocolVersion for 2.8 features
* [PHP-1238] - Support authMechanismProperties MongoClient option
* [PHP-1241] - Change MongoCursor::info()['at'] to zero-based indexing
* [PHP-1244] - Mark MongoCursor::doQuery as final
* [PHP-1258] - Test against non-mmapv1 storage engines (heap + wiredtiger)
* [PHP-1318] - Document options for collection enumeration methods
* [PHP-1328] - Document MongoCursorInterface
* [PHP-1330] - Document MongoDB::command() $hash by-reference parameter
* [PHP-1354] - MongoCommandCursor::key() returns an integer
* [PHP-1363] - Move MongoCursor::valid() checks to php_mongocursor_is_valid()
* [PHP-1365] - Do not enforce batch size on cursor commands
* [PHP-1374] - Clarify that MongoTimestamp is for internal use only
* [PHP-1375] - Clarify that MongoMaxKey and MongoMinKey are primarily for internal use
1.6.0RC3 ** Bug
* [PHP-953] - MongoCollection::ensureIndex() should not validate namespace length
* [PHP-1229] - MongoGridFS::remove() ignores justOne option when deleting chunks
* [PHP-1237] - Possible to read memory before mongo_cursor.ns pointer
* [PHP-1245] - MONGO_METHOD calls within generators cause segfaults
* [PHP-1268] - Fix uninitialized variable usages with deprecated properties
* [PHP-1272] - bson_encode() segfaults with some BSON type classes
* [PHP-1273] - bson_encode() MongoTimestamp erroneously creates BSON date
* [PHP-1276] - Fix tests for 2.8
* [PHP-1277] - bson_encode() does not handle MongoMaxKey and MongoMinKey
* [PHP-1278] - runcommand memory leak
* [PHP-1280] - Can not connect without authentication credentials (results in segfault)
* [PHP-1285] - Add MongoDB::getCollectionInfo as per SPEC-54
* [PHP-1286] - MongoCollection::count() segfaults due to a double free
* [PHP-1297] - Memory read errors with deprecated properties.

** Improvement
* [PHP-1256] - aggregate, aggregateCursor cursor timeout
* [PHP-1321] - Support cursor in listCollections and listIndexes commands

** New Feature
* [PHP-1259] - MongoDB::listCollections() should support filter option

** Task
* [PHP-1258] - Test against non-mmapv1 storage engines (heap + wiredtiger)
1.6.0RC2 ** Bug
* [PHP-1266] - phpinfo() lists a default authentication mechanism (which may not be the default)
* [PHP-1267] - Windows build failure
* [PHP-1269] - Validate encoding and decoding of MongoBinData::UUID_RFC4122
* [PHP-1270] - MongoDate->toDateTime is only supported for PHP 5.3.4 and later.
1.6.0RC1 ** New Feature
* [PHP-1161] - Implement the SCRAM-SHA-1 SASL Mechanism
* [PHP-1257] - Support 50 replicaset members

** Improvement
* [PHP-904] - Implement MongoDate::__set_state
* [PHP-1160] - Allow count to work with query hints
* [PHP-1219] - Drop support for PHP 5.2.
* [PHP-1263] - MongoCollection::count() should throw MongoExecutionTimeoutException on maxTimeMS timeout

** Bug
* [PHP-977] - An iteration on a MongoCursor object with yield produces a memory leak.
* [PHP-1063] - Refactor cursor logic to follow MongoCommandCursor
* [PHP-1145] - Clean up MONGO_METHOD calls in db_ref.c
* [PHP-1146] - Clean up MONGO_METHOD calls in mongo.c
* [PHP-1149] - Fix database and collection name validation
* [PHP-1218] - Add MongoDate->toDateTime to allow creation of DateTime object from MongoDate
* [PHP-1231] - Using MongoDB::selectCollection crashes inside generators
* [PHP-1251] - MongoCursor::count() should use cursor's maxTimeMS

** Task
* [PHP-1151] - Remove support for compiling without PHP streams
* [PHP-1225] - Use listCollections command for MongoDB::listCollections and MongoDB::getCollectionNames
* [PHP-1226] - Use listIndexes command for MongoCollection::getIndexInfo()
* [PHP-1227] - Bump maxWireProtocolVersion for 2.8 features
* [PHP-1241] - Change MongoCursor::info()['at'] to zero-based indexing
* [PHP-1244] - Mark MongoCursor::doQuery as final
1.5.8 ** Bug
* [PHP-1126] - Do not allow invalid limit values in MongoDeleteBatch
* [PHP-1231] - Using MongoDB::selectCollection crashes inside generators
* [PHP-1249] - MongoCursor::count() should use cursor's socket timeout
* [PHP-1265] - Exception messages for invalid db/collection names are not helpful

** Improvement
* [PHP-1168] - Add "How to Ask for Help" section to Github readme
* [PHP-1264] - Rename 'delete' field to allow compilation with C++

** Task
* [PHP-1205] - Remove dropDups support from index building
1.5.7 ** Bug
* Windows compile fixes.
1.5.6 ** Bug
* [PHP-1155] - php_mongo_io_stream_read() should revert to default_socket_timeout if socketTimeoutMS was zero
* [PHP-1156] - Use default and block indefinitely for zero and negative connect/socket timeouts, respectively
* [PHP-1158] - Driver emits warnings after setting connectTimeoutMS
* [PHP-1220] - Client doesn't find Primary after election

** Improvement
* [PHP-1154] - Make connect/read timeouts for blocking and defaults consistent

** Documentation
* [PHP-1157] - Fix documentation for MongoCursor::timeout() default
* [PHP-1159] - Document that users may need to copy libsasl.dll to lib path for Windows installs
* [PHP-1162] - Update documentation for MongoLog constants
* [PHP-1167] - Clarify that $snapshot only prevents duplicates in documentation
* [PHP-1216] - Clarify that RS connections to non-canonical hostnames are not kept
1.5.5 ** Bug
* [PHP-722] - Segfault when passing null value to MongoCollection::find() and unclear other conditions are met, inaccurate error message
* [PHP-1105] - long_as_object = 0 no effect
* [PHP-1107] - Connections to server hangs when indexes are being created
* [PHP-1131] - Journal option should set "j" field in GLE instead of "journal"

** Documentation
* [PHP-840] - Document deprecated MongoClient properties
* [PHP-1081] - MongoId $id property is not documented correctly
* [PHP-1147] - Clean up GridFS insert/delete method documentation
* [PHP-1148] - Add "ssl" connection option to MongoClient changelog
1.5.4 ** Bug
* [PHP-1111] - MongoClient constructor crashes on connection to slave
* [PHP-1118] - Aggregate cursor on non-existing collection throws weird error
* [PHP-1120] - The mongo driver fails to build as static extension
1.5.3 * [PHP-928] - The 'w' property is read-only
* [PHP-970] - Explain how to_index_string() creates names for ensureIndex() and deleteIndex()
* [PHP-1052] - Replace JSON encoding of stream notifications with standard PHP serialize encoding
* [PHP-1060] - "The '$id' property is read-only"
* [PHP-1096] - PHP crashes due to null pointer dereference on shutdown when JSON extension is not present
* [PHP-1099] - socketTimeoutMS=-1 doesn't work
* [PHP-1102] - php driver throws exception when connect string contains an unresolvable hostname
* [PHP-1104] - New Replica Set connections hang when secondaries are creating indexes during initialSync
* [PHP-1109] - Upsert should return _id instead of array of ids

** Task
* [PHP-1076] - Document deprecation notices for timeout and wtimeout options
* [PHP-1078] - Document wTimeoutMS, socketTimeoutMS, and maxTimeMS for ensure/createIndex
1.5.2 ** Bug
* [PHP-922] - Read timed out after reading 0 bytes, waited for 0.000000 seconds
* [PHP-978] - Standalone connection to arbiter fails
* [PHP-1036] - Segmentation Fault when querying large collection and the working set is not loaded
* [PHP-1042] - Document missing MongoClient constructor options
* [PHP-1056] - Fix MongoCursor handling of projections with numeric field names
* [PHP-1059] - updatedExisting is always true when updating
* [PHP-1065] - Mongo driver is crashing
* [PHP-1071] - Create Index test segfaults
* [PHP-1075] - close() with parallelCollectionScan() segfaults upon request shutdown
* [PHP-1080] - MongoCursor::$timeout=-1 doesn't work anymore
* [PHP-1083] - 2.6.1-rc0 requires $gt for OplogReplay
* [PHP-1084] - collection->update($query, $document) crashes if $document is an object
* [PHP-1085] - w=0 can return an unexpected exception on failure
* [PHP-1086] - Inserting documents with WriteConcern during failover broken
* [PHP-1087] - Travis build status incorrect in v1.5 branch
* [PHP-1088] - Coverity analysis defect 10700: Explicit null dereferenced
* [PHP-1090] - Coverity analysis defect 22173: Dereference null return value
* [PHP-1095] - Min server version check should use GTE comparison

** Improvement
* [PHP-758] - Document stream context callbacks
* [PHP-1091] - Allow NumberLong numbers on 32-bit platforms if the number fits in the 32-bit int range
* [PHP-1094] - 32bit platform improvements

** Task
* [PHP-935] - Document SSL connections
* [PHP-1023] - Document maxTimeMS option for findOne(), group(), aggregate(), and cursor
* [PHP-1058] - Add Cyrus SASL to automated PECL builds
* [PHP-1077] - Fix handling of timeout options for createIndexes command
* [PHP-1082] - CommandCursor segfaults when server is closed
1.5.1 ** Bug
* [PHP-1053] - Windows build broken
1.5.0 ** Bug
* [PHP-722] - Segfault when passing null value to MongoCollection::find() and unclear other conditions are met, inaccurate error message
* [PHP-796] - Modifying MongoDate internal properties evilness
* [PHP-813] - IS_SCALAR_*() doesn't account for resources
* [PHP-815] - MongoCursor ctor doesn't validate the MongoClient object
* [PHP-833] - Add the MongoClient::killCursor method to kill a cursor on the server on 64-bit platforms
* [PHP-835] - Driver interprets 'err' property as MongoCursorException
* [PHP-848] - Invalid read in master
* [PHP-882] - mongo_connection_get_server_version memleaks
* [PHP-883] - php_mongo_dbref_create() doesn't handle MongoId values
* [PHP-888] - DBRef refactoring broke BC for $id parameter handling
* [PHP-900] - Cannot switch from majority to lower WriteConcern
* [PHP-902] - Segfault when unregistering broken server
* [PHP-949] - ensureIndex() creates wrong names
* [PHP-955] - Switch the default mongo.native_long to 1 for 64bit platforms
* [PHP-981] - Empty document should not throw exception
* [PHP-995] - JSON detection
* [PHP-996] - Broken with cyrus-sals 2.1.23
* [PHP-1010] - MongoCollection::commandCursor should not require batchSize option to be set manually
* [PHP-1011] - MongoDB and MongoCollection do not inherit string write concerns
* [PHP-1012] - MongoCollection doesn't respect its own write concern for GLE ops
* [PHP-1013] - Read preferences are not respected with command cursors
* [PHP-1019] - Empty Batch Insert should throw exception
* [PHP-1027] - Support maxTimeMS and exceptions in MongoCollection::group()
* [PHP-1034] - Ensure MongoCommandCursor implements Iterator interface properly
* [PHP-1037] - add allowDiskUse:true to the top-level of an aggregate command
* [PHP-1038] - Segfault in php_mongo_enforce_batch_size_on_command()
* [PHP-1041] - Off-by-one error in MongoCommandCursor::key() index
* [PHP-1046] - Command cursor doesn't check if cursor exists
* [PHP-1047] - Index order can't be boolean
* [PHP-1048] - Segfault during shutdown after mongodb failover
* [PHP-1049] - MongoCollection::aggregateCursor batch size defaults should be: 101, 0 (server default)
* [PHP-1050] - MongoCommandCursor->dead() changes

** Improvement
* [PHP-578] - No need to call ismaster 2times
* [PHP-705] - Throw exception when overflowing message size in OP_INSERT batches
* [PHP-708] - WriteConcern failure exception should include the entire GLE document
* [PHP-712] - findAndModify returns empty array when nothing is found
* [PHP-774] - Deprecate the protected method MongoCollection::toIndexString
* [PHP-778] - Deprecate static properties
* [PHP-807] - Rewrite to_index_string to use smart_str and a real C function
* [PHP-812] - Remove unused MongoDBRef::$refKey and MongoDBRef::$idKey
* [PHP-837] - Handle cursor IDs for return with MongoCursor::info on 32bit platforms
* [PHP-851] - Add MONGO_HAVE_* constants and make sure MINFO contains this too
* [PHP-880] - New write operation method for insert, update, remove
* [PHP-886] - Add support for secondaryAcceptableLatencyMS
* [PHP-903] - Improve the Stream Notification API
* [PHP-938] - please update description of 'fsync' write concern flag
* [PHP-941] - Throw MongoConnectionException on stream failures
* [PHP-942] - Throw MongoDuplicateKeyException on duplicate key errors
* [PHP-971] - Remove mongo.native_long for 32bit platforms
* [PHP-972] - Support parallelCollectionScan command
* [PHP-990] - Implement Batch Write API
* [PHP-998] - Include maxWriteBatchSize and maxMessageSizeBytes in connection info
* [PHP-1021] - Support maxTimeMS option on MongoCollection::findOne()
* [PHP-1026] - Include connection info in findAndModify exception messages
* [PHP-1028] - Support $options arg in MongoCollection::aggregate()
* [PHP-1039] - Use dropIndexes command instead of deleteIndexes

** New Feature
* [PHP-819] - Add Mongo[DB|Collection]->[get|set]WriteConcern()
* [PHP-831] - SASL Support (SASL Plain)
* [PHP-832] - SASL Support (SASL Kerberos)
* [PHP-861] - Add maxTimeMS() method to MongoCursor to configure the maximum time a query can take
* [PHP-868] - Method to check if string is a valid ObjectId
* [PHP-873] - Support the MONGODB-X509 authentication mechanism
* [PHP-875] - Add support for cursor for aggregation
* [PHP-876] - Make the driver check for the server version upon connection
* [PHP-923] - Drivers should only talk to servers with overlapping wire versions
* [PHP-944] - Support $out aggregation pipeline operator
* [PHP-951] - Provide API for getting latest server version or isMaster response in driver
* [PHP-962] - Create constants for additional binary data subtypes
* [PHP-965] - Documentation for MongoId::isValid()
* [PHP-1031] - Implement MongoWriteBatch method to return current batch size
* [PHP-1035] - Add third arg to MongoDB::command() to collect server hash by reference

** Task
* [PHP-407] - MongoBinData should default to type 0 instead of 2
* [PHP-657] - Add deprecation notice to MongoCursor::slaveOkay
* [PHP-714] - Convenience macro for getting mongoclient*
* [PHP-739] - Audit extension for deprecations of functionality to be removed in 1.5
* [PHP-786] - Sort out includes
* [PHP-809] - Deprecate use of "safe" all over collection.c
* [PHP-842] - Document core class [get|set]WriteConcern() methods
* [PHP-844] - driver must authenticate before calling isMaster()
* [PHP-845] - Ability to use different SPN on the driver for Kerberos Authentication
* [PHP-914] - aggregation: need an explain facility
* [PHP-960] - Use createIndexes command when available
* [PHP-983] - Change nUpdated to nMatched in bulk api results
* [PHP-987] - Use maxWriteBatchSize from ismaster for write command batch splitting.
* [PHP-1006] - Document deprecation of MongoCollection::ensureIndex()
* [PHP-1007] - Add MongoClient->[get|set]WriteConcern()
* [PHP-1015] - Document MongoWriteBatch and related classes
* [PHP-1016] - Document MongoCollection:createIndex()
* [PHP-1022] - Create MongoCollection::aggregateCursor() method
* [PHP-1030] - gridfs chunksize should be lowered to 255K
* [PHP-1033] - Organize third-party code and license information
* [PHP-1040] - MongoCommandCursor::key() should not return _id field

** Sub-task
* [PHP-763] - Create prototypes for MongoClient and Mongo classes
* [PHP-794] - Remove 'fd' property of MongoCursorException
* [PHP-797] - Deprecate public properties
* [PHP-798] - Rename "timeout" to "socketTimeoutMS" in $options
* [PHP-804] - Deprecate Mongo::connectUtil
* [PHP-818] - Deprecate "Mongo" in favour of MongoClient.
* [PHP-824] - Deprecate the "wtimeout" option in crud operations for wTimeoutMS
* [PHP-993] - Merge batch return values into one return value
1.5.0RC2 ** Bug
* [PHP-900] - Cannot switch from majority to lower WriteConcern
* [PHP-1010] - MongoCollection::commandCursor should not require batchSize option to be set manually
* [PHP-1011] - MongoDB and MongoCollection do not inherit string write concerns
* [PHP-1012] - MongoCollection doesn't respect its own write concern for GLE ops
* [PHP-1013] - Read preferences are not respected with command cursors
* [PHP-1019] - Empty Batch Insert should throw exception
* [PHP-1027] - Support maxTimeMS and exceptions in MongoCollection::group()
* [PHP-1034] - Ensure MongoCommandCursor implements Iterator interface properly
* [PHP-1037] - add allowDiskUse:true to the top-level of an aggregate command
* [PHP-1038] - Segfault in php_mongo_enforce_batch_size_on_command()
* [PHP-1041] - Off-by-one error in MongoCommandCursor::key() index

** Improvement
* [PHP-778] - Deprecate static properties
* [PHP-938] - please update description of 'fsync' write concern flag
* [PHP-1021] - Support maxTimeMS option on MongoCollection::findOne()
* [PHP-1026] - Include connection info in findAndModify exception messages
* [PHP-1028] - Support $options arg in MongoCollection::aggregate()
* [PHP-1039] - Use dropIndexes command instead of deleteIndexes

** New Feature
* [PHP-1031] - Implement MongoWriteBatch method to return current batch size
* [PHP-1035] - Add third arg to MongoDB::command() to collect server hash by reference

** Task
* [PHP-739] - Audit extension for deprecations of functionality to be removed in 1.5
* [PHP-842] - Document core class [get|set]WriteConcern() methods
* [PHP-914] - aggregation: need an explain facility
* [PHP-1006] - Document deprecation of MongoCollection::ensureIndex()
* [PHP-1007] - Add MongoClient->[get|set]WriteConcern()
* [PHP-1015] - Document MongoWriteBatch and related classes
* [PHP-1016] - Document MongoCollection:createIndex()
* [PHP-1022] - Create MongoCollection::aggregateCursor() method
* [PHP-1030] - gridfs chunksize should be lowered to 255K
* [PHP-1033] - Organize third-party code and license information
* [PHP-1040] - MongoCommandCursor::key() should not return _id field
1.5.0RC1 ** Bug
* [PHP-995] - JSON detection
* [PHP-996] - Broken with cyrus-sals 2.1.23
* [PHP-999] - Inline mapReduce command ignores read preferences
* [PHP-1000] - RP support for "mapReduce" command, not just "mapreduce"

** Improvement
* [PHP-998] - Include maxWriteBatchSize and maxMessageSizeBytes in connection info

** Task
* [PHP-407] - MongoBinData should default to type 0 instead of 2
* [PHP-960] - Use createIndexes command when available
* [PHP-987] - Use maxWriteBatchSize from ismaster for write command batch splitting.

** Sub-task
* [PHP-993] - Merge batch return values into one return value
1.5.0alpha1 ** Bug
* [PHP-722] - Segfault when passing null value to MongoCollection::find() and unclear other conditions are met, inaccurate error message
* [PHP-796] - Modifying MongoDate internal properties evilness
* [PHP-813] - IS_SCALAR_*() doesn't account for resources
* [PHP-815] - MongoCursor ctor doesn't validate the MongoClient object
* [PHP-833] - Add the MongoClient::killCursor method to kill a cursor on the server on 64-bit platforms
* [PHP-835] - Driver interprets 'err' property as MongoCursorException
* [PHP-848] - Invalid read in master
* [PHP-882] - mongo_connection_get_server_version memleaks
* [PHP-883] - php_mongo_dbref_create() doesn't handle MongoId values
* [PHP-888] - DBRef refactoring broke BC for $id parameter handling
* [PHP-902] - Segfault when unregistering broken server
* [PHP-949] - ensureIndex() creates wrong names
* [PHP-955] - Switch the default mongo.native_long to 1 for 64bit platforms
* [PHP-981] - Empty document should not throw exception

** Improvement
* [PHP-578] - No need to call ismaster 2times
* [PHP-705] - Throw exception when overflowing message size in OP_INSERT batches
* [PHP-708] - WriteConcern failure exception should include the entire GLE document
* [PHP-712] - findAndModify returns empty array when nothing is found
* [PHP-774] - Deprecate the protected method MongoCollection::toIndexString
* [PHP-807] - Rewrite to_index_string to use smart_str and a real C function
* [PHP-812] - Remove unused MongoDBRef::$refKey and MongoDBRef::$idKey
* [PHP-837] - Handle cursor IDs for return with MongoCursor::info on 32bit platforms
* [PHP-851] - Add MONGO_HAVE_* constants and make sure MINFO contains this too
* [PHP-880] - New write operation method for insert, update, remove
* [PHP-886] - Add support for secondaryAcceptableLatencyMS
* [PHP-903] - Improve the Stream Notification API
* [PHP-941] - Throw MongoConnectionException on stream failures
* [PHP-942] - Throw MongoDuplicateKeyException on duplicate key errors
* [PHP-971] - Remove mongo.native_long for 32bit platforms
* [PHP-990] - Implement Batch Write API

** New Feature
* [PHP-819] - Add Mongo[DB|Collection]->[get|set]WriteConcern()
* [PHP-831] - SASL Support (SASL Plain)
* [PHP-832] - SASL Support (SASL Kerberos)
* [PHP-861] - Add maxTimeMS() method to MongoCursor to configure the maximum time a query can take
* [PHP-868] - Method to check if string is a valid ObjectId
* [PHP-873] - Support the MONGODB-X509 authentication mechanism
* [PHP-875] - Add support for cursor for aggregation
* [PHP-876] - Make the driver check for the server version upon connection
* [PHP-923] - Drivers should only talk to servers with overlapping wire versions
* [PHP-944] - Support $out aggregation pipeline operator
* [PHP-951] - Provide API for getting latest server version or isMaster response in driver
* [PHP-962] - Create constants for additional binary data subtypes
* [PHP-965] - Documentation for MongoId::isValid()

** Task
* [PHP-657] - Add deprecation notice to MongoCursor::slaveOkay
* [PHP-714] - Convenience macro for getting mongoclient*
* [PHP-786] - Sort out includes
* [PHP-809] - Deprecate use of "safe" all over collection.c
* [PHP-844] - driver must authenticate before calling isMaster()
* [PHP-845] - Ability to use different SPN on the driver for Kerberos Authentication
* [PHP-983] - Change nUpdated to nMatched in bulk api results

** Sub-task
* [PHP-763] - Create prototypes for MongoClient and Mongo classes
* [PHP-794] - Remove 'fd' property of MongoCursorException
* [PHP-797] - Deprecate public properties
* [PHP-798] - Rename "timeout" to "socketTimeoutMS" in $options
* [PHP-804] - Deprecate Mongo::connectUtil
* [PHP-818] - Deprecate "Mongo" in favour of MongoClient.
* [PHP-824] - Deprecate the "wtimeout" option in crud operations for wTimeoutMS
1.4.5 ** Bug
* [PHP-915] - batchSize() can not be called after a cursor has been iterating contradicting documentation
* [PHP-925] - Reading a GridFS file from a secondary server using PHP requires write access
* [PHP-939] - Slow connection in 1.4+
1.4.4 ** Bug
* [PHP-773] - Fix the persistence issue with logging stream contexts
* [PHP-874] - New Replica Set connections hang when secondaries are creating indexes during initialSync
* [PHP-893] - Fix documentation of MongoCursor::$timeout default value
* [PHP-894] - BSON decoding segfaults if string length prefix is zero
* [PHP-896] - BSON decoding segfaults reading past buffer endpoint
* [PHP-898] - Cursor exception should not print strerror() as int
* [PHP-901] - Detect server state changes
* [PHP-906] - Segmentation Fault - in mongo_deregister_callback_from_connection when calling MongoClient->close(true)
* [PHP-907] - BSON decoding of DBPointer does not set MongoId::$id property
* [PHP-912] - PHP driver should use SSLv23 instead of TLS
1.4.3 ** Bug
* [PHP-382] - When 'replicaSet' option is used, authentication calls are being sent to the arbiter server
* [PHP-392] - Arbiter in the seed list acts wonky
* [PHP-869] - ReadPreference.PrimaryPreferred + Tag sets should send to primary if available
* [PHP-877] - auto gen _id clashes on heavy inserts
* [PHP-885] - Segfault on request shutdown when using save()
* [PHP-890] - PHP Driver crashes on shutdown

** Improvement
* [PHP-423] - MongoDate support for 64-bit timestamps on 32-bit systems
1.4.2 ** Bug
* [PHP-706] - Busy loop when a file descriptors exceed 1024
* [PHP-850] - Conditional jump on empty server name to MongoClient
* [PHP-853] - MongoCollection::batchInsert() exceptions can obscure BSON encoding exceptions
* [PHP-858] - Crash when extending Mongo and MongoClient classes and not calling its constructor
* [PHP-872] - Driver should prevent \0 characters in keys, collection and database names
1.4.1 ** Bug
* [PHP-814] - Passing in invalid MongoDB to MongoDBRef::get() segfaults
* [PHP-816] - MongoCursor doesn't validate the namespace
* [PHP-827] - Segfault on connect when database name starts with an X
* [PHP-829] - Crash when connecting to replicaSet without passive hosts
* [PHP-846] - Connecting to Unix Domain sockets is impossible

** Improvement
* [PHP-747] - Improve numeric check for write concern option
* [PHP-755] - Support CursorNotFound query flag
* [PHP-756] - Support QueryFailure query response flag

** Task
* [PHP-551] - Update "writes" documentation to cover all WriteConcerns arguments (from the connection string) as well.
* [PHP-836] - Fix more for-type tests after finding with hash_find
* [PHP-839] - Look at inclusion of config-w32.h and config.h in package
1.4.0 ** Improvement
* [PHP-303] - Support the autoIndexId option for createCollection
* [PHP-316] - When using replica sets and setSlaveOkay queries slow if a secondary is down...
* [PHP-371] - Replication connection string hangs for quite some time when a machine that is listed is physically down
* [PHP-490] - "nolock" option in MongoDB::execute method
* [PHP-537] - Update limits according to default (16MB) or server info (maxMessageSizeBytes)
* [PHP-572] - Add support for "journal" and "fsync" connection string options
* [PHP-610] - Remove the mongo.utf8 setting
* [PHP-651] - Slow connection to the replica set with one member down
* [PHP-686] - Constant attempt to reconnect to a down server takes too long
* [PHP-744] - Support the oplog_replay query flag
* [PHP-775] - MongoCursor->hint() can't hint on a index by name
* [PHP-790] - MongoCollection write operation wtimeout option inconsistent with connection string wTimeoutMS option

** New Feature
* [PHP-664] - Add support for SSL and certificate validation

** Bug
* [PHP-296] - Many of the zend_hash_find calls for options etc do not check or convert correctly for datatype issues.
* [PHP-447] - Inconsistent error for unsupported database commands on mongod and mongos
* [PHP-508] - Change BSON ID generation to use random "increment"
* [PHP-554] - MongoId should not get constructed when passing in an invalid ID.
* [PHP-653] - is_master() failing with mongodb <= 1.8.3
* [PHP-675] - Test for PHP-511 broken
* [PHP-693] - MongoCursor timeout not used when reading data
* [PHP-696] - mongo_io_wait_with_timeout() waits 10 seconds instead of one for "no socket timeout"
* [PHP-698] - Segmentation Fault - in mongo_deregister_callback_from_connection when calling MongoClient->close()
* [PHP-704] - Incorrect failure checks for stream reads
* [PHP-707] - Replication with 1.8 does not work
* [PHP-715] - Crash in PHP driver on Apache
* [PHP-717] - (Almost) All tests leak and has a unconditional jump
* [PHP-718] - ZTS Broken in master
* [PHP-723] - Possibly invalid read in MongoCollection getter
* [PHP-731] - Memory leak during failover
* [PHP-732] - Improve error message during failover
* [PHP-734] - Possible segfaults when error_message is not set
* [PHP-735] - Queries/commands to mongos should inherit read preferences from MongoDB and MongoCollection objects
* [PHP-736] - MongoClient connection fails if RP tags match nothing
* [PHP-737] - Missing RP tags parse error message using MongoClient options array
* [PHP-741] - Passive replicaset members (priority=0) not used for secondary reads
* [PHP-746] - The getBytes method may return random data in particular conditions.
* [PHP-751] - When a secondary goes into recovery mode, we should disconnect from it
* [PHP-759] - Write operations apply ReadPreferenceTags when finding primary
* [PHP-770] - Missing error code for "field names must be strings" MongoException
* [PHP-776] - MongoCollection::batchInsert() with empty options array segfaults
* [PHP-779] - Cannot read from secondaries when connecting directly (standalone connection)
* [PHP-781] - MongoCollection::count() should not leak, and throw exception instead of returning GLE document
* [PHP-792] - Memory leak while reading an INT64 on a 32bit platform with native_long enabled
* [PHP-795] - MongoCode segfaults when internal 'code' property is modified
* [PHP-800] - Error codes for some errors in bson.c are re-used.

** Deprecated Functionality
* [PHP-780] - Deprecate slaveOkay & timeout URI options
* [PHP-793] - Add deprecation notice to non-array options for MongoDB::createCollection
* [PHP-801] - Deprecate boolean options to MongoCollection::insert()
* [PHP-802] - Deprecate boolean options to MongoCollection::ensureIndex()
* [PHP-805] - Deprecate (for real) the "chunks" option in MongoGridFS::__construc

** Task
* [PHP-314] - Improve connection string documentation/pooling
* [PHP-437] - Update ZEND_MODULE_API_NO to use PHP_VERSION_ID to be more clear
* [PHP-475] - Create functional phpt tests for read preference exceptions
* [PHP-496] - Added a few examples to MongoDB::runCommand() for more examples
* [PHP-542] - Put all exception classes into their own file(s)
* [PHP-563] - Strongly advise users not to create immortal MongoCursors
* [PHP-674] - Remove mention of OSX/Windows GitHub downloads from documentation
* [PHP-694] - Split out types and gridfs classes into their own files.
* [PHP-695] - Remove mention of PHPUnit from documentation
* [PHP-702] - DOC - Support the autoIndexId option for createCollection
* [PHP-725] - Re-organise option parsing in mcon/parse.c
* [PHP-738] - Add replica set tags to test suite
* [PHP-745] - Add Replicaset Tags to sharding test suite
* [PHP-748] - Add vim modelines
* [PHP-749] - Improve fragile checks for max_message_size in tests
* [PHP-767] - Create prototypes for GridFS classes
* [PHP-768] - Create prototypes for MongoCollection class
* [PHP-771] - Time expectations mongo.is_master_interval test are fragile
* [PHP-788] - Document journal/fsync MongoClient connection options
* [PHP-789] - Document fsync, j, and wtimeout options for MongoCollection write operations
1.4.0RC1 ** Bug
* [PHP-776] - MongoCollection::batchInsert() with empty options array segfaults
* [PHP-781] - MongoCollection::count() should not leak, and throw exception instead of returning GLE document
* [PHP-792] - Memory leak while reading an INT64 on a 32bit platform with native_long enabled
* [PHP-795] - MongoCode segfaults when internal 'code' property is modified
* [PHP-800] - Error codes for some errors in bson.c are re-used.

** Improvement
* [PHP-744] - Support the oplog_replay query flag
* [PHP-775] - MongoCursor->hint() can't hint on a index by name

** Task
* [PHP-475] - Create functional phpt tests for read preference exceptions
* [PHP-780] - Deprecate slaveOkay & timeout URI options
* [PHP-788] - Document journal/fsync MongoClient connection options
* [PHP-793] - Add deprecation notice to non-array options for MongoDB::createCollection
* [PHP-801] - Deprecate boolean options to MongoCollection::insert()
* [PHP-802] - Deprecate boolean options to MongoCollection::ensureIndex()
* [PHP-805] - Deprecate (for real) the "chunks" option in MongoGridFS::__construct
1.4.0beta1 ** Bug
* [PHP-296] - Many of the zend_hash_find calls for options etc do not check or convert correctly for datatype issues.
* [PHP-316] - When using replica sets and setSlaveOkay queries slow if a secondary is down...
* [PHP-371] - Replication connection string hangs for quite some time when a machine that is listed is physically down
* [PHP-447] - Inconsistent error for unsupported database commands on mongod and mongos
* [PHP-508] - Change BSON ID generation to use random "increment"
* [PHP-554] - MongoId should not get constructed when passing in an invalid ID.
* [PHP-651] - Slow connection to the replica set with one member down
* [PHP-653] - is_master() failing with mongodb <= 1.8.3
* [PHP-664] - Add support for SSL and certificate validation
* [PHP-675] - Test for PHP-511 broken
* [PHP-686] - Constant attempt to reconnect to a down server takes too long
* [PHP-693] - MongoCursor timeout not used when reading data
* [PHP-696] - mongo_io_wait_with_timeout() waits 10 seconds instead of one for "no socket timeout"
* [PHP-698] - Segmentation Fault - in mongo_deregister_callback_from_connection when calling MongoClient->close()
* [PHP-704] - Incorrect failure checks for stream reads
* [PHP-707] - Replication with 1.8 does not work
* [PHP-715] - Crash in PHP driver on Apache
* [PHP-717] - (Almost) All tests leak and has a unconditional jump
* [PHP-718] - ZTS Broken in master
* [PHP-723] - Possibly invalid read in MongoCollection getter
* [PHP-731] - Memory leak during failover
* [PHP-732] - Improve error message during failover
* [PHP-734] - Possible segfaults when error_message is not set
* [PHP-735] - Queries/commands to mongos should inherit read preferences from MongoDB and MongoCollection objects
* [PHP-736] - MongoClient connection fails if RP tags match nothing
* [PHP-737] - Missing RP tags parse error message using MongoClient options array
* [PHP-741] - Passive replicaset members (priority=0) not used for secondary reads
* [PHP-746] - The getBytes method may return random data in particular conditions.
* [PHP-748] - Add vim modelines
* [PHP-751] - When a secondary goes into recovery mode, we should disconnect from it
* [PHP-759] - Write operations apply ReadPreferenceTags when finding primary
* [PHP-770] - Missing error code for "field names must be strings" MongoException
* [PHP-779] - Cannot read from secondaries when connecting directly (standalone connection)

** Improvement
* [PHP-437] - Update ZEND_MODULE_API_NO to use PHP_VERSION_ID to be more clear
* [PHP-572] - Add support for "journal" and "fsync" connection string options
* [PHP-702] - DOC - Support the autoIndexId option for createCollection
* [PHP-738] - Add replica set tags to test suite
* [PHP-745] - Add Replicaset Tags to sharding test suite
* [PHP-749] - Improve fragile checks for max_message_size in tests
* [PHP-771] - Time expectations mongo.is_master_interval test are fragile

** New Feature
* [PHP-303] - Support the autoIndexId option for createCollection
* [PHP-490] - "nolock" option in MongoDB::execute method
* [PHP-716] - Allow cursor to report chosen RS member

** Task
* [PHP-496] - Added a few examples to MongoDB::runCommand() for more examples
* [PHP-506] - Ensure Mongo constructor casts passwords to strings
* [PHP-537] - Update limits according to default (16MB) or server info (maxMessageSizeBytes)
* [PHP-542] - Put all exception classes into their own file(s)
* [PHP-563] - Strongly advise users not to create immortal MongoCursors
* [PHP-610] - Remove the mongo.utf8 setting
* [PHP-674] - Remove mention of OSX/Windows GitHub downloads from documentation
* [PHP-694] - Split out types and gridfs classes into their own files.
* [PHP-695] - Remove mention of PHPUnit from documentation
* [PHP-725] - Re-organise option parsing in mcon/parse.c

** Sub-task
* [PHP-767] - Create prototypes for GridFS classes
* [PHP-768] - Create prototypes for MongoCollection class
1.3.7 ** Bug
* [PHP-700] - 'MongoCursorException' with message '127.0.0.1:27017: request/cursor mismatch
1.3.6 ** Improvement
* [PHP-535] - Run commands on Replication Secondaries
1.3.5 ** Improvement
* [PHP-665] - Add support for MongoDB 2.4 auth source
1.3.4 ** Bug
* [PHP-355] - PHP 1.2/1.3 Driver does not honour connection 'timeout'
* [PHP-356] - PHP 1.3.0dev does not honor connection timeout
* [PHP-366] - PHP Mongo's driver has no effects on Mongo Cursor timeout
* [PHP-385] - GridFS::storeFile with a string argument for 2Gb files
* [PHP-457] - Setting batchSize and sorting returns incorrect number of records
* [PHP-491] - Forking and connection handling still fails
* [PHP-539] - Exception when w - on MongoCollection - is set greater than 2
* [PHP-585] - GridFS incorrectly reports w=1 as w=0
* [PHP-586] - GridFS should only do one GLE
* [PHP-592] - Unable to switch to new PRIMARY
* [PHP-609] - MongoGridFS::put no returning MongoId despite inserting file
* [PHP-613] - sort out timeout vs wtimeout mess
* [PHP-630] - Seg faults on OS X
* [PHP-650] - Segmentation fault when using findAndModify()
* [PHP-661] - GridFS memory leaks
* [PHP-667] - Off-by-one error in BSON deserialization of pre-epoch dates
* [PHP-668] - setReadPreference() should allow empty $tags array for primary mode
* [PHP-670] - Remove misplaced MongoId in getIndexInfo() expected ouput docs
* [PHP-672] - MongoGridFSFile::write() leaks memory
* [PHP-673] - Failing tests on mongod 2.3
* [PHP-676] - Collection level write concern overwritten by deprecated "safe" option
* [PHP-679] - setReadPreference() should clear out existing tags if none are provided
* [PHP-680] - mongo_read_preference_dtor() will segfault if invoked twice
* [PHP-681] - setReadPreference() should not modify read preferences if an error occurs
* [PHP-682] - Remove redundant MongoGridFSCursor::key() implementation
* [PHP-683] - Add support for the connectTimeoutMS connection parameter
* [PHP-687] - MongoDate usec not properly decoded on 32-bit platform
* [PHP-688] - Default connect() timeout is 1000 _seconds_, not milliseconds
* [PHP-690] - Percentage symbol is not escaped in error message about duplicate entries
* [PHP-691] - Memory leak during master failover

** New Feature
* [PHP-684] - Support socketTimeoutMs
* [PHP-685] - wtimeout option is not supported per-query

** Task
* [PHP-479] - Fix all compiler warnings
* [PHP-658] - Add error codes for GridFSExceptions througout gridfs.c
* [PHP-666] - Update read preference documentation
* [PHP-669] - Document that setReadPreference() will raise a warning if tags are specified with primary mode
* [PHP-671] - Document array return value for ensureIndex when using write preferences
* [PHP-689] - Tiny test fixes
1.3.3 ** Bug
* [PHP-375] - GridFS segfaults when there are more chunks than expected
* [PHP-603] - MongoGridFS::storeUpload() stores multiple files with same $metadata
* [PHP-617] - Use real error codes for MongoConnectionException on ctor failure
* [PHP-621] - GridFS test tests/generic/bug00320.phpt has a double free issue
* [PHP-627] - MongoConnection::aggregate() helper breaks on single pipeline operator argument
* [PHP-635] - Passing a collection as second argument to MongoCursor::__construct() turns it into a string
* [PHP-636] - MongoConnectionException when Mongo server restarted
* [PHP-637] - Deal with negative timestamps in MongoDate
* [PHP-638] - Read preference get/set methods are not consistent
* [PHP-639] - MongoCursor::slaveOkay() has no effect in 1.3.2
* [PHP-644] - mongo.ping_interval and mongo.is_master_interval is unused
* [PHP-647] - isMaster defaults non-master, non-arbiter connections to secondary
* [PHP-656] - Add host, port and node type to the MongoCursor::info() return value.

** Improvement
* [PHP-383] - Insufficient documentation about the driver-generated document _id passing technique
* [PHP-483] - Implement MongoCursor::setReadPreference()
* [PHP-620] - Update PHP documentation regarding the "n" value that is returned on write acknowledged operations

** Task
* [PHP-387] - Add examples to GridFS storeBytes, storeFile and storeUpload functions
* [PHP-479] - Fix all compiler warnings
1.3.2 ** Bug
* [PHP-308] - Incorrect method declaration
* [PHP-418] - Use descending date order for changelog entries
* [PHP-612] - Impossible to provide a list of tagsets to the readPreferenceTags options
* [PHP-623] - Segmentation fault (11)
* [PHP-625] - the windows 1.30+ dll MongoCollection findandmodify method will throw a excption which not on linux platform
* [PHP-629] - Missing support for passing the username/password in the $options array
* [PHP-631] - One replica set, but two different db/user/passwords
* [PHP-632] - MongoDB::authenticate() no longer attempts to authenticate, and doesn't return anything either
* [PHP-633] - findAndModify sometimes throws exception on success
* [PHP-634] - Mongo PHP driver v1.3.1/1.3.2RC1 fail to connect to mongoDB 1.6.3
* [PHP-640] - The secondaryPreferred read preference always considers the primary node too.
* [PHP-641] - MongoLog::setModule/setLevel don't reset for each request

** Improvement
* [PHP-317] - slaveOk option not documented in Mongo.__construct()
* [PHP-529] - Document that MongoCollection::save() may set _id
* [PHP-626] - Implement Read Preferences support with sharding.
1.3.2RC1 ** Bug
* [PHP-308] - Incorrect method declaration
* [PHP-418] - Use descending date order for changelog entries
* [PHP-612] - Impossible to provide a list of tagsets to the readPreferenceTags options
* [PHP-625] - the windows 1.30+ dll MongoCollection findandmodify method will throw a excption which not on linux platform
* [PHP-629] - Missing support for passing the username/password in the $options array
* [PHP-631] - One replica set, but two different db/user/passwords
* [PHP-632] - MongoDB::authenticate() no longer attempts to authenticate, and doesn't return anything either
* [PHP-633] - findAndModify sometimes throws exception on success

** Improvement
* [PHP-317] - slaveOk option not documented in Mongo.__construct()
* [PHP-529] - Document that MongoCollection::save() may set _id
* [PHP-626] - Implement Read Preferences support with sharding.
1.3.1 ** Bug
* [PHP-564] - Segfault occurs on some of the queries
* [PHP-580] - Segfault while running phpunit
* [PHP-583] - Replace slave language in MongoClient::getHosts() documentation with read preferences
* [PHP-584] - Update and remove options have reversed keys in the description
* [PHP-590] - Segfaults in Mongo PHP driver 1.3RC3
* [PHP-594] - Review the install guide
* [PHP-595] - Restructure manual
* [PHP-596] - mongo.allow_persistent doesn't exist anymore
* [PHP-597] - Remove mongo.no_id
* [PHP-598] - Incorrect constant values for MongoClient::RP_*
* [PHP-599] - Update Changelog with 1.3. changes
* [PHP-600] - Document MongoClient::getConnections()
* [PHP-601] - Document WriteConcerns
* [PHP-602] - No longer possible to get field information from $cursor->info()
* [PHP-605] - Change in behaviour for return value of unsafe writes
* [PHP-611] - Segfault when no candidate servers found
* [PHP-616] - MongoGridFS::get() only accepts MongoId arguments
* [PHP-618] - PHP Driver failure on OSX
* [PHP-619] - Connection failure
* [PHP-622] - MINKEY is not deserialized properly when reading back from MongoD (on 32bit platforms)

** Improvement
* [PHP-561] - Handle empty database name better

** Task
* [PHP-544] - Update any documentation and tutorials for w=1 default and MongoClient usage
* [PHP-558] - Document Mongo::getConnections()
* [PHP-566] - Update setSlaveOkay documention to reflect deprecation correctly, and point to setReadPreference/connection strings
* [PHP-567] - Update "queries" documentation at http://www.php.net/manual/en/mongo.queries.php to show the new read preferences
* [PHP-588] - Update versions.xml in documentation
* [PHP-589] - Rename master/slave to primary/secondary in documentation
1.3.0 ** Bug
* [PHP-576] - mongo.is_master_interval unused
* [PHP-577] - mongo.ping_interval unused
* [PHP-590] - Segfaults in Mongo PHP driver 1.3RC3

** Improvement
* [PHP-587] - Change readPreference constants to be strings

** Task
* [PHP-545] - Update presentations for write=1 default and MongoClient
* [PHP-575] - Handle email to library owners regarding w=1 by default
* [PHP-591] - Check whether all MLOG modules and levels are correctly applied
1.3.0RC3 ** Bug
* [PHP-543] - mongo::connect() should return a bool value
* [PHP-568] - The driver crashes after having copied a server definition to resolve authenticated connections
* [PHP-574] - Problems with auth-switch and wrong credentials

** Improvement
* [PHP-569] - Add support for w=0 and make sure append_getlasterror sets the correct flags

** New Feature
* [PHP-557] - Implement w=0/w=1 as specific values for writeConcerns.

** Task
* [PHP-565] - Add license headers to the files in mcon/
1.3.0RC2 ** Bug
* [PHP-377] - Uncaught exception 'MongoCursorException' with message 'couldn't send query: ' from PHP
* [PHP-559] - The wrong connection is sometimes picked when there are two connections open
* [PHP-334] - Close connection with ReplicaSet

** Improvement
* [PHP-171] - It'd be nice if mongo was playing nicely with pcntl php extension

** Task
* [PHP-491] - Forking and connection handling still fails
* [PHP-552] - Document connection string options
* [PHP-553] - Make 1.3.x work with PHP 5.2.x
* [PHP-562] - Document changes to Mongo::close().
1.3.0RC1 This is the first release candidate of the 1.3 series. The 1.3 series are
a major improvement with a completely rewritten connection handling backend. It has been
rewritten to form a new improved framework for handling connections. On top of
this new framework, new functionality is also implemented to provide read
preference support that comes with MongoDB 2.2. The new framework no longer has
the concept of a connection pool, but instead make sure there is only one
connect per node/db/username.

New major features in this release to support the MongoDB 2.2 release:

- Support for the aggregation framework through the aggregate() helper.
- Support for read preferences and read preference tags (See:
http://docs.mongodb.org/manual/applications/replication/#replica-set-read-preference)
- Support for connections to multiple mongos nodes.

The whole list of resolved tickets (since 1.3.0beta2) follows:

** Bug
* [PHP-202] - Too many open files
* [PHP-285] - Cursor not found sometimes when slaveOkay in replica set
* [PHP-315] - Random "unauthorized db" messages
* [PHP-321] - Lazy loading of connections doesn't work with Replica Sets
* [PHP-347] - MongoPool not working as expected when using php-fpm / cgi - a pool seems to be created per each child process
* [PHP-350] - couldn't send query:
* [PHP-364] - Stale connection in connection pool after restarting MongoDB server
* [PHP-373] - Overriding batchInsert
* [PHP-411] - Mongo says it is connected.. when it isn't. (when connecting to replicaset)
* [PHP-424] - cannot determine master when slave(s) are down
* [PHP-426] - Connection pool not paying attention to authentication when using replicaSet=true
* [PHP-464] - Re-implement ->connected
* [PHP-468] - Undefined behavior calling MongoGridFSFile::write() without a filename
* [PHP-471] - Update documentation for MongoGridFSCursor::key() returning ObjectId instead of filename
* [PHP-480] - Throw an error when not all members of the seed lists are in the same replicaset
* [PHP-481] - setSlaveOkay / read preferences don't set slaveOkay flag correctly.
* [PHP-482] - Aggregate() method leaks
* [PHP-484] - Authenticating against normal db doesn't work
* [PHP-485] - Update (and other methods) in safemode crash under certain conditions.
* [PHP-486] - GridFS cleanup routines remove existing files
* [PHP-487] - Connect to replicaset member in standalone mode
* [PHP-488] - GridFS failures no longer throw MongoGridFSException
* [PHP-489] - is_master() crashes for standalone servers
* [PHP-499] - Re-order changelogs in documentation
* [PHP-500] - MongoCollection insert, update and remove no longer return booleans
* [PHP-502] - w can pick up garbage memory
* [PHP-504] - Build error on FreeBSD (missing sys/socket.h)
* [PHP-507] - Chunks are not removed completely when using the justOne option with MongoGridFS::remove
* [PHP-510] - Memory leak in GridFS
* [PHP-511] - Setting slaveOkay on MongoDB doesn't get passed properly to MongoCollection
* [PHP-512] - RS handover is not handled correctly
* [PHP-515] - Re-implement ->close()
* [PHP-518] - Segmentation Fault with php-1.2.12
* [PHP-521] - Build failures with PHP 5.2 and 5.4.
* [PHP-528] - MongoLog::getCallback() segfaults if no callback was set.
* [PHP-533] - Callback map for destroying cursors
* [PHP-548] - Make the w property support string

** Improvement
* [PHP-176] - Ability to choose which slaves to (not) read from
* [PHP-218] - Add driver standard connection URI options
* [PHP-292] - Mention MongoPool::setSize makes connection creation block if no connections available
* [PHP-298] - Support safe write default through the connection string
* [PHP-459] - MongoCollection::update doc should have a note about bug #PHP-50
* [PHP-492] - Implement a method to return all opened connections
* [PHP-501] - Add Unix domain socket support back into the driver
* [PHP-516] - Document sparse and expireAfterSeconds index options
* [PHP-522] - Support w, and wtimeout in connection string
* [PHP-526] - Create new exception to be thrown for runtime errors in command helpers
* [PHP-532] - Return full result document from command wrappers

** Question
* [PHP-271] - MongoCursorException - Couldn't get response header
* [PHP-274] - Connection pooling a replica shutdon

** Task
* [PHP-412] - Connecting to replicaset with authentication without providing any credentials..
* [PHP-414] - Revise MongoLog documentation
* [PHP-460] - Add docs mention of connecting to a sharded cluster / mongos
* [PHP-476] - Add documentation for the Aggregate Framework
* [PHP-477] - Add documentation for read preferences
* [PHP-478] - Compile and test on Windows
* [PHP-479] - Fix all compiler warnings
* [PHP-493] - Make aggregate to return the full command document, and not just the "result" field.
* [PHP-494] - Document MongoCollection::findAndModify()
* [PHP-495] - Make findAndModify() to return the full command document, and not just the "value" field.
* [PHP-497] - Make authentication documentation more explicit
* [PHP-498] - Check default database for authentication in 1.3.x
* [PHP-505] - Document MongoLog::setCallback
* [PHP-519] - Document un-deprecation of get/setSlaveOkay() for 1.2.12
* [PHP-520] - Remove MongoDB::authenticate() example from connection documentation
* [PHP-531] - Restore MongoPool class/methods as no-ops with deprecation warnings
1.3.0beta2 This is the second beta of the 1.3 release. The 1.3 release is a new major
release, which has a rewritten connection handling backend. It has been
rewritten to form a new improved framework for handling connections. On top of
this new framework, new functionality is also implemented to provide read
preference support that comes with MongoDB 2.2. The new framework no longer has
the concept of a connection pool, but instead make sure there is only one
connect per node/db/username.

We also have introduced some deprecation notices for features and methods that
are going to disappear in version 2 of the driver, which we plan to release
before the end of the year.

New major features in this release to support the MongoDB 2.2 release:

- Support for the aggregation framework through the aggregate() helper.
- Support for read preferences and read preference tags (See:
http://docs.mongodb.org/manual/applications/replication/#replica-set-read-preference)
- Support for connections to multiple mongos nodes is not implemented yet.

Known issues (to be addressed before 1.3.0):

- It has not been tested on anything but Linux.

The rest of the standard changelog:

** Bug
* [PHP-158] - Persistent connections: Dropped connections not detected
* [PHP-462] - ping_interval reconnect logic breaks forked processes
* [PHP-463] - Specifying multiple hostnames for a standalone server fails
* [PHP-465] - Marking connections as failed isn't supported
* [PHP-466] - Seed list of 1 replicaset member, and one standalone, with array("replicaSet" => true) fails
* [PHP-469] - MongoGridFS::remove() does not support filename argument
* [PHP-472] - Compile Error
* [PHP-473] - Sort by field "0" (zero char, ASCII 0x30) does not work

** Improvement
* [PHP-268] - Implement ReadPreferences + Slave Timing Buckets + Deprecate SlaveOk

** New Feature
* [PHP-421] - Aggregation helper

** Task
* [PHP-450] - Port GridFS tests from PHPUnit to phpt
1.3.0beta1 This is a new major release, which has a rewritten connection handling
backend. It has been rewritten to form a new improved framework for
handling connections. On top of this new framework, new functionality is
also implemented to provide read preference support that comes with
MongoDB 2.2. The new framework no longer has the concept of a connection
pool, but instead make sure there is only one connect per
node/db/username.

We also have introduced some deprecation notices for features and methods that
are going to disappear in version 2 of the driver, which we plan to release
before the end of the year.

New major features in this release to support the MongoDB 2.2 release:

- Support for the aggregation framework through the aggregate() helper.
- Support for read preferences and read preference tags (See:
http://docs.mongodb.org/manual/applications/replication/#replica-set-read-preference)

Known issues (to be addressed before 1.3.0):

- Authentication has not been implemented it, so this release will only work
for installations without authentication enabled.
- Support for connections to multiple mongos nodes is not implemented yet.
- It has not been tested on anything but Linux.

The rest of the standard changelog:

** Bug
* [PHP-293] - listCollections
* [PHP-300] - execute crashes with array() as argument
* [PHP-354] - CLONE - "couldn't send query: Broken pipe" when using forked processes in 1.2.9
* [PHP-373] - Overriding batchInsert
* [PHP-429] - MongoDB::selectCollection() causes Segmentation fault
* [PHP-433] - GridFS safe option overwritten
* [PHP-436] - MongGridFS::storeUpload() breaks on HTML5 multiple file upload
* [PHP-445] - Cannot use mongo.default_host with Mongo constructor options
* [PHP-446] - Uncaught exception 'MongoCursorException' with message 'couldn't send query: ' when find()ing items on an empty collection
* [PHP-454] - Memory leak when many inserts
* Note: More might have been fixed, but those issues need to be verified
first.

** Improvement
* [PHP-270] - ext/mongo classes should return meaningful results from Reflection API
* [PHP-389] - Support setting query flags (opts)
* [PHP-403] - bson_encode and bson_decode should trigger warnings for non-document BSON objects

** New Feature
* [PHP-79] - GridFS stream wrapper
* [PHP-117] - Implement findAndModify
* [PHP-280] - Allow MongoLog to log to Pear Log module

** Question
* [PHP-333] - MongoGridFSCursor::key
1.2.12 ** Bug
* [PHP-443] - Add zend_parse_parameters_none for PHP 5.2 builds
* [PHP-444] - Undeprecate getSlaveOkay()/setSlaveOkay() on Mongo, MongoDB
and MongoCollection; and getSlave() on Mongo.

** Improvement
* [PHP-442] - Fixed a typo in "MongoBinData::__construct(): The default
value for type will change to 0 in the future"
1.2.11 ** Bug
* [PHP-207] - setSlaveOkay not supported for GridFS queries
* [PHP-266] - segfault when connection string refers to unknown replica set member
* [PHP-269] - Mongo::__construct should only throw MongoConnectionException
* [PHP-331] - PHP segfaults when master changes
* [PHP-339] - Seg fault on insert timeout
* [PHP-359] - getPID() does not return expected PID when called on custom MongoID object
* [PHP-368] - uploadDate is missing in the file property of the MongoGridFSFile class.
* [PHP-369] - GridFS segfaults when iterating with an _id field set in the result object
* [PHP-372] - Error codes not being passed to MongoGridFSException
* [PHP-382] - When 'replicaSet' option is used, authentication calls are being sent to the arbiter server
* [PHP-384] - Segfault for GridFS with long_as_object option
* [PHP-388] - Cursors don't get closed after limit() is exhausted
* [PHP-391] - The driver crashes when there are more than FD_SETSIZE open file descriptors.
* [PHP-392] - Arbiter in the seed list acts wonky
* [PHP-394] - Crashes & mem leaks
* [PHP-397] - Endless loop on non-existing file
* [PHP-402] - MongoCollection::validate(true) doesn't set the correct scan-all flag.
* [PHP-408] - MongoBinData custom type is returned as -128
* [PHP-413] - Authentication with wrong password.. prints the password!
* [PHP-417] - MongoDBRef::isRef() returns null in some cases it should return false
* [PHP-420] - MongoDB::drop() doesn't warn about arguments
* [PHP-431] - PHP driver throws tons of NOTICE messages
* [PHP-434] - Mongo::connect() doesn't validate the object
* [PHP-435] - 1.2.11 doesn't build with PHP5.2

** Improvement
* [PHP-389] - Support setting query flags (opts)
* [PHP-428] - Coverage statistics
* [PHP-430] - Deprecate "old ways" which will be removed in 2.0.0

** Task
* [PHP-405] - Migrate PHPUnit tests to phpt
1.2.10 ** Bug
* [PHP-329] - MongoCursorException with Apache while master steps down
* [PHP-335] - 1.2.8/1.2.9 don't compile with PHP < 5.3
* [PHP-337] - failover with replicaset
* [PHP-340] - MongoCursorException - could not determine master
* [PHP-343] - PHP segfaults when adding a file to GridFS after upgrade to 1.2.9
* [PHP-344] - Segmentation Fault on $grid->storeFile('foo', $bar)
* [PHP-346] - getGridFS followed by storeBytes hangs request indefinitely
* [PHP-349] - MongoCursorTimeoutException causes connections not to close
* [PHP-351] - php driver doest close connection , when catch cursor timed out exception.
* [PHP-353] - Iterator key not set when _id field is not requested
* [PHP-361] - Mongo::getHosts() segfaults (at least when not connecting to a replica set)

** Improvement
* [PHP-352] - Return only one element after "iterator_to_array()" if exclude "_id" from field list
1.2.9 BUG FIXES

* ZTS compile fixes
* Re-package due to bug in PEAR/PECL packaging system
1.2.8 BUG FIXES

* PHP-306 - MongoID::__set_state does not work
* PHP-307 - getHosts() not working with 1.2.7
* PHP-311 - Apache httpd segfault with PHP mongo 1.2.7
* PHP-312 - Seg fault with curl POST + mongo replicaset close
* PHP-313 - Kill cursor can be called on a different connection than the one the cursor was created on
* PHP-319 - Issues when the the driver tests for other connections to close if it find a "bad connection".
* PHP-320 - GridFS doesn't check for correct insertion of file-meta-document
* PHP-325 - mongo-php-driver abort with SEGV
1.2.7 BUG FIXES

* PHP-204: ClusteredCursor::query not throwing an Exception
* PHP-262: Added persistent replicaSet container
* PHP-277: Remove cursor from list on cursor reset
* PHP-279: Make accessing connected property quiet
* PHP-286: Try ping on another connection when one fails
* PHP-300: Fixed segfault when execute() is given array() as argument.
* Make mongoLog settings thread safe.
* Fixed memory leaks
* Fixed issues with connection pooling

NEW FEATURES

* PHP-233: Added the continueOnError flag to batch_insert().
* PHP-268: Add slave buckets
* PHP-272: Randomly choose slaves from a given bucket
1.2.6 BUG FIXES

* Patched connection closing code (Carlos Rodriguez)
1.2.5 ENHANCEMENTS

* Add connection information to cursor exceptions, see
MongoCursorException::getHost.

* Allow metadata to be sent using MongoGridFS::storeUpload.

* Connections are now fork-safe.

* Removed username/password from connection URI parse exception message.

* Slight optimization of receiving database responses.

BUG FIXES

* Fixed replica set master determination with authentication enabled (which
would cause "invalid command" errors and segmentation faults).
1.2.4 ENHANCEMENTS

* Added MongoLog::SERVER logging.

BUG FIXES

* Fixed compile for OS X.

* Fixed segfault with authentication on.

* Fixed "_isSelf not found" error.

* Allow non-replica-set connections to reconnect.

* Do not sleep for 0ms before initial query attempt (Hiroaki Kubota)
1.2.3 ENHANCEMENTS

* Now compatible with PHP 5.4.

* Added MongoPool class for pool-related functionality:
- MongoPool::info() for pool information (equivalent to Mongo::poolDebug())
- MongoPool::setSize() to set max pool size (equivalent to Mongo::setPoolSize())
- MongoPool::getSize() to get max pool size (equivalent to Mongo::getPoolSize())

* Added MongoLog class for logging. Logging defaults to off, but log level
and what should be logged (e.g., io activity or replica set status) can be
tuned.

* Creating new instances of MongoId is faster.

BUG FIXES

* New connections created for replica sets now propegate custom timeouts set
on the original connection.

* Fix for replica set authentication. Connecting to a replica set with
"mongodb://user:pass@host" syntax would lose authentication info.
1.2.2 Retry queries when safe to do so (minimizing exceptions on failover).
Block for "timeout" milliseconds when a connection pool is empty.
Fix a segfault affecting authentication to a single server.
Fix a segfault affecting deserialization of data larger than 4MB.
1.2.1 More aggressive connection pool cleanup.
Fix replicaSet => false regression (1.2.0 would use a replica set connection
if replicaSet=>false was specified).
OS X Lion compile
1.2.0 Uses nearest slave for reads with replica set connections.
Connection pooling
Autodetection of max BSON object size
1.1.4 Fix MongoTimestamp serialization
Throw exception when an empty collection name is given
Be more paranoid about recv errors
Automatically reset query state after running explain()
Hack around some mongos command oddities
1.1.3 Fixed non-persistent connection regression.
1.1.2 Fixed PECL packaging.
1.1.1 Fixed replica set persistent connection bug (PHP-184).
Make logging build use PHP logs.
Eliminate sharedFixture from test suite (PHP-180).
Made MongoTimestamp handle 64-bit integers correctly (PHP-179).
1.1.0 Replica set reads can be distributed to slaves. This can be done by calling
setSlaveOkay on a connection, database, or collection. You can see the slave
that will be used with Mongo::getSlave and see/refresh the set status with
Mongo::getHosts.You can now see the server used for a query with
MongoCursor::info.
Added mongo.no_id php.ini option.
Better exception is thrown when the database is corrupt.
Fixed MongoDB::createCollection parameter parsing on 64-bit machines.
1.0.11 Better replica set connection error handling
Added MongoCursor::batchSize()
Added mongo.allow_empty_keys option
Added unique codes for all MongoExceptions and MongoCursorExceptions
Added MongoId::getPID() and MongoId::getInc() methods
Added $id field to MongoId so that json_encode turns it into {$id:...}
Fixed cursor timeout bug
1.0.10 Make reconnection more aggressive
Fix cursor killing bug
Exception codes match database error codes
Fixed bindata types on 64-bit systems
Added query state and cursor id fields to MongoCursor::info
1.0.9 Added 64-bit integer handling: see docs MongoInt32, MongoInt64, and ini
options (Derick Rethans)
Replica set support
Added support for domain sockets
w and fsync options are customizable per operation
Added MongoCollection::ASCENDING and DESCENDING constants
1.0.8 Added w and wtimeout. GridFS: added get, put, and delete methods, index
checks on all methods, added fields param to GridFS::findOne. Fixed some
error messages (authentication and BSON deserialization) and handling (for
large messages and field names passed as integers). Fixed a couple of double
frees and an incorrect cursor boundry condition. Added MongoId::__set_state
and MongoId::getHostname (to see the hostname hashed for unique ids).
1.0.7 The bug fix release! A zillion bugfixes and the new static
MongoCursor::$timeout property for setting a default timeout for requests.
Bug fixes include count error handling, fixing double frees with BSON errors
and ensureIndex, a mutex fix for FreeBSD, catching socket connection errors
(William Volkman), database commands propagate exceptions, and cursor killing
is more efficient.
1.0.6 Allow MongoCollection::ensureIndex to create 2D indexes.
Added MongoCursor::fields().
Fixed for big endian machines.
Removed debug statements.
1.0.5 Mutex fixes (especially on Windows) and improvements (failures throw exceptions).
New Cursor::info() function, which gives the query, fields, namespace, limit, and
skip (by Cesar Rodas)
Added safe option for remove, update, batch, and gridfs insert methods.
Added keyf option for MongoCollection::group: pass a MongoCode instance as the
grouping key to use keyf.
Added comparison handlers for MongoId, allowing you to use, for example, in_array
with MongoIds.
1.0.4 Authenticate with any DB (not just admin) on login: "mongodb://username:password@host/db"
Connection timeout option, see doc for Mongo::__construct
Throws exception for non-UTF8 strings
Added Mongo::listDBs function
Added MongoCursor::addOption for $min and $max queries
Tailable cursors fixed
MongoDate segfault fix
NEW - a bunch of mutex/threading stuff... if this doesn't work with your OS's
threading library, please file a bug!
1.0.3 Fix Apache segfault
Cursor timeout
Faster array encoding
1.0.2 Better Mongo::__construct parameters
Getters for Mongo, MongoDB, and MongoCollection
MongoId::getTimestamp
MongoCollection::ensureIndex takes dropDups and safe opts
1.0.1 Big-endian support
MongoCollection::update can affect multiple documents
MongoCursor::count uses limit and skip, optionally
MongoDBRef supports $db
MongoMinKey and MongoMax Key
Cursor::immortal
Constants for binary types
MongoDB::authenticate
1.0.0 Safe insert
Configurable special character
Error methods are on MongoDB, not Mongo
0.9.0 Added classes
5.3 compatible