1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
#+STARTUP: indent showall -*- org -*-
* 0.1.8 - <2014-05-22 Thu>
** Feature: Connection recovery cache
This new feature makes the replica set support easier to use, and more
robust. New functions include: `mongo_sync_conn_recovery_cache_new`,
`mongo_sync_conn_recovery_cache_free`,
`mongo_sync_conn_recovery_cache_discard`,
`mongo_sync_conn_recovery_cache_seed_add`, and
`mongo_sync_connect_recovery_cache`.
** New function: mongo_sync_cmd_get_last_error_full
The new `mongo_sync_cmd_get_last_error_full` function can be used to
retrieve the last server-side error as a full BSON object, not just
the textual error message.
** New function: mongo_sync_conn_get_last_error
Returns the last cached error message.
** Portability: Test suite improvements
The test suite was improved to work properly on even more platforms.
** Bugfix: Support reconnecting to Unix domain sockets
When a replica-set is set up using unix domain sockets, reconnecting
failed. This has been corrected in this version.
** Bugfix: Fix random reconnect failures
When reconnecting, only close the old connection if it differs from
the new one.
** Bugfix: Memory leak in an error-case
When sending a packet to MongoDB, while enforcing being connected to a
master node, if ensuring that connection failed, memory was leaked.
The hole has been plugged.
* 0.1.7.1 - <2014-03-12 Wed>
** Portability: Support HP-UX
Compatibility code was added to make libmongo-client portable to HP-UX.
** Portability: prove made optional
On platforms where the `prove' utility is not readily available, a
custom test runner can be used by setting the PROVE environment
variable when running `make check'.
** Bugfix: Safe-mode robustness improvement
When safe mode is turned on, the code now verifies not only that
getLastError() doesn't return an error, but also verifies that the
command succeeds, too.
* 0.1.7 - <2013-12-10 Tue>
** Feature: Automatic re-authentication
This release adds support for automatically re-authenticating when
reconnecting, by storing the credentials used for the last
authentication in a safe, memory-locked area.
** New function: mongo_sync_cmd_user_add_with_roles()
A new function was added to create users with their roles already set
at the same time.
** Bugfix: Enable subdir-objects for automake
Since we have sources that reside in a subdirectory, to avoid
conflicts and a lot of automake warnings, enable the subdir-objects
automake option.
* 0.1.6.3 - <2013-08-27 Tue>
Another bugfix release with a couple of important bugfixes, and a few
minor improvements here and there.
** Improvement: configure.ac updated to modern autotools
The configure.ac script was updated to not use obsolete macros, and to
work with automake 1.13+ (where the aforementioned macros were
removed).
** Bugfix: Fix chunked GridFS file retrieval
When retrieving files via the chunked GridFS API, order the chunks by
their number, so reassembling them will succeed.
** Bugfix: Stop crashing in case verification fails
When safe-mode is enabled, but getLastError() fails, the library
crashed due to an uninitialised pointer. This has been fixed in this
release.
* 0.1.6.2 - <2012-12-21 Fri>
Another bugfix release with mostly minor improvements and
documentation updates.
** Feature: Support for the Binary subtype in GridFS
The GridFS support in the library only supported the "Generic"
subtype until now, but with this release, the (obsolete) "Binary"
subtype is supported aswell.
** Bugfix: Plugged a memory leak in the GridFS code
The GridFS code (the chunked file constructor, in particular) leaked
the generated ObjectId. This has been corrected.
** Documentation: New tutorials
New tutorials were written for showing how to handle indexes, and how
to run custom commands.
* 0.1.6.1 - <2012-10-14 Sun>
This is a quick bugfix release, that restores ABI compatibility with
versions prior to 0.1.6, and cleans up a few other minor issues.
* 0.1.6 - <2012-10-14 Sun>
With this release, thanks to Conrad Hoffmann <ch@bitfehler.net>, it is
now possible to connect to mongodb via unix sockets.
See the documentation and the updated mongo-dump example for details.
* 0.1.5 - <2012-04-13 Fri>
This is a bugfix release, without any new functionality. It is
expected that this will be the last release before a complete overhaul
of the library.
** Bugfix: Restore glib 2.12 compatibility
The examples used features not available in glib 2.12, they were
changed to not do that, and work with this old version too.
** Bugfix: Do not accept invalid index specifications
When creating an index, the library now bails out early with an error
in case the index specification is not acceptable.
** Bugfix: Fix glib sanity check when glib is on a non-standard path
In case glib was installed to a path that is not on the compiler's
default search path, the sanity check at configure time failed. This
has been corrected.
** Bugfix: bson_cursor_find() & co. must match the whole key
Due to a silly matching logic in bson_cursor_find(), and anything that
built on it (bson_find() included) was able to match keys of which the
sought name was a prefix of.
This is now fixed, and the find functions will correctly match the
whole key.
** Bugfix: Fixed OID generation on 64-bit big-endian machines
Due to a rounding error, OID generation on certain 64-bit big-endian
platforms resulted in the timestamp part always being zeroed out,
which made OIDs generated on such platforms useless.
The rounding error was eliminated.
* 0.1.4 - <2011-08-27 Sat>
This release is a minor update, with neither new functionality, nor
any bugfixes, except in the packaging.
It does come with slightly more documentation, however.
* 0.1.3 - <2011-07-19 Tue>
** New feature: GridFS support.
This version introduces a set of GridFS APIs, to ease working with
GridFS, be that retrieving files chunk by chunk, listing and removing
files, or offering a file-like streaming API.
** New function: mongo_sync_cmd_create()
A new helper function was introduced to aid us in creating capped and
pre-allocated collections.
** New function: mongo_sync_cmd_exists()
Another new helper function to aid in retrieving information about a
collection - whether it exists, and if so, with what parameters.
** New function: mongo_util_oid_as_string()
When one needs to print the value of an ObjectId in human-readable
hexadecimal format, this new function is the one to turn to.
** New index options: background & sparse.
It is now possible to create sparse indexes, and create them in the
background, using two new option flags: MONGO_INDEX_BACKGROUND and
MONGO_INDEX_SPARSE.
* 0.1.2 - <2011-07-01 Fri>
** Bugfix: mongo_packet_recv() waits for all data.
Previously, mongo_packet_recv() did not wait for all data to arrive,
and returned whatever already arrived at the time of reading.
This has been corrected, mongo_packet_recv() correctly blocks now.
** Implemented support for passive secondaries.
Support was added for passive secondaries, they're now automatically
discovered too.
** New feature: Index handling functions
Implemented some helper functions to create and delete indexes.
** New function: bson_cursor_find()
Combining the powers of bson_find() and bson_cursor_find_next(), this
new function can find a key anywhere in a BSON object, yet, maintains
the ability to continue a previous scan.
** New function: mongo_connection_set_timeout()
On systems that support it (most modern systems should), sets a
timeout for send and receive operations. Setting the timeout to zero
clears the timeout, and these calls will block forever.
The timeout is not preserved accross reconnects, if using the Sync
API, however.
** Removed dependency on OpenSSL
Instead of using OpenSSL's MD5 functions, use the checksum
capabilities of glib 2.16 and newer. This halves the dependencies of
the library!
* 0.1.1 - <2011-06-16 Thu>
** Cursor-based query iterator API
The new cursor-based query iterator API makes it possible to grab the
results of a mongo_sync_cmd_query(), and conveniently iterate over the
results, hiding the get_more() calls underneath.
The implementation is clever enough to only query the database when it
needs to, and when it does, query in bulk (asking for the same amount
of documents that the last query returned).
Thanks to Federico Rodriguez <fed.rod@gmail.com> for the suggestion.
** New function: bson_validate_key()
With this new function, one can validate BSON keys: whether they can
contain dots (allowed when using dot-notation, forbidden otherwise),
or whether they start with a '$' sign.
It is up to the application developer to decide when to validate a
key, and what restrictions make sense in the given context.
The function does NOT do UTF-8 validation, that is completely left up
to the application developer.
** New function: bson_cursor_find_next()
When we know that key G always comes after key A, but we do not care
how far apart they may be, and we do not want to use a separate cursor
(due to, for example, performance reasons), this new function can
help: unlike bson_find(), this will start scanning from the current
cursor position.
** New function: bson_stream_doc_size()
A little helper function to help determine the size of a BSON document
when it's only available as a bytestream. This is mostly for use with
bson_new_from_data().
** Symbol versioning
The symbols of the library can now be versioned, if configured with
the --with-versioned-symbols configure flag (not enabled by default).
* 0.1.0 - <2011-05-25 Wed>
** Shared library
The configure script now defaults to enabling shared library building
by default (along with a static library).
** Bug fixes
The pkg-config file was setting an incorrect include directory in it's
Cflags. This is now fixed.
** C++ Compatibility
The public headers are now guarded by extern "C" {} wrappers, so that
they can be included in C++ projects.
** Performance enhancements
A minor performance issue was corrected in the BSON code, that had the
possibility of forcing unneccessary memory allocations. The library
now allocates the proper amount of memory at the soonest time
possible, so it doesn't have to grow it later on unnecessarily.
Anoter performance issue was corrected in the BSON library:
bson_find() was comparing key names in BSON objects with the sought
for key using strcmp(), which was unacceptably slow when dealing with
BSON objects that have a lot of keys. We now use memcmp(), which means
we don't have to traverse the sought for key all the time.
* 0.0.2 - <2011-05-07 Sat>
** Replica set seeding support
It is now possible to add seeds to a connection, so that the library
can try connecting to those in case automatic discovery fails (or if
the seeds are hidden).
** Failover redesign
Instead of preemptively pinging & checking for a master before each
and every command, the library does so only upon errors. This way,
when everything's working as expected, there is no extra
overhead. Yet, if things go wrong, failover will still work.
By design, automatic failover only occurs when an error is detected
during a write operation. When an error occurs during read, it will be
propagated back to the application.
Automatic failover is disabled by default, and can be turned on via
the mongo_sync_conn_set_auto_reconnect() function.
** safe-mode support
With safe mode enabled, extra care will be taken to ensure that data
gets to the server, and that the library does everything within its
power to maintain a connection.
This means that after insert and update operations, the library will
issue a getLastError command, and only return successfully if that
command did not signal an error.
Safe-mode also enables the previously default preemptive connection
checks (along with the post-mortem failover).
Safe-mode is off by default.
* 0.0.1 - <2011-04-10 Sun>
Initial public release.
|