mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 09:06:25 +00:00
427 lines
16 KiB
Text
427 lines
16 KiB
Text
|
= Berkeley DB 5.2 Changelog =
|
||
|
|
||
|
== Database or Log File On-Disk Format Changes ==
|
||
|
|
||
|
Existing database file formats were unchanged in library version 11.2.5.2.
|
||
|
However, a new database file format, "heap", was introduced.
|
||
|
|
||
|
The log file format changed in library version 11.2.5.2.
|
||
|
|
||
|
== New Features ==
|
||
|
|
||
|
Replication Manager now manages Group Membership. This allows sites to be added to
|
||
|
and removed from the replication group dynamically. Replication Manager
|
||
|
also now automatically keeps track of the group size (nsites). [#14778]
|
||
|
|
||
|
Initial allocations for various non-pagebuffer (mpool) system resources
|
||
|
may now be specified, as well as a total maximum of memory to use, rather than
|
||
|
specifying a maximum value for each resource. [#16334]
|
||
|
|
||
|
Implemented Berkeley DB globalization support architecture to enable localized
|
||
|
and stripped error and output messages. [#16863]
|
||
|
|
||
|
Added a new access method, DB_HEAP. Heap aims for efficient use (and re-use)
|
||
|
of disk space. Keys in a heap database are automatically generated by BDB, it
|
||
|
is recommended that one or more secondary indexes be used with a heap
|
||
|
database. For full details on DB_HEAP, see the Programmer's Reference
|
||
|
Guide. [#17627]
|
||
|
|
||
|
Added a compatible mode for 32bit and 64bit Windows environment. [#18225]
|
||
|
|
||
|
For the SQL API, concurrency between read and write transactions can now be
|
||
|
enabled using "PRAGMA multiversion". Added several pragmas that can be
|
||
|
used to configure the Berkeley DB datastore. [#18521]
|
||
|
|
||
|
Add several new pragmas to provide in-process support for replication in
|
||
|
the SQL API. [#18528]
|
||
|
|
||
|
The Berkeley DB X/open compliant XA resource manager has been restored,
|
||
|
including support for multi-threaded servers. [#18701]
|
||
|
|
||
|
Improved the ability to recover from an application crash on connections
|
||
|
through the SQL API. Berkeley DB will try to automatically clean up locks,
|
||
|
mutexes and transactions from the failed process. [#18713]
|
||
|
|
||
|
Add support for sequence usage in the SQL API using SQLite custom
|
||
|
functions. [#19007]
|
||
|
|
||
|
Add a pragma in the SQL API to allow execution of a cache trickle
|
||
|
command. [#19202]
|
||
|
|
||
|
Add a pragma in the SQL API to allow configuration of DB_SYSTEM_MEM
|
||
|
environments. [#19249]
|
||
|
|
||
|
The new db_env_set_win_security(SECURITY_ATTRIBUTES *) function allows an
|
||
|
application to specify the particular Microsoft Windows security attributes
|
||
|
to be used by Berkeley DB. This helps support applications which reduce their
|
||
|
privileges after opening the environment. [#19529]
|
||
|
|
||
|
|
||
|
== Database Environment Changes ==
|
||
|
|
||
|
None
|
||
|
|
||
|
== Concurrent Data Store Changes ==
|
||
|
|
||
|
None
|
||
|
|
||
|
== Access Method Changes ==
|
||
|
|
||
|
Modified the queue access method so that it only uses latches on the metadata
|
||
|
page rather than a latch and a lock. This was done to improve
|
||
|
performance. [#18749]
|
||
|
|
||
|
Fixed several bugs that could cause an update running with MVCC to get the
|
||
|
wrong version of a page or improperly update the metadata last page
|
||
|
number. [#19063]
|
||
|
|
||
|
The database open code will no longer log the open and close of the master
|
||
|
database in a file when opening a sub database in that file. [#19071]
|
||
|
|
||
|
Fixed a bug where an error during an update to a hash database with
|
||
|
DB_NOOVERWRITE set could return DB_KEYEXIST rather than the correct
|
||
|
error. [#19077]
|
||
|
|
||
|
Fixed a bug that could cause the wrong page number to be on a root or metadata
|
||
|
page if DB->compact moved the page and the operation was later rolled
|
||
|
forward. [#19167]
|
||
|
|
||
|
Fixed a bug that could cause the close of a secondary index database to fail
|
||
|
if the transaction doing the open aborted. [#19169]
|
||
|
|
||
|
Fixed a bug that could prevent an update to a primary recno or queue database
|
||
|
with DB_NOOVERWITE set. [#19230]
|
||
|
|
||
|
Fixed a bug when an update to a database with DB_NOOVERWRITE set could
|
||
|
incorrectly return DB_KEYEXIST rather than the correct error
|
||
|
(e.g., DB_LOCK_DEADLOCK). [#19345]
|
||
|
|
||
|
Fixed a bug preventing the use of the set_re_len and set_re_pad methods with
|
||
|
a RECNO database when configuring with --disable-queue. [#19367]
|
||
|
|
||
|
Fixed a bug in DB->compact on BTREE databases that did not check if the last
|
||
|
page in the database could be moved to a lower numbered page. [#19394]
|
||
|
|
||
|
Fixed a bug that could cause a Log Sequence Error when recovering the
|
||
|
deallocation of a multiple page overflow chain. [#19474]
|
||
|
|
||
|
Fixed a bug that could cause a diagnostic assertion if MVCC was in use
|
||
|
and multiple levels of a btree needed to be split. [#19481]
|
||
|
|
||
|
Fixed a few error paths that could cause a Panic with an "unpinned page
|
||
|
returned" error. [#19493]
|
||
|
|
||
|
Fixed a bug that closed a race condition that under heavy mult-threaded
|
||
|
appending to a queue database could cause some records to be lost. [#19498]
|
||
|
|
||
|
Fixed a bug that might cause DB->compact to mis-estimate the size of an
|
||
|
overflow record when merging two pages. This may cause the page to have more
|
||
|
data than desired. [#19562]
|
||
|
|
||
|
Fixed a bug in DB_ENV->fileid_reset that did not update the fileid's on the
|
||
|
metadata pages of subdatabases if the database file was not in native
|
||
|
byte order. [#19608]
|
||
|
|
||
|
Fixed a bug that caused the first directory specified in the create of
|
||
|
a partitioned database to get too many partitions. [#20041]
|
||
|
|
||
|
== SQL API Changes ==
|
||
|
|
||
|
Fixed a race condition that would cause a corruption error in one process when
|
||
|
two processes created the same SQL database. [#18929]
|
||
|
|
||
|
Fixed a bug that would cause a constraint violation when updating the
|
||
|
primary key with the same value. [#18976]
|
||
|
|
||
|
Overwriting an old backup with a new backup using the SQL online backup API
|
||
|
will no longer double the size of the database. [#19021]
|
||
|
|
||
|
Implemented index optimizations for indexes on large values. [#19094]
|
||
|
|
||
|
Fixed a bug that could cause an undetected deadlock between a
|
||
|
thread which moved a metadata or root page via a DB->compact operation and
|
||
|
another thread trying to open the database if the old page was being removed
|
||
|
from the file. [#19186]
|
||
|
|
||
|
Fix a bug in the BDBSQL_FILE_PER_TABLE option, to allow absolute
|
||
|
path names. [#19190]
|
||
|
|
||
|
Add a pragma to allow configuration of DB_SYSTEM_MEM environments. [#19249]
|
||
|
|
||
|
Exclusive transactions will now block new transactions and will prevent
|
||
|
existing transactions from making forward progress. [#19256]
|
||
|
|
||
|
Fixed a bug that would cause assert error when opening an in-memory hash
|
||
|
database with thread count configured when compiled with
|
||
|
--enable-diagnostic. [#19357]
|
||
|
|
||
|
Upgrade the bundled version of SQLite to 3.7.6.2 [#19376]
|
||
|
|
||
|
Fixed a performance bug with the cache victim selection algorithm when there
|
||
|
were multiple cache regions. [#19385]
|
||
|
|
||
|
Fixed a bug which could cause two SQL threads to have an undetected deadlock
|
||
|
when opening or closing tables. [#19386]
|
||
|
|
||
|
Fix a bug that could cause a hang when deleting a table if there are multiple
|
||
|
connections to a database from different processes. [#19419]
|
||
|
|
||
|
Fixed a bug which could cause multiple threads performing DB->compact on
|
||
|
the same database file to overrun the in-memory freelist, which could
|
||
|
potentially lead to memory corruption. [#19571]
|
||
|
|
||
|
Fixed a bug in DB->compact that could cause a loop if an attempt to move a
|
||
|
sub-database meta data page deadlocked. [#20028]
|
||
|
|
||
|
== C API Changes ==
|
||
|
|
||
|
Fixed a bug where encryption could not be enabled for individual databases
|
||
|
in an encrypted environment. [#18891]
|
||
|
|
||
|
Removed two unused error codes, DB_NOSERVER_HOME and DB_NOSERVER_ID. [#18978]
|
||
|
|
||
|
Added a DB_DBT_READONLY flag so that users can pass in a non-usermem key
|
||
|
(DB_DBT_USERMEM) for get operations. [#19360]
|
||
|
|
||
|
Fixed a bug in DB/DBC->get/pget that the partial flags are silently ignored
|
||
|
with positional flags and return inconsistent DBT. [#19540]
|
||
|
|
||
|
Fixed a bug which prevented items from being deleted on a secondary
|
||
|
database. [#19573]
|
||
|
|
||
|
Fixed a bug to correctly handle the DB_BUFFER_SMALL case on delete
|
||
|
operations when compression is enabled. [#19660]
|
||
|
|
||
|
== Tcl-specific API Changes ==
|
||
|
|
||
|
None.
|
||
|
|
||
|
|
||
|
== C#-specific API Changes ==
|
||
|
|
||
|
Added support for partial put/get in the C# API. [#18795]
|
||
|
|
||
|
Fixed a bug in compare delegate for secondary db. [#18935]
|
||
|
|
||
|
== Replication Changes ==
|
||
|
|
||
|
Replication Manager now allows differing ack policies at different
|
||
|
sites throughout the group, and supports dynamic changes to the ack
|
||
|
policy. (The ack policy in force is determined by the current
|
||
|
master.) [#14993]
|
||
|
|
||
|
Replication Manager "channels" feature allows applications to
|
||
|
share repmgr's communication facilities. [#17228]
|
||
|
|
||
|
Add example program for RepMgr "channels" feature: ex_rep_chan. [#17387]
|
||
|
|
||
|
Replication Manager now allows dynamic changes to a site's
|
||
|
"electability" (changes between zero and non-zero priority). This
|
||
|
feature should be used with care, because electability changes can in
|
||
|
boundary cases invalidate durability guarantees granted for previous
|
||
|
transactions. [#17497]
|
||
|
|
||
|
Changed election criteria so that later group transactions
|
||
|
won't get overwritten by earlier generations with more log. [#17815]
|
||
|
|
||
|
Added changes to master lease checks that result in improved
|
||
|
performance when using master leases. [#18960]
|
||
|
|
||
|
A log write failure on a replication master will now cause
|
||
|
a panic since the transaction may be committed on some clients. [#19054]
|
||
|
|
||
|
Fixed a few memory leak conditions on error paths. [#19131]
|
||
|
|
||
|
Change lease code so that zero priority sites do not count
|
||
|
in lease guarantees since they cannot be elected. [#19154]
|
||
|
|
||
|
Repmgr rerequest processing is moved from a dedicated thread to heartbeat
|
||
|
messages. Repmgr clients using heartbeats can now detect and rerequest
|
||
|
missing final master log records without master activity. [#19197]
|
||
|
|
||
|
Repmgr statistics are now included in full statistics output for
|
||
|
an environment. [#19198]
|
||
|
|
||
|
Fix an inefficiency in mixed version elections. We now check
|
||
|
if an election is won via the EID instead of priority. [#19254]
|
||
|
|
||
|
Changed election LSNs to use the last txn commit LSN instead
|
||
|
of the end of the log. [#19278]
|
||
|
|
||
|
Create replication internal database files in the environment
|
||
|
home directory rather than the data directory so that they are in the
|
||
|
same location as the other internal replication files. [#19403]
|
||
|
|
||
|
Fix a bug that was preventing repmgr from calling an election
|
||
|
when starting a site with the DB_REP_ELECTION flag. [#19546]
|
||
|
|
||
|
Fixed a bug which could cause a segfault at a replication master if a
|
||
|
named in-memory database was being created around the same time as a
|
||
|
client site were synchronizing (in "internal init") with the master.
|
||
|
[#19583]
|
||
|
|
||
|
Adjust lease code to consider timeout length when retrying. [#19705]
|
||
|
|
||
|
Fixed a bug that could cause a crash in replication groups of more
|
||
|
than 10 sites, with multiple processes sharing each DB environment
|
||
|
concurrently. [#19818]
|
||
|
|
||
|
Fix a bug where an assertion failure could happen if pages in a database
|
||
|
were deallocated during a client internal initialization.[#19851]
|
||
|
|
||
|
Fix a bug where an internal initialization of a queue database with
|
||
|
non-contiguous extent files could return an error. [#19925]
|
||
|
|
||
|
The 2SITE_STRICT replication configuration parameter is now turned on
|
||
|
by default. It can be turned off via a call to
|
||
|
DB_ENV->rep_set_config(). [#19937]
|
||
|
|
||
|
Repmgr heartbeats can now help detect a duplicate master without the
|
||
|
need for application activity. [#19950]
|
||
|
|
||
|
== Locking Subsystem Changes ==
|
||
|
|
||
|
Fixed a bug where an updater supporting DB_READ_UNCOMMITED might downgrade
|
||
|
its lock too soon if there was an error during the update. [#19155]
|
||
|
|
||
|
Fixed a bug where transaction timeouts could have been specified in a
|
||
|
database environment where the locking subsystem was disabled. [#19582]
|
||
|
|
||
|
Fixed a bug in a diagnostic assertion that was improperly triggered by the
|
||
|
removal of a sub-database. [#19683]
|
||
|
|
||
|
Fixed a bug that would cause DB_ENV->failcheck to free locks for a locker
|
||
|
associated with a database handle after the thread that opened the handle
|
||
|
exited. [#19881]
|
||
|
|
||
|
== Logging Subsystem Changes ==
|
||
|
|
||
|
Enhanced recovery so that it will not output extra checkpoint or transaction
|
||
|
id recycle log records if there was no activity since the last
|
||
|
checkpoint. [#15330]
|
||
|
|
||
|
Log checksums can now be disabled using the compile argument
|
||
|
--disable-log-checksum. This will give a performance increase at the risk
|
||
|
of undetectable corruption in the log records, which would make recovery
|
||
|
impossible. [#19143]
|
||
|
|
||
|
Fixed a bug that could cause a page that should have been removed from the
|
||
|
end of a file still be in the copy of the file in a hot backup. [#19996]
|
||
|
|
||
|
== Memory Pool Subsystem Changes ==
|
||
|
|
||
|
Fixed a bug in MPOOLFILE->get that did not permit the DB_MPOOL_DIRTY flag
|
||
|
to be used with other flags. [#19421]
|
||
|
|
||
|
== Mutex Subsystem Changes ==
|
||
|
|
||
|
Fixed a bug when the mutex region needs to be larger than 4GB, the region size
|
||
|
was incorrectly adjusted to be slightly too small to fit the mutexes. [#18968]
|
||
|
|
||
|
Fixed a performance problem with hybrid shared latches in which a request for
|
||
|
exclusive access would busy-wait (rather than put itself to sleep) if the latch
|
||
|
were held by a shared reader. This also fixed the timeout handling of hybrid
|
||
|
mutexes. In some cases the timeout would not be honored, resulting in delays
|
||
|
for the replication "read your writes" feature which were longer than requested.
|
||
|
[#18982]
|
||
|
|
||
|
Fixed the timeout handling of the pthreads mutexes used by the replication
|
||
|
"read your writes" feature. When a timeout occurred there was a race condition
|
||
|
which might result in a hang. [#19047]
|
||
|
|
||
|
|
||
|
== Transaction Subsystem Changes ==
|
||
|
|
||
|
Fixed a leak of log file ids when a database is closed before the end of a
|
||
|
transaction that references it. [#15957]
|
||
|
|
||
|
Fixed a bug that would cause a panic if a child transaction performed a database
|
||
|
rename, then aborted, and then the parent transaction committed. [#18069]
|
||
|
|
||
|
Fixed a bug where we released the metadata page lock too early if a
|
||
|
non-transactional update was being done. [#19036]
|
||
|
|
||
|
Removed the possibility that checkpoints will overlap in the log, decreasing
|
||
|
the time to recover. [#19062]
|
||
|
|
||
|
|
||
|
== Test Suite Changes ==
|
||
|
|
||
|
Require Tcl 8.5 or greater.
|
||
|
|
||
|
== Utility Changes ==
|
||
|
|
||
|
Added a new utility, db_tuner, which analyzes the data in a btree database,
|
||
|
and suggests a reasonable pagesize. [#18910]
|
||
|
|
||
|
Fixed some bugs in log_verify when there are in-memory database logs and subdb
|
||
|
logs. [#19157]
|
||
|
|
||
|
Modified db_hotbackup to not read from the file system as required on non-UNIX
|
||
|
systems. Also provided the db_copy function for this purpose. [#19863]
|
||
|
|
||
|
Fixed db_hotbackup so that when -d/-l or -D is not specified, DB_CONFIG is
|
||
|
used to determine the locations of the databases and logs in the source
|
||
|
environment. [#19994]
|
||
|
|
||
|
== Configuration, Documentation, Sample Apps, Portability and Build Changes ==
|
||
|
|
||
|
Changed SQL API library built on *nix to link with libpthreads when
|
||
|
necessary. [#19098]
|
||
|
|
||
|
Added CPPFLAGS into our --enable-jdbc configuration. [#19234]
|
||
|
|
||
|
Added encryption support into the Windows CE build project for SQL API. [#19632]
|
||
|
|
||
|
Fixed a bug in the STAT_INC_VERB() dtrace probe that was causing compiler
|
||
|
warnings. [#19707]
|
||
|
|
||
|
Fixed a bug that could cause a trap in db_dump using salvage mode if a
|
||
|
page was found that was not associated with any database in the file. [#19974]
|
||
|
|
||
|
On Cygwin, circumvented a bug in libtool that is exposed when building the
|
||
|
BDB SQL API in a directory path containing whitespace characters. [#19812]
|
||
|
|
||
|
== Example Changes ==
|
||
|
|
||
|
Update repmgr C, C#, C++, Java examples(ex_rep_mgr, ex_rep_gsg_repmgr,
|
||
|
ex_rep_chan, excs_repquote, excxx_repquote, excxx_epquote_gsg, repquote,
|
||
|
repquote_gsg) with their related API changes for group
|
||
|
membership. [#19586][#19622]
|
||
|
|
||
|
Port ex_rep_chan, ex_rep_gsg_repmgr,ex_rep_gsg_simple,
|
||
|
excxx_repquote_gsg_repmgr, excxx_repquote_gsg_simple to Window.[#19890]
|
||
|
|
||
|
== Miscellaneous Bug Fixes ==
|
||
|
|
||
|
Fixed a bug where memory copied from the Java API could leak if flags were not
|
||
|
correctly configured. [#19152]
|
||
|
|
||
|
== Deprecated Features ==
|
||
|
|
||
|
None
|
||
|
|
||
|
== Known Bugs ==
|
||
|
|
||
|
The SQL API has a known issue when using a blob field with a lot of content
|
||
|
and multiple concurrent connections to the database. [#19945]
|
||
|
|
||
|
Rollback of a dropped table in the SQL layer contains a mutex leak, which
|
||
|
can consume all mutex resources if enough rollbacks of table drops are
|
||
|
performed. [#20077]
|
||
|
|
||
|
The DB_CONFIG configuration parameters which specify path names currently
|
||
|
do not support names containing any whitespace characters. [#20158]
|
||
|
|
||
|
The BFile module has a known crash issue when using BFile handle for SQL
|
||
|
expressions interface on 64bit platforms. [#20193]
|
||
|
|
||
|
On systems without FTRUNCATE, db_verify will return an error for truncated
|
||
|
heap databases. This is a bug in db_verify, the database has been truncated
|
||
|
correctly and can be used in the future. [#20195]
|
||
|
|
||
|
An application using queue extents which is append mostly could see a
|
||
|
decrease in the buffer pool hit rate due to the failure to remove pages
|
||
|
from closed extents from the buffer pool. [#20217]
|
||
|
|