<li>Allow applications to specify transaction handles to the DB->associate method call, so secondary index creation can be grouped with other Berkeley DB calls in a single transaction. [#4185]</li>
<li>Add a new flag, DB_AUTO_COMMIT, that wraps single database
operations inside a transaction. This flag is supported by the
<li>Fix bugs that could cause hash recovery to drop core. [#4978]</li>
<li>Use access method flags instead of interface flags to check for read-only access to a hash database with an application-specified hash function. [#5121]</li>
<li>Fix a bug where a hash database allocation of a new set of buckets may be improperly recovered by catastrophic recovery if the transaction is split across log files and the beginning segment of the transaction is not included in the set of logs to be recovered. [#5942]</li>
<li>Fix a bug where aborting particular hash allocations could lead to a database on which the verifier would loop infinitely. [#5966]</li>
<li>Fix a bug where a memory allocation failure could result in a system hang. [#5988]</li>
<li>Remove nelem from the Hash access method statistics (the value was incorrect once items had been added or removed from the database). [#6101]</li>
<li>Fix a bug where a page allocated by an aborted transaction might not be placed on the free list by recovery, if the file holding the page was created as part of recovery, and a later page was part of a hash bucket allocation. [#6184]</li>
<li>Fix a bug where allocated pages could be improperly recovered on systems that require explicit zero-ing of filesystem pages. [#6534]</li>
<li>No longer return a copy of the key if the DB_SET_RANGE flag is specified. [#4470]</li>
<li>Fix a bug where DBcursor->c_get (with DB_MULTIPLE or DB_MULTIPLE_KEY specified) could fail on a Queue database if the record numbers had wrapped. [#6397]</li>
<li>C++ DbLock::put is replaced by DbEnv::lock_put to match the C and Java API change in Release 4.0. [#5170]</li>
<li>Declared destructors and methods within Db and DbEnv classes to be virtual, making subclassing safer. [#5264]</li>
<li>Fixed a bug where Dbt objects with no flags set would not be filled with data by some operations. [#5706]</li>
<li>Added DbDeadlockException, DbRunRecoveryException, and DbLockNotGrantedException classes to C++, and throw them accordingly. [#6134]</li>
<li>Added C++ methods to support remaining conversions between C++ classes and C structs where appropriate. In particular, DbTxn/DB_TXN conversions and DbMpoolFile/DB_MPOOLFILE were added. [#6278]</li>
<li>Fix a bug in DbEnv::~DbEnv() that could cause memory corruption if a DbEnv was deleted without being closed. [#6342]</li>
<li>Reordered C++ class declarations to avoid a GCC g++ warning about function inlining. [#6406]</li>
<li>Fix a bug in the DbEnv destructor that could cause memory corruption when an environment was destroyed without closing first. [#6342]</li>
<li>Change DbEnv and Db destructor behavior to close the handle if it was not already closed. [#6342]</li>
<li>Added check for system property "sleepycat.Berkeley DB.libfile" that can be used to specify a complete pathname for the JNI shared library. This is needed as a workaround on Mac OS X, where libtool cannot currently create a library with a .jnilib extension which is what the current JDK expects by default. [#5664]</li>
<li>Fixed handling of JVM out of memory conditions, when some JNI methods return NULL. When the JVM runs out of memory, calls should consistently fail with OutOfMemoryErrors. [#5995]</li>
<li>Added Dbt.get_object and Dbt.set_object convenience routines to the Java API to make using serialization easier. [#6113]</li>
<li>Fixed a bug that prevented Java's Db.set_feedback from working, fixed document for Java's Db.set_feedback, some callback methods were misnamed. [#6137]</li>
<li>Fix a NullPointerException in Db.finalize() if the database had been closed. [#6504]</li>
<li>Marked DbEnv constructor with "throws DbException". [#6342]</li>
<divclass="sect2"lang="en"xml:lang="en"><divclass="titlepage"><div><div><h3class="title"><aid="id3479104"></a>Tcl-specific API Changes:</h3></div></div></div>
<li>A large number of replication bugs were fixed in this release. The replication support is now believed to be production quality.</li>
<li>Add the DB_ENV->set_rep_limit interface, allowing applications to limit the data sent in response to a single DB_ENV->rep_process_message call. [#5999]</li>
<li>Add the DB_ENV->set_rep_stat interface, returning information from the replication subsystem [#5919]</li>
<li>Added support for multithreaded XA. Environments can now have multiple XA transactions active. db_env_xa_attach() can be used to get a DB_TXN that corresponds to the XA transaction in the current thread. [#5049]</li>
<li>Added a com.sleepycat.Berkeley DB.xa package that implements J2EE support for XA. This includes new DbXAResource, DbXid classes that implement the XAResource and Xid interfaces. [#5049]</li>
<li>Fix a bug where aborting a prepared transaction after recovery may fail. [#6383]</li>
<li>Fix a bug where recovery might fail if a prepared transaction had previously extended the size of a file and then was aborted. [#6387]</li>
<li>Fix a bug where if the commit of a prepared transaction fails the transaction would be aborted. [#6389]</li>
<li>Fix a bug where lock counts were incorrect if a lock request returned DB_LOCK_NOTGRANTED or an error occurred. [#4923]</li>
<li>Fix a bug where lock downgrades were counted as releases, so the lock release statistics could be wrong. [#5762]</li>
<li>Fix a bug where the lock and transaction timeout values could not be reset by threads of control joining Berkeley DB database environments. [#5996]</li>
<li>Fix a bug where applications using lock and/or transaction timeouts could hit a race condition that would lead to a segmentation fault. [#6061]</li>
<li>DB_ENV->log_register and DB_ENV->log_unregister have been removed from the interface. [#0046]</li>
<li>Fix a bug where creating a database environment with a nonexistent logging directory could drop core. [#5833]</li>
<li>Add support allowing applications to change the log file size in existing database environments. [#4875]</li>
<li>Fix a bug where a write error on a log record spanning a buffer could cause transaction abort to fail and the database environment to panic. [#5830]</li>
<li>Go back only one checkpoint, not two, when performing normal recovery. [#4284]</li>
<li>Fix a bug where an abort of a transaction could fail if there was no disk space for the log. [#5740]</li>
<li>Fix a bug where the checkpoint log-sequence-number could reference a nonexistent log record. [#5789]</li>
<li>Fix a bug where subtransactions which allocated pages from the filesystem and subsequently aborted could cause other pages allocated by sibling transactions to not be freed if the parent transaction then aborted. [#5903]</li>
<li>Fix a bug where transactions doing multiple updates to a queue database which spanned a checkpoint could be improperly handled by recovery. [#5898]</li>
<li>Fix a bug where the -p option could not be specified with the -R or -r options. [#5037]</li>
<li>The utilities were modified to correctly size their private caches in order to handle databases with large page sizes. [#5055]</li>
<li>Fix a bug in which utilities run with the -N option would fail to ignore the environment's panic flag. [#5082]</li>
<li>Fix a bug where invalid log records could cause db_printlog to drop core. [#5173]</li>
<li>Add a new option to the db_verify utility to support verification of files that include databases having non-standard sorting or hash functions. [#5237]</li>
<li>Replace test-and-set mutexes on Windows with a new mutex implementation that signals an event to wake blocked threads. [#4413]</li>
<li>Support configuration of POSIX pthread mutexes on systems where the pthread mutexes do not support inter-process locks. [#4942]</li>
<li>Add mutex support for the ARM architecture using the gcc compiler. [#5018]</li>
<li>On Windows NT/2000/XP, switched to atomic seek-and-read/write operations to improve performance of concurrent reads [#0654].</li>
<li>Support cross-compilation using the GNU compiler tool chain. [#4558]</li>
<li>Fix a bug where libraries were always installed read-only. [#5096]</li>
<li>Fix a bug where temporary files on VxWorks could fail. [#5160]</li>
<li>Fix a bug where Berkeley DB did not install correctly if the system cp utility did not support the -f option. [#5111]</li>
<li>Correct the documentation for the Queue access method statistics field qs_cur_recno to be the "Next available record number". [#5190]</li>
<li>Fix a bug where file rename could fail on Windows/9X. [#5223]</li>
<li>Removed support for Microsoft Visual Studio 5.0 [#5231]</li>
<li>Switched to using HANDLEs for all I/O operations on Windows to overcome a hard limit of 2048 open file descriptors in Microsoft's C runtime library. [#5249]</li>
<li>Fix a bug where Berkeley DB error message routines could drop core on the PowerPC and UltraSPARC architectures. [#5331]</li>
<li>Rename OSTREAMCLASS to __DB_OSTREAMCLASS in db_cxx.h to avoid stepping on application name space. [#5402]</li>
<li>Support Linux on the S/390 architecture. [#5608]</li>
<li>Work around a bug in Solaris where the pthread_cond_wait call could return because a signal was delivered to the application. [#5640]</li>
<li>Fix build line for loadable libraries to include -module to support Mac OS X. [#5664]</li>
<li>Fix a bug in the PPC mutex support for the Mac OS X system. [#5781]</li>
<li>Added support for Java on Mac OS X. A workaround on the Java command line is currently necessary; it is documented. [#5664]</li>
<li>Added support for Tcl on Mac OS X. [#5664]</li>
<li>Update Windows build instructions to cover Visual C++ .NET. [#5684]</li>
<li>AIX configuration changes for building on AIX 4.3.3 and 5 with both standard and Visual Age compilers. [#5779]</li>
<li>Add a new UNIX configuration argument, --with-mutex=MUTEX, to allow applications to select a mutex implementation. [#6040]</li>
<li>Changed libtool and configure so we can now correctly build and install Tcl and Java loadable shared libraries that work on Mac OS X. [#6117]</li>
<li>Fix mutex alignment problems on historic HP-UX releases that could make multiprocess applications fail. [#6250]</li>
<li>Installed static .a archives on Mac OS X need to be built with the ranlib -c option so linked applications will not see undefined __db_jump errors. [#6215]</li>
<li>Upgrade pthread and mmap support in the uClibc library to support Berkeley DB. [#6268]</li>
<li>Fixed error in determining include directories during configuration for --enable-java. The error can cause compilation errors on certain systems with newer versions of gcc. [#6445]</li>