= Berkeley DB 6.1 Changelog =

== Database or Log File On-Disk Format Changes ==

The log file format changed in 12.1.6.1.


== New Features/Improvements ==

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]

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]

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

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

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

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]

Added support for Visual Studio 2012. [#22477]

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

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

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

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 ==

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

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]

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 ==

None

== Access Method Changes ==

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

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

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

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

== API Changes ==

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

== SQL-specific API Changes ==

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

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

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

== Tcl-specific API Changes ==

Exposed flag DB_SET_MUTEX_FAILCHK_TIMEOUT in Tcl API. [#23163]

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

== Java-specific API Changes ==

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

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

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

Updated DPL changes from BDB JE. [#23251]

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

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

== C#-specific API Changes ==

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

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

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

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

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

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

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

== C++-specific API Changes ==

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

== Replication Changes ==

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]

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]

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]

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

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]

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]

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

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 ==

None

== Logging Subsystem Changes ==

None

== Memory Pool Subsystem Changes ==

None

== Mutex Subsystem Changes ==

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

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

== Transaction Subsystem Changes ==

None

== Test Suite Changes ==

None

== Utility Changes ==

None

== Configuration, Documentation, Sample Apps, Portability and Build Changes ==

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

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]

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]

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

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

Added build support on latest MinGW. [#23332]

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

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]

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

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]

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

== Example Changes ==

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

== Miscellaneous Bug Fixes ==

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

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

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

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]

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

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

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

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

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

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

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

Fixed memory alignment issue on Solaris. [#23571]

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

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

== Platform Certification Changes ==

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

== Deprecated Features == 

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 ==

[#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.

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