Berkeley DB Library Version 12.1.6.1 Change Log

Database or Log File On-Disk Format Changes
New Features/Improvements
Database Environment Changes
Concurrent Data Store Changes
Access Method Changes
API Changes
SQL-specific API Changes
Tcl-specific API Changes
Java-specific API Changes
C#-specific API Changes
C++-specific API Changes
Replication Changes
Locking Subsystem Changes
Logging Subsystem Changes
Memory Pool Subsystem Changes
Mutex Subsystem Changes
Transaction Subsystem Changes
Test Suite Changes
Utility Changes
Configuration, Documentation, Sample Apps, Portability and Build Changes
Example Changes
Miscellaneous Bug Fixes
Platform Certification Changes
Deprecated Features
Known Bugs

This is the changelog for Berkeley DB 12c Release 1 (library version 12.1.6.1).

Database or Log File On-Disk Format Changes

  1. The log file format changed in 12.1.6.1.

New Features/Improvements

  1. Demonstrated in a sample app how to use thread-specific structures to associate a DB_EVENT_REP_PERM_FAILED event with the transaction that caused it. [#17686]

  2. Replication Manager Preferred Master is a new option for 2-site replication groups. One site is the preferred master, which assumes the master role as much of the time as its availability permits. A preferred master replication group guarantees that transactions committed on the preferred master site will never be rolled back while also providing client failover. [#20230]

  3. A new flag DB_FORCESYNCENV is provided for DB_ENV->close(), which forces flushing the memory mapped regions before unmapping them. [#21176]

  4. A new API is provided to limit the Replication Manager incoming queue based on the amount of heap memory it uses. [#21481]

  5. BLOB support is now available for environments configured for replication. [#22359]

  6. A new version of DB_ENV->failchk() helps supports multi-process environments which use DB_REGISTER rather than a monitoring process. It is turned on with --enable-failchk_broadcast. [#22419]

  7. Added support for Visual Studio 2012. [#22477]

  8. CPU time needed for database backups is now reduced. [#22967]

  9. Added BDB utilities for the Android platform. [#23079]

  10. Added --enable-error_history support. This diagnostic tool prints a stack trace when a panic occurs. [#23119]

  11. The new log configuration option DB_LOG_NOSYNC has been added to avoid flushing the transaction log in order to stabilize storage. This can be useful when durability across system crashes is unnecessary and all the transactions in the environment specify either the DB_TXN_NOSYNC or DB_TXN_WRITE_NOSYNC flag. This configuration setting may be made by DB_ENV->log_set_config() or a DB_CONFIG line "db_log_nosync [on|off]". [#23191]

Database Environment Changes

  1. Fixed a problem with DB_LOCKDOWN which would cause an mlock error ENOMEM on some operating systems. [#21379]

  2. DB_ENV->close() now detaches from the environment's mmap and shared memory regions even when a panic error (DB_RUNRECOVERY) has been returned. DB_ENV->open(DB_REGISTER) detects whether a panic has occurred in the environment. If so it returns DB_RUNRECOVERY. Prior to this, the panic state was not detected, which might have caused a hang. [#22805]

  3. Ensure that the size of memory mapped backing files are a multiple of the system pagesize. Previously the files were aligned up to 8KB boundaries, which was not adequate for systems with a 64KB pagesize. [#23290]

Concurrent Data Store Changes

  1. None

Access Method Changes

  1. Fixed a bug that left behind obsolete queue extents. [#21988]

  2. Fixed a bug that occurred if the range keys did not fit within one database page during database partition opening. [#22280]

  3. Corrected a buffer mutex deadlock involving off-page duplicate sets and less than full transactional isolation levels. [#22532]

  4. Fixed a byte swapping bug that could corrupt the header of heap database pages. [#23318]

API Changes

  1. Make flag checking in sequence stat print API consistent with the other stat print APIs. [#22513]

SQL-specific API Changes

  1. Fixed a bug that was preventing old log files from being removed while using the SQL API. [#22521]

  2. Updated SQL API build to be compatible with SQLite 3.8.3.1. [#23178]

  3. Updated ADO.NET API to be compatible with System.Data.SQLite 1.0.91.0. [#23446]

Tcl-specific API Changes

  1. Exposed flag DB_SET_MUTEX_FAILCHK_TIMEOUT in Tcl API. [#23163]

  2. Added msgfile and msgfile_close in the Tcl API. [#31881].

Java-specific API Changes

  1. Exposed DB->set_msgfile(), DB_ENV->set_msgfile() and all xxx_stat_print() in Java API.[#22691]

  2. Exposed flags DB_REPMGR_CONF_PREFMAS_MASTER and DB_REPMGR_CONF_PREFMAS_CLIENT in Java API. [#23163]

  3. Exposed new flag DB_LOG_NOSYNC in Java API. [#23191]

  4. Updated DPL changes from BDB JE. [#23251]

  5. Exposed new flag DB_EVENT_REP_INQUEUE_FULL in Java API. [#23280]

  6. Fixed a bug that partition directories could not be set correctly via Java API. [#23410]

C#-specific API Changes

  1. The class LockDetectMode has been removed. It was duplicating functionality provided in other classes and not being used. [#21248]

  2. Exposed DB_STAT_ALLOC in PrintLockingSystemStats(), PrintLoggingSystemStats(), PrintMPoolSystemStats(), PrintMutexSystemStats(), PrintStats() and PrintTransactionSystemStats(). [#22513]

  3. Exposed DB->set_msgcall(), DB->set_msgfile(), DB_ENV->set_msgcall() and DB_ENV->set_msgfile() to C# API. [#22799]

  4. Exposed flags DB_REPMGR_CONF_PREFMAS_MASTER and DB_REPMGR_CONF_PREFMAS_CLIENT in C# API. [#23163]

  5. Exposed new flag DB_LOG_NOSYNC in C# API. [#23191]

  6. Exposed new flag DB_EVENT_REP_INQUEUE_FULL in C# API. [#23280]

  7. Changed definition of all structs to make SWIG 2.0.12 can generate code successfully. [#23295]

C++-specific API Changes

  1. Fixed a bug that db_stl library could not build using gcc-4.7 or later versions. [#22615]

Replication Changes

  1. Fixed a bug where, after some rare multiple-site failure scenarios including transaction rollbacks, Replication Manager could have incorrectly determined that new transactions fulfilled the acknowledgement policy. [#16624]

  2. Acknowledgements are counted more precisely when an unelectable client is first joining the replication group and also when a master has been set to be unelectable. [#20825]

  3. If there is already a replication process running, do not require a flag value when calling DB_ENV->repmgr_start() to start a subordinate process. [#20980]

  4. Fixed a bug that a site could not rejoin the replication group on Windows after being removed from the group. [#22460]

  5. When a removed site rejoins a two-site replication group with DB_REPMGR_CONF_2SITE_STRICT turned off, defer its election so that the rejoining site does not prematurely elect itself master with only its own vote when the other site is already master. [#22683]

  6. Fixed a bug where a Replication Manager subordinate process could fail its automatic takeover as the replication process because it is unnecessarily waiting for acknowledgements from other sites before the connections to these sites are properly established. [#22998]

  7. Fixed a bug where a client synchronization could get stuck because certain error paths were failing to release an internal lockout. [#23169]

  8. Fixed a bug where replication group-aware log archiving might have unnecessarily kept log files after certain connection sequences between sites. [#23420]

Locking Subsystem Changes

  1. None

Logging Subsystem Changes

  1. None

Memory Pool Subsystem Changes

  1. None

Mutex Subsystem Changes

  1. Removed an environment handle mutex which was no longer needed. [#23099]

  2. Removed the last source files of the defunct fcntl mutex implementation. [#23119]

Transaction Subsystem Changes

  1. None

Test Suite Changes

  1. None

Utility Changes

  1. None

Configuration, Documentation, Sample Apps, Portability and Build Changes

  1. Fixed a bug that ex_rep_base could not quit gracefully after receiving 'exit' command. [#16871]

  2. Extended the ex_rep_mgr Replication Manager sample application to demonstrate the use of a thread-specific structure to associate a DB_EVENT_REP_PERM_FAILED event with its originating transaction. [#17686]

  3. Parameter "-module" is removed from task libsqilte_jni in JDBC makefile. So libsqlite_jni library could be built in '.dylib' format on Mac OS X. [#22937]

  4. Additional information about the cause of an error may now be displayed by configuring with --enable-error_history. [#23119]

  5. Add one public error code 'DB_META_CHKSUM_FAIL'. [#23304]

  6. Added build support on latest MinGW. [#23332]

  7. A configuration warning 'Ignoring --with-cryptography flag value' is added for the non-crypto package. [#23333]

  8. Parameter LIBSQLSO_LIBS is added to the task libsqlso_target to workaround a linking issue with the gcc 4.8.1 distributed by Ubuntu. [#23372]

  9. Extended the Mac OS X section in the chapter 7 of the installation guide. [#23388]

  10. Fixed PHP module to consistently use the ZEND_REGISTER_RESOURCE macro, preventing a build failure with PHP 5.5. Updated INSTALL file to note the changed location of sample output. [#23391]

  11. Fixed a few typos in the JDBC/ODBC sections of the Windows/Unix installation guide. [#23404]

Example Changes

  1. Added an example using BDB SQL with the JDBC driver and ADF. [#22569]

Miscellaneous Bug Fixes

  1. Fixed a byte swapping bug with log file operations on blob files. [#22215]

  2. Fixed test failures on QNX with small mutex regions. [#22310]

  3. Database containing BLOBS are now portable between machines of opposite endianness. [#22455]

  4. Added a -D option to display output for db_dump and db_printlog. This value takes priority over DB_ENV->set_data_len() if that was called to set the length. [#22485]

  5. Updates to PHP API to handle functional changes in PHP 5.4. [#22549]

  6. Fixed heap databases so they can work on both big and little endian machines. [#22929]

  7. Restructure the blob delete code to improve performance. [#22935]

  8. Properly clean up blob meta database after aborting the creation of its parent database. [#23000]

  9. Fixed memory alignment issues with the DB_MPOOL stats. [#23150]

  10. Fixed a byte swapping bug with heap blob log records. [#23319]

  11. Fixed two race condition bugs with DB_ENV->failchk(). [#23347]

  12. Fixed memory alignment issue on Solaris. [#23571]

  13. Fixed a bug that using Visual Studio 2010 and JDK 1.5 could generate corrupted jar files. [#23574]

  14. Fixed a bug that specifying --with-cryptography=yes did not build the jdbc library correctly. [#23606]

Platform Certification Changes

  1. Berkeley DB no longer tests or certifies Windows XP or Windows 2003.

Deprecated Features

  1. The DB_AUTO_COMMIT flag is present in the DB_SEQUENCE APIs for Java and C#. This flg is no longer meaningful for these APIs and will be deprecated in the next release.

Known Bugs

  1. [#23469] The SQL ORDER BY command on the primary key of a table can in rare cases return the results out of order if an index search is used in executing the query. For example: Create a single column table. Insert two rows with identical values. A query on the row id and the column will produce results in a different order depending on whether an index is used.

  2. [#23275] Enabling BLOB support and master leases can result in unexpected DB_REP_LEASE_EXPIRED errors.