Mercurial > pybsddb
view ChangeLog @ 661:2293c8f23302
Last minute change by Oracle
| author | Jesus Cea <jcea@jcea.es> |
|---|---|
| date | Mon, 17 Jun 2013 22:56:17 +0200 |
| parents | 811e633dde90 |
| children |
line source
1 6.0.0:
2 * Support Berkeley DB 6.0.x.
3 * HEADS UP: If you are using "bsddb3._bsddb" in your code,
4 for example for exceptions, change it to "bsddb3._db".
5 * Print test working directory when running the testsuite.
6 You can control it using "TMPDIR" environment variable.
7 Defaults to "/tmp/z-Berkeley_DB/".
8 * Support for "DB_EVENT_REP_AUTOTAKEOVER_FAILED" event.
9 * Support for "DB_REPMGR_ISVIEW", "DB_DBT_BLOB", "DB_LOG_BLOB",
10 "DB_STREAM_READ", "DB_STREAM_WRITE" and "DB_STREAM_SYNC_WRITE" flags. **OJO FLAG DB_STREAM_SYNC_WRITE**
11 * Some DB_SEQUENCE function signatures changed in Berkeley DB 6.0.x.
12 * Erratic behaviour of "DBEnv->rep_elect()" because a typo.
13 * The testsuite prints Python bitness (32/64).
14 * Tests compatible with hash randomization, default
15 in Python 3.3. See http://bugs.python.org/issue13703 .
16 * Errors when trying to calculate the length of a DB were
17 masked, and an unuseful and unrelated exception was raised.
18 * Code cleanup since pybsddb is not in the Python 3.x stdlib
19 anymore, and the version in Python 2.6/2.7 is being
20 maintained separately.
21 * Improvements to documentation generation.
23 5.3.0:
24 * Support Berkeley DB 5.3.x.
25 * Drop support for Berkeley DB 4.2 and Python 2.3. Our reference
26 is Red Had Enterprise Linux 5, until march 2014.
27 After that, RHEL6 has Python 2.6 and BDB 4.7.
28 * According to http://superuser.com/questions/189931/python-and-berkeley-db-versions-in-redhat-enterprise-linux-3-4-5-and-upcoming-6 :
29 * RHEL3: Python 2.2.3, BDB 4.1.25
30 * RHEL4: Python 2.3.4, BDB 4.2.52
31 * RHEL5: Python 2.4.3, BDB 4.3.29
32 * RHEL6: Python 2.6.2, BDB 4.7.25
33 * Support for "DBEnv->set_intermediate_dir()", available in
34 Berkeley DB 4.3-4.6. Patch by Garret Cooper.
35 * Support for "DB->set_dup_compare()". Original patches by
36 Nikita M. Kozlovsky and Ben Schmeckpeper.
37 * Fixed a testsuite compatibility problem with BDB 5.2.
38 * If we are running Solaris or derivatives, and 64bit python,
39 try to find the library under "/usr/local/Berkeley.*.*/64/".
40 * Solaris 10 Update 10 exposes a very old race condition in the replication
41 master election tests. Some details in
42 https://forums.oracle.com/forums/thread.jspa?messageID=9902860 .
43 Workaround proposed in a private email from Paula Bingham (Oracle),
44 in 20110929.
45 * When doing the full matrix test for a release, stop the verification
46 if any test failed.
48 5.2.0:
49 * Support for Berkeley DB 5.2.
50 * Support for the newly available replication manager events:
51 DB_EVENT_REP_SITE_ADDED, DB_EVENT_REP_SITE_REMOVED,
52 DB_EVENT_REP_LOCAL_SITE_REMOVED, DB_EVENT_REP_CONNECT_BROKEN,
53 DB_EVENT_REP_CONNECT_ESTD, DB_EVENT_REP_CONNECT_TRY_FAILED,
54 DB_EVENT_REP_INIT_DONE.
55 * New Object: "DB_SITE". Support for all its methods.
56 * Parameters for "DB_SITE->set_config()": DB_BOOTSTRAP_HELPER,
57 DB_GROUP_CREATOR, DB_LEGACY, DB_LOCAL_SITE, DB_REPMGR_PEER.
58 * Support for some stuff in the new "Dynamic Environment Configuration":
59 DB_MEM_LOCK, DB_MEM_LOCKOBJECT, DB_MEM_LOCKER, DB_MEM_LOGID,
60 DB_MEM_TRANSACTION, DB_MEM_THREAD.
61 * Add "bytes" to "DBEnv_memp_stat()". Original patch from Garrett Cooper.
63 5.1.2:
64 * 5.1.1 install fails if the bsddb in the standard library is not installed,
65 under Python 2.7. Reported by Arfrever Frehtes Taifersar Arahesis.
66 * Since 5.0.0, we can't find 4.x libraries unless we specify a
67 "--berkeley-db=/path/to/bsddb" option. Reported by Wen Heping.
68 * Support "DB_ENV->get_open_flags()", "DB_ENV->set_intermediate_dir_mode()",
69 "DB_ENV->get_intermediate_dir_mode()".
70 * Support "DB->get_dbname()", "DB->get_open_flags()".
71 * Support "db_full_version()".
72 * Document "version()". This top-level function has been supported forever.
73 * Bugfix when calling "DB->get_size()" on a zero length record.
74 Reported by Austin Bingham.
75 * 'assertEquals()' is deprecated in Python 3.2.
76 * 'assert_()' is deprecated in Python 3.2.
77 * Solved 'ResourceWarning' under Python 3.2.
79 5.1.1:
80 * Recent pre-releases of Python 3.2 issue ResourceWarnings about
81 fileshandles deallocated without being closed first. Fix testsuite.
82 * Current "*.pyc" and "*.pyo" cleaning is not working in a PEP 3147
83 world ("__pycache__"). I don't think this code is actually
84 necessary anymore. Deleted.
85 * Python 2.7.0 deprecates CObject incorrectly. See Python issue #9675.
86 * Testsuite for "DB->get_transactional()" should not create databases
87 outside the TMP directory, neither leave the files behind.
88 * If something happens while creating the CObject/Capsule object,
89 keep going, even without exporting the C API, instead of crashing.
90 * Support for "DB_FORCESYNC", "DB_FAILCHK", "DB_SET_REG_TIMEOUT",
91 "DB_TXN_BULK", "DB_HOTBACKUP_IN_PROGRESS".
92 * Support "DB_EVENT_REG_ALIVE", "DB_EVENT_REG_PANIC",
93 "DB_EVENT_REP_DUPMASTER", "DB_REPMGR_CONF_ELECTIONS",
94 "DB_EVENT_REP_ELECTION_FAILED", "DB_EVENT_REP_MASTER_FAILURE".
95 * Support for "DB_VERB_REP_ELECT", "DB_VERB_REP_LEASE", "DB_VERB_REP_MISC",
96 "DB_VERB_REP_MSGS", "DB_VERB_REP_SYNC", "DB_VERB_REP_SYSTEM",
97 "DB_VERB_REPMGR_CONNFAIL", "DB_VERB_REPMGR_MISC".
98 * Support for "DB_STAT_LOCK_CONF", "DB_STAT_LOCK_LOCKERS",
99 "DB_STAT_LOCK_OBJECTS", "DB_STAT_LOCK_PARAMS".
100 * Support for "DB_REP_CONF_INMEM".
101 * Support for "DB_TIMEOUT ".
102 * Support for "DB_CURSOR_BULK".
104 5.1.0:
105 * Support for Berkeley DB 5.1.
106 * Drop support for Berkeley DB 4.1. Our reference
107 is Red Had Enterprise Linux 4, until February 2012.
108 After that, RHEL5 has Python 2.4 and BDB 4.3.
109 * According to http://superuser.com/questions/189931/python-and-berkeley-db-versions-in-redhat-enterprise-linux-3-4-5-and-upcoming-6 :
110 * RHEL3: Python 2.2.3, BDB 4.1.25
111 * RHEL4: Python 2.3.4, BDB 4.2.52
112 * RHEL5: Python 2.4.3, BDB 4.3.29
113 * RHEL6: Python 2.6.2, BDB 4.7.25 (Currently in BETA)
114 * Include documentation source (*.rst) in the EGG.
115 * Include processed HTML documentation in the EGG.
116 * Update the external links in documentation, since Oracle changed its web
117 structure.
118 * Some link fixes for external documentation.
119 * Links added in the documentation to Oracle Berkeley DB programmer
120 reference.
121 * Support for "DB->get_transactional()".
122 * Support for "DB_REPMGR_ACKS_ALL_AVAILABLE".
124 5.0.0:
125 * Support for Berkeley DB 5.0.
126 * Drop support for Python 3.0.
127 * Now you can use TMPDIR env variable to override default
128 test directory ("/tmp").
129 * Versioning of C API. If you use the code from C, please
130 check the bsddb_api->api_version number against
131 PYBSDDB_API_VERSION macro.
132 * In C code, the bsddb_api->dbsequence_type component is always available,
133 even if the Berkeley DB version used doesn't support sequences. In that
134 case, the component will be NULL.
135 * In C code, "DBSequenceObject_Check()" macro always exists, even if the
136 Berkeley DB version used doesn't suport sequences. In that case, the test
137 macro always returns "false".
138 * For a long time, the API has been accesible via C using "_bsddb.api" or
139 "_pybsddb.api". If you are using Python >=2.7, you acquire access to that
140 API via the new Capsule protocol (see "bsddb.h"). If you use the C API and
141 upgrade to Python 2.7 and up, you must update the access code (see
142 "bsddb.h"). The Capsule protocol is not supported in Python 3.0, but
143 pybsddb 5.0.x doesn't support Python 3.0 anymore.
144 * Capsule support was buggy. The string passed in to PyCapsule_New() must
145 outlive the capsule. (Larry Hastings)
146 * Solve an "Overflow" warning in the testsuite running under python 2.3.
147 * When doing a complete full-matrix test, any warning will be considered
148 an error.
150 4.8.4:
151 * When doing the full matrix testing with python >=2.6, we
152 activate the deprecation warnings (py3k).
153 * Split dependencies in the Replication testsuite.
154 * Help the Gargabe Collection freeing resources when the
155 replication testsuite is completed.
156 * Import warning when used as stdlib "bsddb" instead of
157 pybsddb project as "bsddb3", when using python >=2.6 and
158 py3k warnings are active.
159 * Old regression: dbshelve objects are iterable again. The bug was
160 introduced in pybsddb 4.7.2. Added relevant testcases.
161 * Patches ported from Python developers:
162 * Memory leaks: #7808 - http://bugs.python.org/issue7808 - Florent Xicluna
163 * Floating point rounding in testcases:
164 #5073 - http://bugs.python.org/issue5073 - Mark Dickinson
165 * Orthograpy: #5341 - http://bugs.python.org/issue5341
166 * Py3k warnings in Python >=2.6: #7092 - http://bugs.python.org/issue7092
167 * Correct path for tests:
168 #7269 - http://bugs.python.org/issue7269 - Florent Xicluna
169 * Shebang: benjamin.peterson
170 * Use new Python 2.7 assert()'s: Florent Xicluna
171 * Solve a spurious stdlib warning in python >=2.6 with -3 flags.
172 * Remove "DBIncompleteError", for sure this time. There were traces
173 in "dbtables", in some tests and in the docs.
174 * The DBKeyEmptyError exception raised by the library is not the same
175 DBKeyEmptyError available in the lib. So the raised exception was
176 uncatchable unless you catch DBError. And you can not identify it.
177 * Solved last point, document that DBKeyEmptyError exception derives also
178 from KeyError, just like DBNotFoundError exception.
179 * Update documentation to describe all exceptions provided by this module.
181 4.8.3:
182 * "bsddb.h" inclusion in PYPI is inconsistent. Solved.
183 * Support for "DB_ENV->mutex_stat()", "DB_ENV->mutex_stat_print()",
184 "DB->stat_print()", "DB_ENV->lock_stat_print()",
185 "DB_ENV->log_stat_print()", "DB_ENV->stat_print()",
186 "DB_ENV->memp_stat()" and "DB_ENV->memp_stat_print()".
187 * Support for "DB_ENV->get_tmp_dir()".
188 * Support for "DB_STAT_SUBSYSTEM", "DB_STAT_MEMP_HASH" flags.
189 * Support for "DB_ENV->set_mp_max_openfd()", "DB_ENV->get_mp_max_openfd()",
190 "DB_ENV->set_mp_max_write()", "DB_ENV->get_mp_max_write()",
191 "DB_ENV->get_mp_mmapsize()".
192 * New DataType: DBLogCursor. If you are using the C api, you could need
193 to recompile your code because the changes in the api interface
194 structure.
195 * Support for "DB_ENV->log_file()", "DB_ENV->log_printf()".
196 * Solve a core dump if something bad happens while trying to create a
197 transaction object.
198 * We protect ourselves of failures in creation of Locks and Sequences
199 objects.
200 * EGG file is a ZIP file again, not a directory. This requires that
201 any program importing the module can write in the ".python-eggs"
202 of its user.
203 * Keeping a cached copy of the database stats is a bad idea if we have
204 several processes working together. We drop all this code. So "len()"
205 will require a database scanning always, not only when there is any
206 write. If you need an accurate and fast "len()", the application must
207 keep that information manually in a database register.
209 4.8.2:
210 * Support for "DB_OVERWRITE_DUP", "DB_FOREIGN_ABORT",
211 "DB_FOREIGN_CASCADE", "DB_FOREIGN_NULLIFY", "DB_PRINTABLE", "DB_INORDER"
212 flags.
213 * Support for "DB_FOREIGN_CONFLICT" exception.
214 * Support for "DB_ENV->memp_trickle()", "DB_ENV->memp_sync()",
215 "DB_ENV->get_lg_bsize()", "DB_ENV->get_lg_dir()",
216 "DB_ENV->get_lg_filemode()", "DB_ENV->set_lg_filemode()",
217 "DB_ENV->get_lk_detect()", "DB_ENV->get_lg_regionmax()",
218 "DB_ENV->get_lk_max_lockers()", "DB_ENV->set_lk_max_locks()",
219 "DB_ENV->get_lk_max_objects()", "DB_ENV->set_lk_partitions()",
220 "DB_ENV->get_lk_partitions()", "DB_ENV->get_flags()",
221 "DB_ENV->set_cache_max()", "DB_ENV->get_cache_max()",
222 "DB_ENV->set_thread_count()", "DB_ENV->get_thread_count()",
223 "DB_ENV->log_set_config()", "DB_ENV->log_get_config()"
224 functions.
225 * Support for "DB->get_h_ffactor()", "DB->set_h_nelem()",
226 "DB->get_h_nelem()", "DB->get_lorder()", "DB->get_pagesize()",
227 "DB->get_re_pad()", "DB->get_re_len()", "DB->get_re_delim()",
228 "DB->get_flags()", "DB->get_bt_minkey()",
229 "DB->set_priority()", "DB->get_priority()",
230 "DB->set_q_extentsize()", "DB->get_q_extentsize()",
231 "DB->set_re_source()", "DB->get_re_source()"
232 functions.
233 * Unlock the Python GIL when doing "DB_ENV->db_home_get()". This is
234 slower, because the function is very fast so we add overhead, but it is
235 called very infrequently and we do the change for consistency.
237 4.8.1:
238 * Support for "DB_ENV->mutex_set_align()" and
239 "DB_ENV->mutex_get_align()".
240 * Support for "DB_ENV->mutex_set_increment()" and
241 "DB_ENV->mutex_get_increment()".
242 * Support for "DB_ENV->mutex_set_tas_spins()" and
243 "DB_ENV->mutex_get_tas_spins()".
244 * Support for "DB_ENV->get_encrypt_flags()".
245 * Support for "DB->get_encrypt_flags()".
246 * Support for "DB_ENV->get_shm_key()".
247 * Support for "DB_ENV->get_cachesize()".
248 * Support for "DB->get_cachesize()".
249 * Support for "DB_ENV->get_data_dirs()".
250 * Testsuite compatibility with recent releases of
251 Python 3.0 and 3.1, where cPickle has been removed.
252 * Compatibility with development versions of
253 Python 2.7 and 3.2 (r76123).
254 * For a long time, the API has been accesible via C
255 using "_bsddb.api" or "_pybsddb.api". If you are
256 using Python 3.2 or up, you acquire access to
257 that API via the new Capsule protocol (see "bsddb.h").
258 If you use the C API and upgrade to Python 3.2 and up,
259 you must update the access code (see "bsddb.h").
261 4.8.0:
262 * Support for Berkeley DB 4.8.
263 * Compatibility with Python 3.1.
264 * The "DB_XIDDATASIZE" constant has been renamed
265 to "DB_GID_SIZE". Update your code!. If linked
266 to BDB 4.8, only "DB_GID_SIZE" is defined.
267 If linked to previous BDB versions, we keep
268 "DB_XIDDATASIZE" but define "DB_GID_SIZE" too,
269 to be the same value. So, new code can use
270 the updated constant when used against old
271 BDB releases.
272 * "DB_XA_CREATE" is removed. BDB 4.8 has eliminated
273 XA Resource Manager support.
274 * Drop support for Berkeley DB 4.0. Our reference
275 is Red Had Enterprise Linux 3, until October 2010.
276 After that, RHEL4 has Python 2.3 and BDB 4.2.
277 * Remove "DBIncompleteError" exception. It was only
278 used in BDB 4.0.
279 * Remove "DB_INCOMPLETE", "DB_CHECKPOINT",
280 "DB_CURLSN". They came from BDB 4.0 too.
281 * RPC is dropped in Berkeley DB 4.8. The bindings
282 still keep the API if you link to previous BDB
283 releases.
284 * In recno/queue databases, "set_re_delim()" and "set_re_pad()"
285 require a byte instead of a unicode char, under Python3.
286 * Support for "DB_ENV->mutex_set_max()" and "DB_ENV->mutex_get_max()".
288 4.7.6:
289 * Compatibility with Python 3.0.1.
290 * Add support for "DB_ENV->stat()" and "DB_ENV->stat_print()".
291 * Add support for "DB_ENV->rep_set_clockskew()" and
292 "DB_ENV->rep_get_clockskew()". The binding support
293 for base replication is now complete.
294 * "DB.has_key()" used to return 0 or 1. Changed to return
295 True or False instead. Check your code!.
296 * As requested by several users, implement "DB.__contains__()",
297 to allow constructions like "if key in DB" without
298 iterating over the entire database. But, BEWARE, this
299 test is not protected by transactions!. This is the same
300 problem we already have with "DB.has_key()".
301 * Change "DBSequence.init_value()" to "DBSequence.initial_value()",
302 for consistence with Berkeley DB real method name. This could
303 require minimal changes in your code. The documentation was
304 right. Noted by "anan".
305 * Implements "DBCursor->prev_dup()".
306 * Add support for "DB_GET_BOTH_RANGE", "DB_PREV_DUP",
307 and "DB_IGNORE_LEASE" flags.
308 * Export exception "DBRepLeaseExpiredError".
309 * Add support for "DB_PRIORITY_VERY_LOW", "DB_PRIORITY_LOW",
310 "DB_PRIORITY_DEFAULT", "DB_PRIORITY_HIGH",
311 "DB_PRIORITY_VERY_HIGH", and "DB_PRIORITY_UNCHANGED" flags.
312 * Add support for "DBCursor->set_priority()" and
313 "DBCursor->get_priority()". The binding support for cursors
314 is now complete.
316 4.7.5:
317 * Add support for "DB_EID_INVALID" and "DB_EID_BROADCAST" flags.
318 * Add support for "DB_SEQUENCE->stat_print()". The binding
319 support for "DB_SEQUENCE" is now complete.
320 * Add support for "DB_ENV->txn_stat_print()".
321 * Add support for "DB_ENV->get_timeout()".
322 * Document that "DB_ENV->txn_stat()" accepts a flag.
323 * Unlock the GIL when doing "DB_ENV->set_tx_max()" and
324 "DB_ENV->set_tx_timestamp()".
325 * Add support for "DB_ENV->get_tx_max()".
326 * Add support for "DB_ENV->get_tx_timestamp()".
327 * Add support for "DB_TXN_WAIT" flag.
328 * Add support for "DB_TXN->set_timeout()".
329 * Add support for "DB_TXN->set_name()" and
330 "DB_TXN->get_name()". Under Python 3.0, the name
331 is an Unicode string. The binding support for
332 "DB_TXN" is now complete.
333 * Add support for "DB_REP_PERMANENT", "DB_REP_CONF_NOAUTOINIT",
334 "DB_REP_CONF_DELAYCLIENT", "DB_REP_CONF_BULK",
335 "DB_REP_CONF_NOWAIT", "DB_REP_LEASE_EXPIRED",
336 "DB_REP_CONF_LEASE", "DB_REPMGR_CONF_2SITE_STRICT",
337 "DB_REP_ANYWHERE", "DB_REP_NOBUFFER" and "DB_REP_REREQUEST"
338 flags.
340 4.7.4:
341 * Under Python 3.0, "bsddb.db.DB_VERSION_STRING",
342 "bsddb.db.__version__" and "bsddb.db.cvsid" must
343 return (unicode) strings instead of bytes. Solved.
344 * Use the new (20081018) trove classifiers in PyPI
345 to identify Python supported versions.
346 * In "DB_ENV->rep_set_timeout()" and "DB_ENV->rep_get_timeout()",
347 support flags "DB_REP_LEASE_TIMEOUT".
348 * In "DB_ENV->rep_set_timeout()" and "DB_ENV->rep_get_timeout()",
349 support flags "DB_REP_HEARTBEAT_MONITOR" and
350 "DB_REP_HEARTBEAT_SEND". These flags are used in the Replication
351 Manager framework, ignored if using Base Replication.
352 * Implements "DB->exists()".
353 * Add support for "DB_IMMUTABLE_KEY" flag.
354 * Add support for "DB_REP_LOCKOUT" exception.
355 * Support returning a list of strings in "associate()"
356 callback. (Kung Phu)
357 * Testsuite and Python 3.0 compatibility for "associate()"
358 returning a list. In particular, in Python 3.0 the list
359 must contain bytes.
360 * Implements "DBEnv->fileid_reset()". (Duncan Findlay)
361 * Implements "DB->compact()". (Gregory P. Smith)
362 Berkeley DB 4.6 implementation is buggy, so we only
363 support this function from Berkeley DB 4.7 and newer.
364 We also support related flags "DB_FREELIST_ONLY"
365 and "DB_FREE_SPACE".
367 4.7.3: (Python 2.6 release. First release with Python 3.0 support)
368 * "private" is a keyword in C++. (Duncan Grisby)
369 * setup.py should install "bsddb.h". (Duncan Grisby)
370 * "DB_remove" memory corruption & crash. (Duncan Grisby)
371 * Under Python 3.0, you can't use string keys/values, but
372 bytes ones. Print the right error message.
373 * "DB.has_key()" allowed transactions as a positional parameter.
374 We allow, now, transactions as a keyword parameter also, as
375 documented.
376 * Correct "DB.associate()" parameter order in the documentation.
377 * "DB.append()" recognizes "txn" both as a positional and a
378 keyword parameter.
379 * Small fix in "dbshelve" for compatibility with Python 3.0.
380 * A lot of changes in "dbtables" for compatibility with Python 3.0.
381 * Huge work making the testsuite compatible with Python 3.0.
382 * In some cases the C module returned Unicode strings under
383 Python 3.0. It should return "bytes", ALWAYS. Solved.
384 * Remove a dict.has_key() use to silence a warning raised under
385 Python2.6 -3 parameter. Python SVN r65391, Brett Cannon.
386 * Solve some memory leaks - Neal Norwitz
387 * If DBEnv creation fails, library can crash. (Victor Stinner)
388 * Raising exceptions while doing a garbage collection
389 will kill the interpreter. (Victor Stinner)
390 * Crash in "DB.verify()". Noted by solsTiCe d'Hiver.
392 4.7.2:
393 * Solved a race condition in Replication Manager testcode.
394 * Changing any python code, automatically regenerates the
395 Python3 version. The master version is Python2.
396 * Compatibility with Python 3.0.
397 * Solved a crash when DB handle creation fails.
398 STINNER Victor - http://bugs.python.org/issue3307
399 * Improve internal error checking, as suggested by Neal Norwitz
400 when reviewing commit 63207 in Python SVN.
401 * Routines without parameters should be defined so, as
402 suggested by Neal Norwitz when reviewing commit 63207 in Python SVN.
403 The resulting code is (marginally) faster, smaller and clearer.
404 * Routines with a simple object parameter are defines so, as
405 suggested by Neal Norwitz when reviewing commit 63207 in Python SVN.
406 The resulting code is (marginally) faster, smaller and clearer.
407 * Routines taking objects as arguments can parse them better, as
408 suggested by Neal Norwitz when reviewing commit 63207 in Python SVN.
409 The resulting code is (marginally) faster, smaller and clearer.
410 * Improve testsuite behaviour under MS Windows.
411 * Use ABC (Abstract Base Classes) under Python 2.6 and 3.0.
412 * Support for "relative imports".
413 * Replication testcode behaves better in heavily loaded machines.
415 4.7.1:
416 * Workaround a problem with un-initialized threads with the
417 replication callback.
418 * Export "DBRepUnavailError" exception.
419 * Get rid of Berkeley DB 3.3 support. Rationale:
420 http://mailman.jcea.es/pipermail/pybsddb/2008-March/000019.html
421 * Better integration between Python test framework and bsddb3.
422 * Improved Python 3.0 support in the C code.
423 * Iteration over the database, using the legacy interface, now
424 raises a RuntimeError if the database changes while iterating.
425 http://bugs.python.org/issue2669 - gregory.p.smith
426 * Create "set_private()" and "get_private()" methods for DB and DBEnv
427 objects, to allow applications to link an arbitrary object to
428 a DB/DBEnv. Useful for callbacks.
429 * Support some more base replication calls: "DB_ENV->rep_start",
430 "DB_ENV->rep_sync", "DB_ENV->rep_set_config", "DB_ENV->rep_get_config",
431 "DB_ENV->rep_set_limit", "DB_ENV->rep_get_limit",
432 "DB_ENV->rep_set_request", "DB_ENV->rep_get_request".
433 * Support more base replication calls: "DB_ENV->rep_elect",
434 "DB_ENV->rep_set_transport" and "DB_ENV->rep_process_message".
435 Support also related flags.
437 4.7.0:
438 * Support for Berkeley DB 4.7.
439 * Support "DB_ENV->log_set_config", and related flags.
440 * Complete the Berkeley DB Replication Manager support:
441 "DB_ENV->repmgr_site_list" and related flags.
442 "DB_ENV->repmgr_stat", "DB_ENV->repmgr_stat_print" and related flags.
443 * Solved an old crash when building with debug python. (Neal Norwitz)
444 * Extend the testsuite driver to check also against Python 2.6 (a3).
445 * Support for RPC client service.
447 4.6.4:
448 * Basic support for Berkeley DB Replication Manager.
449 * Support for a few replication calls, for benefice of Berkeley DB
450 Replication Manager: "DB_ENV->rep_set_priority",
451 "DB_ENV->rep_get_priority", "DB_ENV->rep_set_nsites",
452 "DB_ENV->rep_get_nsites", "DB_ENV->rep_set_timeout",
453 "DB_ENV->rep_get_timeout".
454 * Implemented "DB_ENV->set_event_notify" and related flags.
455 * Export flags related to replication timeouts.
456 * Export "DBRepHandleDeadError" exception.
457 * Implemented "DB_ENV->set_verbose", "DB_ENV->get_verbose"
458 and related flags.
459 * Implemented "DB_ENV->get_lg_max".
460 * Improved performance and coverage of following tests: lock,
461 threaded ConcurrentDataStore, threaded simple locks, threaded
462 transactions.
463 * New exported flags: "DB_LOCK_EXPIRE" and "DB_LOCK_MAXWRITE".
465 4.6.3:
466 * Be sure all DBEnv/DB paths in the TestSuite are generated in a
467 way compatible with launching the tests in multiple
468 threads/processes.
469 * Move all the "assert" in the TestSuite to the version in the
470 framework. This is very convenient, for example, to generate the
471 final report, or better automation.
472 * Implements "dbenv.log_flush()".
473 * Regression: bug when creating a transaction and its
474 parent is explicitly set to 'None'.
475 * Regression: bug when duplicationg cursors. Solved.
476 * Provide "dbenv.txn_recover()" and "txn.discard()", for fully
477 support recovery of distributed transactions. Any user of this
478 service should use Berkeley DB 4.5 or up.
479 * If a transaction is in "prepare" or "recover" state, we MUST NOT
480 abort it implicitly if the transaction goes out of scope, it is
481 garbaged collected, etc. Better to leak than sorry.
482 * In the previous case, we don't show any warning either.
483 * Export "DB_XIDDATASIZE", for GID of distributed transactions.
484 * If "db_seq_t" and PY_LONG_LONG are not compatible, compiler
485 should show a warning while compiling, and the generated code
486 would be incorrect but safe to use. No crash. Added sanity
487 check in the testunit to verify this is not the case, and
488 the datatypes are 64 bit width in fact.
489 * Solve a compilation warning when including "bsddb.h"
490 in other projects. (George Feinberg)
492 4.6.2:
493 * Support for MVCC (MultiVersion Concurrency Control).
494 * Support for DB_DSYNC_LOG, DB_DSYNC_DB and DB_OVERWRITE flags.
495 * Move old documentation to ReST format. This is important for several
496 reasons, notably to be able to integrate the documentation "as is"
497 in python official docs (from Python 2.6).
498 * Don't include Berkeley DB documentation. Link to the online version.
499 * DBSequence objects documented.
500 * DBSequence.get_key() didn't check for parameters. Fixed.
501 * If a DB is closed, its children DBSequences will be
502 closed also.
503 * To be consistent with other close methods, you can call
504 "DBSequence.close()" several times without error.
505 * If a Sequence is opened inside a transaction, it will be
506 automatically closed if the transaction is aborted. If the
507 transaction is committed and it is actually a subtransaction, the
508 sequence will be inherited by the parent transaction.
509 * Be sure "db_seq_t" and "long long" are compatible. **Disabled because
510 MS Windows issues to be investigated.**
511 * Documented the already available DBEnv methods: "dbremove",
512 "dbrename", "set_encrypt", "set_timeout", "set_shm_key",
513 "lock_id_free", "set_tx_timestamp", "lsn_reset" and "log_stat".
514 * Completed and documented "DBEnv.txn_stat()".
515 * Completed and documented "DBEnv.lock_stat()".
516 * Documented the already available DB methods: "set_encrypt", "pget".
517 * Completed documentation of DB methods: "associate", "open".
518 * Completed and documented "DB.stat()".
519 * Documented the already available DBCursor methods: "pget" (several
520 flavours).
521 * Completed documentation of DBCursor methods: "consume", "join_item".
523 4.6.1: (first release from Jesus Cea Avion)
524 * 'egg' (setuptools) support.
525 * Environments, database handles and cursors are
526 maintained in a logical tree. Closing any element
527 of the tree, implicitly closes its children.
528 * Transactions are managed in a logical tree. When
529 aborting transactions, enclosed db handles, cursors
530 and transactions, are closed. If transaction commits,
531 the enclosed db handles are "inherited" by the parent
532 transaction/environment.
533 * Solved a bug when a DBEnv goes out of scope
534 without closing first.
535 * Add transactions to the management of closing
536 of nested objects. (not completed yet!)
537 * Fix memory leaks.
538 * Previous versions were inconsistent when key or
539 value were "" (the null string), according to
540 opening the database in thread safe mode or not.
541 In one case the lib gives "" and in the other
542 it gives None.
544 4.6.0:
546 * Adds support for compiling and linking with BerkeleyDB 4.6.21.
547 * Fixes a double free bug with DBCursor.get and friends. Based on
548 submitted pybsddb patch #1708868. (jjjhhhll)
549 * Adds a basic C API to the module so that other extensions or
550 third party modules can access types directly. Based on pybsddb
551 patch #1551895. (Duncan Grisby)
552 * bsddb.dbshelve now uses the most recent cPickle protocol, based on
553 pybsddb patch #1551443. (w_barnes)
554 * Fix the bsddb.dbshelve.DBShelf append method to work for RECNO dbs.
555 * Fix Bug #477182 - Load the database flags at database open time
556 so that opening a database previously created with the DB_DUP or
557 DB_DUPSORT flag set will keep the proper behavior on subsequent opens.
558 Specifically dictionary assignment to a DB object. It will now replace
559 all values for a given key when the database allows duplicate values.
560 DB users should use DB.put(k, v) when they want to store duplicates; not
561 DB[k] = v. This only works with BerkeleyDB >= 4.2.
562 * Add the DBEnv.lock_id_free method.
563 * Removes any remnants of support for Python older than 2.1.
564 * Removes any remnants of support for BerkeleyDB 3.2.
566 4.5.0:
568 * Adds supports for compiling and linking with BerkeleyDB 4.5
569 * Python Bug #1599782: Fix segfault on bsddb.db.DB().type() due to
570 releasing the GIL when it shouldn't. (nnorowitz)
571 * Fixes a bug with bsddb.DB.stat where the flags and txn keyword
572 arguments are transposed.
573 * change test cases to use tempfile.gettempdir()
575 4.4.5:
577 * pybsddb Bug #1527939: bsddb module DBEnv dbremove and dbrename
578 methods now allow their database parameter to be None as the
579 sleepycat API allows.
581 4.4.4:
583 * fix DBCursor.pget() bug with keyword argument names when no data= is
584 supplied [SF pybsddb bug #1477863]
585 * add support for DBSequence objects [patch #1466734]
586 * support DBEnv.log_stat() method on BerkeleyDB >= 4.0 [patch #1494885]
587 * support DBEnv.lsn_reset() method on BerkeleyDB >= 4.4 [patch #1494902]
588 * add DB_ARCH_REMOVE flag and fix DBEnv.log_archive() to accept it without
589 potentially following an uninitialized pointer.
591 4.4.3:
593 * fix DBEnv.set_tx_timestamp to not crash on Win64 platforms (thomas.wouters)
594 * tons of memory leak fixes all over the code (thomas.wouters)
595 * fixes ability to unpickle DBError (and children) exceptions
597 4.4.2:
599 * Wrap the DBEnv.set_tx_timeout method
600 * fix problem when DBEnv deleted before Txn sf bug #1413192 (Neal Norwitz)
602 4.4.1:
604 * sf.net patch 1407992 - fixes associate tests on BerkeleyDB 3.3 thru 4.1
605 (contributed by Neal Norwitz)
607 4.4.0:
609 * Added support for compiling and linking with BerkeleyDB 4.4.20.
611 4.3.3:
613 * NOTICE: set_bt_compare() callback function arguments CHANGED to only
614 require two arguments (left, right) rather than (db, left, right).
615 * DB.associate() would crash when a DBError occurred. fixed.
616 [pybsddb SF bug id 1215432].
618 4.3.2:
620 * the has_key() method was not raising a DBError when a database error
621 had occurred. [SF patch id 1212590]
622 * added a wrapper for the DBEnv.set_lg_regionmax method [SF patch id 1212590]
623 * DBKeyEmptyError now derives from KeyError just like DBNotFoundError.
624 * internally everywhere DB_NOTFOUND was checked for has been updated
625 to also check for DB_KEYEMPTY. This fixes the semantics of a couple
626 operations on recno and queue databases to be more intuitive and results
627 in less unexpected DBKeyEmptyError exceptions being raised.
629 4.3.1:
631 * Added support for DB.set_bt_compare() method to use a user
632 supplied python comparison function taking (db, left, right)
633 args as the database's B-Tree comparison function.
635 4.3.0:
637 * Added support for building properly against BerkeleyDB 4.3.21.
638 * fixed bug introduced in 4.2.8 that prevent the module from
639 compiling against BerkeleyDB 3.2 (which doesn't support pget).
640 * setup.py was cleaned up a bit to search for and find the latest
641 version of the correct combo of db.h and libdb.
643 4.2.9:
645 * DB keys() values() and items() methods were ignoring their optional
646 txn parameter. This would lead to deadlocks in applications
647 needing those to be transaction protected.
649 4.2.8:
651 * Adds support for DB and DBCursor pget methods. Based on a patch
652 submitted to the mailing list by Ian Ward <ian@arevco.ca>
653 * Added weakref support to all bsddb.db objects.
654 * Make DBTxn objects automatically call abort() in their destructor if
655 not yet finalized and raise a RuntimeWarning to that effect.
657 4.2.7:
659 * fix an error with the legacy interface relying on the DB_TRUNCATE
660 flag that changed behaviour to not work in a locking environment
661 with BerkeleyDB 4.2.52. [SF bug id 897820]
662 * fixed memory leaks in DB.get, DBC.set_range and potentially several
663 other methods that would occur primarily when using queue | recno
664 format databases with integer keys. [SF patch id 967763]
666 4.2.6:
668 * the DB.has_key method was not honoring its txn parameter to perform
669 its lookup within the specified (optional) transaction. fixed.
670 [SF bug id 914019]
672 4.2.5:
674 * Fixed a bug in the compatibility interface set_location() method
675 where it would not properly search to the next nearest key when
676 used on BTree databases. [SF bug id 788421]
677 * Fixed a bug in the compatibility interface set_location() method
678 where it could crash when looking up keys in a hash or recno
679 format database due to an incorrect free().
681 4.2.4:
683 * changed DB and DBEnv set_get_returns_none() default from 1 to 2.
684 * cleaned up compatibility iterator interface.
686 4.2.3:
688 * the legacy compatibility dict-like interface now support iterators
689 and generators and allows multithreaded access to the database.
690 * fixed a tuple memory leak when raising "object has been closed"
691 exceptions for DB, DBEnv and DBCursor objects. I doubt much
692 previous code triggered this.
693 * use of a closed DBCursor now raises a DBCursorClosedError exception
694 subclass of DBError rather than a boring old DBError.
696 4.2.2:
698 * added DBCursor.get_current_size() method to return the length in bytes
699 of the value pointed to by the cursor without reading the actual data.
701 4.2.1:
703 * Standalone pybsddb builds now use a _pybsddb dynamic/shared library
704 rather than _bsddb. This allows for pybsddb to be built, installed
705 and used on python >= 2.3 which includes an older version of pybsddb
706 as its bsddb library.
708 4.2.0:
710 * Can now compile and link with BerkeleyDB 4.2.x (when its released).
711 * the legacy bsddb module supports the iterator interface on python 2.3.
713 4.1.x:
715 * Support the DBEnv.set_shm_key() method.
716 * Fixed setup.py include/{db4,db3} header file searching (SF bug #789740).
718 4.1.6:
720 * Extended DB & DBEnv set_get_returns_none functionality to take a
721 "level" instead of a boolean flag. The boolean 0 and 1 values still
722 have the same effect. A value of 2 extends the "return None instead
723 of raising an exception" behaviour to the DBCursor set methods.
724 This will become the default behaviour in pybsddb 4.2.
725 * Updated documentation for set_get_returns_none. Regenerated the
726 stale html docs from the text documentation.
727 * Fixed a typo in DBCursor.join_item method that made it crash instead
728 of returning a value. Obviously nobody uses it. Wrote a test case
729 for join and join_item.
730 * Added the dbobj wrapper for DBEnv set_timeout method.
731 * Updated README.txt
733 4.1.5:
735 * Added the DBEnv.set_timeout method.
737 4.1.4:
739 * rebuilt the windows 4.1.3 package, the original package was corrupt due
740 to bad ram on my build host.
742 4.1.3 - 2003-02-02:
744 * code cleanup to use python 2.x features in .py files
745 * the standalone pybsddb distribution will install a module
746 called bsddb3 while the module included with python >= 2.3
747 will be known as bsddb.
749 4.1.2 - 2003-01-17:
751 * Shared all .py and .c source with the Python project.
752 * Fixed DBTxn objects to raise an exception if they are used after
753 the underlying DB_TXN handle becomes invalid. (rather than
754 potentially causing a segfault)
755 * Fixed module to work when compiled against a python without thread
756 support.
757 * Do not attempt to double-close DB cursor's whos underlying DB
758 has already been closed (fixes a segfault).
759 * Close DB objects when DB.open fails to prevent an exception about
760 databases still being open when calling DBEnv.close.
762 4.1.1 - 2002-12-20:
764 * Fixed a memory leak when raising exceptions from the database
765 library. Debugged and fixed by Josh Hoyt <josh@janrain.com>. Thanks!
766 (sourceforge patch 656517)
768 4.1.0 - 2002-12-13:
770 * Updated our version number to track the latest BerkeleyDB interface
771 version that we support.
772 * Simplified the build and test process. Now you should just be able
773 to say "python setup.py build" and "python setup.py install". Also
774 added a nice test.py harness. Do "python test.py -h" for details.
775 * The windows binary is build against BerkeleyDB 4.1.24 with current
776 eight patches issued by Sleepycat applied.
777 * REMINDER: BerkeleyDB 4.1 requires code changes if you use database
778 transactions. See the upgrade docs on http://www.sleepycat.com/.
780 3.4.3 - 2002-10-18:
782 * added support for BerkeleyDB 4.1: DB.open and DB.associate
783 will now accept a txn keyword argument when using BerkeleyDB 4.1.
784 DBEnv.dbremove, DBEnv.dbrename, DBEnv.set_encrypt and DB.set_encrypt
785 methods have been exposed for 4.1.
787 3.4.2 - 2002-08-14:
789 * dbtables.py: serious bug fix. The Select, Modify and Delete methods could
790 all act upon rows that did not match all of the conditions. (bug # 590449)
791 A test case was added.
792 * dbutils.py: updated DeadlockWrap
793 * test_threads.py: fixed to use dbutils.DeadlockWrap to catch and avoid
794 DBLockDeadlockError exceptions during simple threading tests.
796 3.4.1:
798 * fixed typo cut and paste bugs in test_dbsimple.py and test_threads.py
799 * fixed bug with cursors where calling DBCursor.close() would cause
800 the object's destructor __del__() method to raise an exception when
801 it was called by the gc.
802 * fixed a bug in associated callbacks that could cause a null pointer
803 dereference when python threading had not yet been initialized.
805 3.4.0:
807 * many bugfixes, its been a long while since a new package was created.
808 * ChangeLog started.
