(name 'Mongo-Core-MartinDias.66' message 'Adding MongoCommandError>>isNotMasterAndSlaveOkIsFalse + minor refactoring in other methods of the same class' id 'b53ae09d-fb84-4c0d-ab07-493f5b81381c' date '4 June 2016' time '3:48:40.281224 am' author 'MartinDias' ancestors ((name 'Mongo-Core-MartinDias.65' message '* Add flags to MongoQuery, so it''s possible to use them in MongoCursor.
* Added missing accessors in Mongo, MongoDatabase and MongoCollection (e.g. #host, #port)
* Add new MongoCommandError testing method (and refactored previous one to reuse code)
' id '3fbf8bd0-773e-4568-aa39-64dea7ae6e86' date '28 May 2016' time '6:58:23.559569 am' author 'MartinDias' ancestors ((name 'Mongo-Core-EstebanLorenzano.64' message 'better like this... no need on check for string everytime, just if ''code'' is not present :) ' id '92e81aed-1790-4ae6-98cb-fd84952bb292' date '25 May 2016' time '1:02:19.447203 pm' author 'EstebanLorenzano' ancestors ((name 'Mongo-Core-EstebanLorenzano.63' message 'added MongoCommandError>>isCollectionAlreadyExists method because Sometimes I do not receive error code (a mistery why). In that case I need to check for errmsg,  an awful way to check an error, but only way in that case."' id 'a970a1a2-f39a-402e-8b80-4e9876de79b1' date '23 May 2016' time '9:05:51.078315 pm' author 'EstebanLorenzano' ancestors ((name 'Mongo-Core-MartinDias.62' message 'Fix query in MongoDatabase>>commandUpdate:with:collection:' id '6ed75157-ec46-4002-b9c9-8172c93646f0' date '18 May 2016' time '1:51:17.179031 am' author 'MartinDias' ancestors ((name 'Mongo-Core-MartinDias.60' message 'Adding MongoCommandError to represent an error ocurred in a Mongo $cmd operation.
MongoNoReplicaSet error no longer necessary, so it''s removed.' id '8b01355c-ff0e-4548-afed-236aab784bb2' date '17 May 2016' time '2:49:10.788492 am' author 'MartinDias' ancestors ((name 'Mongo-Core-MartinDias.59' message 'Adding replica set operations in MongoDatabase' id '4da0afec-34ce-40f2-8fb1-2b21663e343d' date '16 May 2016' time '12:42:04.227623 am' author 'MartinDias' ancestors ((name 'Mongo-Core-MartinDias.58' message 'Minor fix on my previous version.' id '6824c46e-aa72-43e1-ac82-8af9e600a742' date '12 May 2016' time '2:58:11.982109 am' author 'MartinDias' ancestors ((name 'Mongo-Core-MartinDias.57' message 'Adding more support for basic Replica Set: read status.' id '7e2c8df1-a351-4fe5-97d0-eb69c8676044' date '12 May 2016' time '2:15:41.972984 am' author 'MartinDias' ancestors ((name 'Mongo-Core-MartinDias.56' message 'Added basic support to query the Replica Set of a node.' id '3542ac67-9762-411c-875f-b1c94d45d1a0' date '11 May 2016' time '3:26:51.948393 am' author 'MartinDias' ancestors ((name 'Mongo-Core-MartinDias.55' message 'Added experimental #commandUpdate:... API which is analog to #update:... API but using "Mongo command" instead of "Mongo Wire Protocol".' id '67984361-5893-4c30-a0ad-61a27567d6e9' date '9 May 2016' time '9:34:21.419354 pm' author 'MartinDias' ancestors ((name 'Mongo-Core-MartinDias.52' message 'Added experimental #commandUpdate:... API which is analog to #update:... API but using "Mongo command" instead of "Mongo Wire Protocol".' id '9ef50f3e-2e1f-4ac7-b4e2-843e0943057c' date '9 May 2016' time '2:36:26.2765 am' author 'MartinDias' ancestors ((name 'Mongo-Core-NorbertHartl.50' message 'Changed addCollection: to throw an error when adding a collection that already exists. Introduced getCollection: that uses addCollection: to retrieve a collection but ignores the error if it is occurring' id 'be7a1d3b-ce94-4104-b100-f23ebed26127' date '18 March 2016' time '4:03:29.931042 pm' author 'NorbertHartl' ancestors ((name 'Mongo-Core-MartinDias.49' message 'Make MongoDatabase>>addCollection:capped:size:max: tolerate error 48, i.e. collection already exists. This was the behavior for adding a collection before version  44 of this package.' id '6597b821-e01e-48b0-85b5-14a60733363d' date '17 March 2016' time '12:41:15.956567 am' author 'MartinDias' ancestors ((name 'Mongo-Core-HolgerHansPeterFreyther.48' message 'Add >>#flags to UpdateOperation to specify upsert

The mongodb protocol allows to specify a flag how to handle an update and it was not possible to set it yet. Update the UpdateOperation to have a configurable flags and add overloads to Mongo, MongoDatabase and MongoCollection to use these. For methods with more than one line a call to the new method has been inserted.

Add a small test that verifies that Upsert is possible with the driver. Interestingly the  MultiUpdate does not seem to work as expected with MongoDB but the flag is correctly set and sent on the wire.' id 'd4ec0033-083e-461c-aad7-aa12853fc7fa' date '11 February 2016' time '4:19:04.430109 pm' author 'HolgerHansPeterFreyther' ancestors ((name 'Mongo-Core-HolgerHansPeterFreyther.47' message 'Create the cursor and fetch no results at all, then one fetch one

When creating the cursor we want to not fetch any results and when it returns we just want to receive one event. It is enough to get started.' id '45fa9bb1-8ce6-4ef3-aa1b-69601f41d0be' date '28 January 2016' time '5:37:16.942709 pm' author 'HolgerHansPeterFreyther' ancestors ((name 'Mongo-Core-HolgerHansPeterFreyther.46' message 'Add MongoTailableCursor as a simple event log interface

The below is an example of creating the cursor and then requesting
more data. It is not complete but an example of what is possible. The
first "create" should read all elements as well.

| db query |
db := MongoDatabase root: self name: ''smsc''.
query := MongoQuery new
		database: (MongoDatabase root: self name: ''smsc'');
		collection: (MongoCollection database: db name: ''blabla2'');
		doBlock: [:each | ];
		yourself.
MongoTailableCursor new
	query: query;
	root: self;
	create;
	next' id '2cc814b2-c0d5-4653-b9d2-808e92e25cea' date '20 January 2016' time '3:14:04.995885 pm' author 'HolgerHansPeterFreyther' ancestors ((name 'Mongo-Core-HolgerHansPeterFreyther.45' message 'Compare it with 1.0 as done in other places of the code' id '3cf37d88-8ced-414b-912e-ec2f6584771a' date '20 January 2016' time '2:08:29.217767 pm' author 'HolgerHansPeterFreyther' ancestors ((name 'Mongo-Core-HolgerHansPeterFreyther.44' message 'Add >MongoDatabase>>#addCollection:capped:size:max:

Add a routine to  create a capped collection and start to verify that the command has passed. Do not only assert that ''ok'' is present but that it is not equal to 0.0. I wanted to avoid a direct compare to 1.0. Other code is using 1.0 so we could do the same.' id '404e1c4b-947f-44e4-8002-c71d71cad005' date '20 January 2016' time '1:34:19.622965 pm' author 'HolgerHansPeterFreyther' ancestors ((name 'Mongo-Core-HolgerHansPeterFreyther.43' message 'Avoid converting SmallDictionary to Dictionary for queries

When using a SmallDictionary to keep the insertion order avoid it being converted to a Dictionary.

NOTE: This will not work on Squeak and other dialects as there is no SmallDictionary.' id '5c249e91-0181-45c2-bde9-3aa3d8065109' date '20 January 2016' time '1:27:30.420338 pm' author 'HolgerHansPeterFreyther' ancestors ((name 'Mongo-Core-TorstenBergmann.42' message 'be able to set an own default' id '0120ff4d-c0af-7b4d-b9e8-71b486b24940' date '17 March 2015' time '9:58:02.013099 pm' author 'TorstenBergmann' ancestors ((name 'Mongo-Core-TorstenBergmann.41' message 'add isAvailable' id '498d4b1d-af52-f744-b748-3c1dafab69fa' date '17 March 2015' time '9:36:50.700099 pm' author 'TorstenBergmann' ancestors ((name 'Mongo-Core-TorstenBergmann.40' message 'printOn' id '9f582266-fc22-2d46-a078-0446a7acaa56' date '10 March 2015' time '8:37:54.777581 pm' author 'TorstenBergmann' ancestors ((name 'Mongo-Core-TorstenBergmann.39' message 'move tests into an own package so they can be loaded separately' id 'fcbf8b80-89b8-344a-ad0a-53e1168a0363' date '4 March 2015' time '9:51:07.6061 am' author 'TorstenBergmann' ancestors ((name 'Mongo-Core-TorstenBergmann.38' message 'comment, group and add printOn: messages' id '6f534ed5-be65-b64b-97ef-190c75b77c85' date '4 March 2015' time '9:42:33.1331 am' author 'TorstenBergmann' ancestors ((name 'Mongo-Core-NorbertHartl.37' message 'Now resets the authCache if the connection is reopened or changed' id '5eea31ec-6673-43d5-a429-cc9962e66d04' date '27 November 2013' time '2:06:31.338 pm' author 'NorbertHartl' ancestors ((name 'Mongo-Core-NorbertHartl.36' message '- added caching of authentication attempts per database. MongoDb needs per session/connection only one authentication attempt per database/username combination
- removed useless/empty MongoTestCase class which only introduces inter package dependencies
- added MongoMock class to test authentication behaviour
- added tests for new authentication implementation' id 'c2dccbe6-4730-4ce6-a9e6-968424dd54d3' date '27 November 2013' time '10:40:30.104 am' author 'NorbertHartl' ancestors ((name 'Mongo-Core-DamienCassou.35' message '- Fixed MongoCollection>>select:limit:offset:*' id 'b4706309-1775-4fec-afaf-3dc7443d6b66' date '17 May 2013' time '5:02:37.402 pm' author 'DamienCassou' ancestors ((name 'Mongo-Core-EstebanLorenzano.34' message '- merged' id 'e1f25d62-00d4-4f9f-b809-65dfd4a9ffc5' date '13 May 2013' time '2:34:36.525 pm' author 'EstebanLorenzano' ancestors ((name 'Mongo-Core-EstebanLorenzano.27' message '- queries with limit and sorts now uses the new mongo queries syntax' id '1d06efd3-4d7f-460c-b9b8-7d1d17d8047f' date '16 April 2013' time '1:08:42.896 pm' author 'EstebanLorenzano' ancestors ((name 'Mongo-Core-FrancoisStephany.26' message 'Implements orderby. See tests for usage.' id 'ec45399b-2795-4df1-8176-8def79d9d7b6' date '6 November 2012' time '7:41:37.997 pm' author 'FrancoisStephany' ancestors ((name 'Mongo-Core-FrancoisStephany.25' message 'Introducd MongoQuery object. It provides an easier user interface to interact with MongDB. 

MongoCollection now provides a preconfigured MongoQuery when sent the "query" message. See the tests for some examples of use.

The orderBy needs to be implemented.

' id 'e3ad1c9d-e3c2-4fba-9673-aeac2034a322' date '6 November 2012' time '4:15:46.068 pm' author 'FrancoisStephany' ancestors ((name 'Mongo-Core-FrancoisStephany.24' message 'Adds the possibility to set "numberToSkip" to a query operation.' id 'c1f5f7c1-209f-483e-b37c-eba7a4ff78e8' date '23 September 2012' time '9:12:07.052 pm' author 'FrancoisStephany' ancestors ((name 'Mongo-Core-FrancoisStephany.23' message 'Introduces the notion of limit in queries. 
It seems that the concept of "limit" and "chunkSize" were a bit blurry before.

Introduce the "numberToSkip" into QueryOperation. The public interface has not been adapted yet.' id 'f7a62ca3-c9b0-4184-bc9f-3cb43e8c4c4c' date '22 September 2012' time '6:11:52.168 pm' author 'FrancoisStephany' ancestors ((name 'Mongo-Core-NicolasPetton.22' message 'Added support for limit and fields in queries:

MongoCollection >> query:fields:
MongoCollection >> query:fields:limit:' id '61483fd4-45c3-47f3-94ba-48e7c026417c' date '9 May 2012' time '1:12:44.004 pm' author 'NicolasPetton' ancestors ((name 'Mongo-Core-NicolasPetton.21' message 'new test for BSON and byte arrays' id '72e3bd65-d0d3-4a7e-809b-ccb9f85de07d' date '29 January 2012' time '4:40:25 pm' author 'NicolasPetton' ancestors ((name 'Mongo-Core-EstebanLorenzano.20' message '-added #detect: and #replace:with: to MongoCollection
-created UpdateOperation
-small fixes' id 'cfc0d449-8adb-4694-85b3-27708bacf68a' date '24 September 2011' time '9:01:21 am' author 'EstebanLorenzano' ancestors ((name 'Mongo-Core-klb.19' message 'Took out halt that was no longer being reached. Duh...' id '1375d39e-d28f-43d8-9ac4-253e154462d9' date '17 February 2010' time '11:15:21 am' author 'KentBeck' ancestors ((name 'Mongo-Core-klb.18' message 'Fixed defect requestion more results with cursorId = 0' id '14ba2cec-970d-439f-9ee3-968177add5fe' date '17 February 2010' time '11:14:48 am' author 'KentBeck' ancestors ((name 'Mongo-Core-klb.17' message 'Extracted MongoOperation' id '3a5937be-92f1-4eed-a2c8-2a2815836bc6' date '16 February 2010' time '5:43:44 pm' author 'KentBeck' ancestors ((name 'Mongo-Core-klb.16' message 'Merged Avi Bryant''s MongoDatabase>>username:password: for authentication.' id '5bdd27e8-4508-4dbd-9d08-5c9f992d92a6' date '15 February 2010' time '5:18:36 pm' author 'KentBeck' ancestors ((name 'Mongo-Core-avi.15' message 'added MongoDatabase>>username:password:

requires MD5' id '8faec48e-6bbf-4c6f-9872-829dc27ab899' date '15 February 2010' time '2:48:31 am' author 'avi' ancestors ((name 'Mongo-Core-klb.0.14' message 'Clean up' id 'e7429908-4bf4-43e7-b3ca-99ed7974e71f' date '12 February 2010' time '11:53:43 pm' author 'KentBeck' ancestors ((name 'Mongo-Core-KentBeck.0.13' message 'empty log message' id 'd8f59e89-0466-4e12-9ebc-2cb3b6f7abb3' date '12 February 2010' time '6:43:43 pm' author 'KentBeck' ancestors ((name 'Mongo-Core-klb.0.12' message '' id 'f02b3485-a478-42e9-a2f8-93e084fcd54b' date '12 February 2010' time '11:37:55 am' author 'klb' ancestors ((name 'Mongo-Core-klb.0.10' message 'Subclassed MongoTestCase so tests would load portably.' id 'c021e275-cee7-4b46-94c7-5aa65025de1e' date '12 February 2010' time '10:00:10 am' author 'KentBeck' ancestors ((name 'Mongo-Core-klb.0.9' message 'Ported to Squeak again.' id 'c190ab7e-c7da-4d50-8920-9c4a7744b9ed' date '11 February 2010' time '11:09:52 pm' author 'KentBeck' ancestors ((name 'Mongo-Core-klb.0.8' message 'Ported to Squeak again.' id '898c0a37-ebf4-4338-ae28-f5f587601bd5' date '11 February 2010' time '11:09:31 pm' author 'KentBeck' ancestors ((name 'Mongo-Core-klb.0.7' message '' id 'c40e2224-d3dd-4baa-a0c8-ba3108445290' date '11 February 2010' time '3:43:12 pm' author 'klb' ancestors ((name 'Mongo-Core-klb.0.7' message '' id '6c9a177f-dae2-4e09-9c65-b968cb02e374' date '11 February 2010' time '3:42:57 pm' author 'klb' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Mongo-Core-sebastiansastre.33' message 'fixed the return value of #do:' id '533debb8-7e7c-404c-a0f0-dd5809e87f32' date '30 November 2012' time '2:31:47.999 pm' author 'sebastiansastre' ancestors ((name 'Mongo-Core-sebastiansastre.32' message 'MongoDatabase>>collectionAt:
MongoDatabase>>hasCollectionNamed:
' id 'de0e0320-00db-492e-99b0-ae561d590aea' date '30 November 2012' time '1:26:44.506 pm' author 'sebastiansastre' ancestors ((name 'Mongo-Core-sebastiansastre.31' message 'Added CurrentMongoDatabase and MongoDatabase>>do:

This allows you to do things like:

aMongoDatabase do:[ SomeModel new save ]

where

SomeModel>>save

	(CurrentMongoDatabase value collectionNamed: self collectionName) add: self
	
' id 'e83acc4f-07ad-4977-9509-7b7d5f669030' date '30 November 2012' time '1:17:37.692 pm' author 'sebastiansastre' ancestors ((name 'Mongo-Core-sebastiansastre.30' message 'MongoDatabase>>printOn:' id '9a16857e-0447-47b2-b089-95d8e30115c4' date '28 November 2012' time '4:31:54.534 pm' author 'sebastiansastre' ancestors ((name 'Mongo-Core-sebastiansastre.29' message 'added MongoDatabase>>printOn: ' id '3993339c-b227-49d5-bc62-26428c48bb5f' date '28 November 2012' time '10:46:03.429 am' author 'sebastiansastre' ancestors ((name 'Mongo-Core-NicolasPetton.28' message 'Added missing extension method to Collection' id '21e32b16-7048-478f-a564-9386f7599ed6' date '16 November 2012' time '4:37:50.048 pm' author 'NicolasPetton' ancestors ((name 'Mongo-Core-NicolasPetton.27' message 'Querying refactorings:

- Changed MongoCollection >> query: to take a block so that:
aCollection query: (aCollection query q: aDict)

can now be written:
aCollection query: [ :q | q where: aDict ]

- Renamed MongoQuery >> q: to #where:
- Added MongoQuery >> from:to:
- Renamed MongoCollection >> query to #newQuery
- Added Collection >> asMongoQuery to allow literal arrays in mongo queries
' id '49382b78-b5b9-4b63-b3c7-67cbe9aa6026' date '16 November 2012' time '2:40:23.102 pm' author 'NicolasPetton' ancestors ((id 'ec45399b-2795-4df1-8176-8def79d9d7b6')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Mongo-Core-MartinDias.54' message 'Reverting this change I did in Mongo class:

Name: Mongo-Core-MartinDias.51
Author: MartinDias
Time: 1 April 2016, 12:24:14.905261 am
UUID: ac639434-6771-4200-bcd4-addbc68b4cb4
Ancestors: Mongo-Core-NorbertHartl.50

Mongo default instance: use a class side instance variable (default), instead of a class variable (Default), so subclasses (e.g. MongoMock) can have their own default instance.' id '9d5e9d08-91e5-4289-8f66-ce62334caa7e' date '6 May 2016' time '12:24:03.404015 am' author 'MartinDias' ancestors ((name 'Mongo-Core-HolgerHansPeterFreyther.53' message 'Force the requestID to stay within 30 bit

MongoCursor>>#execute is comparing the responseTo with the requestID that was used. When writing the Smalltalk Integer it will be truncated to a uint32_t and when reading it back it will be a 32bit number again. Avoid the internal and external representation of the requestID to get out of sync and truncate it at 30bit.

I am not sure if having a testcase calling >>#nextRequestID and testing the wrap-around will be of any help?
' id 'c421d16c-3a1c-4dad-8b8e-d9ba4c8da346' date '10 April 2016' time '10:15:09.87913 pm' author 'HolgerHansPeterFreyther' ancestors ((name 'Mongo-Core-HolgerHansPeterFreyther.52' message 'Make request/response handling more robust

Prevent handling a response to a query we did not send. This seems to happen with concurrent VoyageMongo usage. Modify >>#cursorQuery: and >>#getMore:collection:chunkSize: to return the request id used. Modify >>#getMore:collection:chunkSize: to assign a new requestID instead of truncating the 64bit cursorId to a 32bit requestID.

Change MongoCursor>>#execute to remember the requestID and then compare it with the responseTo of the response. In case it does not match signal an error.' id '70c2dc1a-c530-4d19-8dd9-63317ec6e78e' date '10 April 2016' time '10:08:36.85185 pm' author 'HolgerHansPeterFreyther' ancestors ((name 'Mongo-Core-MartinDias.51' message 'Mongo default instance: use a class side instance variable (default), instead of a class variable (Default), so subclasses (e.g. MongoMock) can have their own default instance.' id 'ac639434-6771-4200-bcd4-addbc68b4cb4' date '1 April 2016' time '12:24:14.905261 am' author 'MartinDias' ancestors ((id 'be7a1d3b-ce94-4104-b100-f23ebed26127')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())