1<!--$Id: 4.5.20.html,v 1.25 2007/05/17 18:17:18 bostic Exp $--> 2<html> 3<head> 4<title>The Berkeley DB Package: DB 4.5.20 Change Log</title> 5<meta name="description" content="Berkeley DB: A database programmatic toolkit."> 6<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods"> 7</head> 8<body bgcolor=white> 9 10<h3 align=center>Berkeley DB 4.5.20 Change Log</h3> 11 12<h3>Database or Log File On-Disk Format Changes:</h3> 13<ol> 14 15<li>The on-disk log format has changed. 16 17</ol> 18<h3>New Features:</h3> 19<ol> 20 21<li>Multi-Version Concurrency Control for the Btree/Recno access 22methods. 23<li>A new replication framework with a default TCP/IP setup. 24<li>Online replication upgrades for high availability replicated 24/7 25systems. 26<li>A new event-style notification. 27<li>Several enhancements to the Java Collections API including the 28implementation of the size() method. 29 30</ol> 31<h3>Database Environment Changes:</h3> 32<ol> 33 34<li>Update the DB_ENV->failchk method to garbage collect per-process 35mutexes stranded after unexpected process failure. [#13964] 36<li>Fix a bug that could cause memory used to track threads for 37DB_ENV->failchk to not be reused when a thread no longer exists. 38[#14425] 39<li>Add set_event_notify behavior as part of new event notification in 40Berkeley DB. [#14534] 41<li>Fix a bug so that we no longer panic on DB_ENV->close() if a 42previous environment close failed to log. This condition will now return 43an error. [#14693] 44<li>Created os_getenv, removed clib/getenv, implemented Windows specific 45behavior. [#14942] 46<li>Fix a bug where it was possible to corrupt the DB_REGISTER 47information file, making it impossible for Berkeley DB applications to 48join database environments. [#14998] 49 50</ol> 51<h3>Concurrent Data Store Changes:</h3> 52<ol> 53 54<li>Fix a bug where renaming a subdatabase in a Concurrent Data Store 55environment could fail. [#14185] 56 57</ol> 58<h3>General Access Method Changes:</h3> 59<ol> 60 61<li>Fix a bug that could leave extra unallocated pages at the end of a 62database file. [#14031] 63<li>Optimize secondary updates when overwriting primary records. 64[#14075] 65<li>Fix a bug to prevent a trap when creating a named in-memory database 66and there are already temporary files open. [#14133] 67<li>Fix a bug which caused a trap if the key parameter to DBC->c_get was 68omitted with DB_CURRENT. [#14143] 69<li>Fix a bug with secondary cursors when the secondary has off-page 70duplicates. This bug resulted in incorrect primary data being returned. 71[#14240] 72<li>Improve performance when removing a subdatabase by not locking every 73page. [#14366] 74<li>Fix a bug that would not properly upgrade database files from 75releases 3.2.9 (and earlier) to releases 4.0 (and greater). [#14461] 76<li>Fix a bug that could cause a DB_READ_UNCOMMITTED get through a 77secondary index to return DB_SECONDARY_CORRUPT. [#14487] 78<li>Fix a bug so that non-transactional cursor updates of a 79transactional database will generate an error. [#14519] 80<li>Add a message when the system panics due to a page in the wrong 81state at its time of allocation. [#14527] 82<li>Fix a remove failure when attempting to remove a file that is open 83in another thread of control. [#14780] 84<li>Fix a bug where the key was not ignored when doing a cursor put with 85the DB_CURRENT flag. [#14988] 86 87</ol> 88<h3>Btree Access Method Changes:</h3> 89<ol> 90 91<li>Changed the implementation of internal nodes in btrees so that they 92no longer share references to overflow pages with leaf nodes. [#10717] 93<li>Fix a bug that could cause a diagnostic assertion by setting the 94deleted bit on a record in an internal node. [#13944] 95<li>Fix three problems in BTREE compaction: [#14238] 96<ol type="a"> 97<li>When deleting a page don't check the next key in the parent if we 98are going to delete the parent too. 99<li>Need to check that the tree has not collapsed between dropping a 100read lock and getting the write lock. If it has collapsed we will fetch 101the root of the tree. 102<li>Fix a case where we fail to lock the next page before reading it. 103</ol> 104<li>Fix a bug that could cause the compaction of a Btree with sorted 105duplicates to fail when attempting to compact an off page duplicate tree 106if a key could not fit in an internal node. [#14771] 107<li>Fix a bug that causes a loop if an empty Btree was compacted. 108[#14493] 109 110</ol> 111<h3>Hash Access Method Changes:</h3> 112<ol> 113 114<li>Fix a bug to allow creation of hash pages during truncate recovery. 115[#14247] 116 117</ol> 118<h3>Queue Access Method Changes:</h3> 119<ol> 120 121<li>Fix a bug where reads of data items outside the range of the queue 122were not kept locked to the end of the transaction, breaking 123serializability. [#13719] 124<li>Fix a bug that could cause corruption in queue extent files if 125multiple processes tried to open the same extent at the same time. 126[#14438] 127<li>Improve concurrency for in-place updates in queue databases. 128[#14918] 129 130</ol> 131<h3>Recno Access Method Changes:</h3> 132 133None. 134 135<h3>C++-specific API Changes:</h3> 136<ol> 137 138<li>C++ applications that check the error code in exceptions should note 139that DbMemoryException has been changed to have the error code 140DB_BUFFER_SMALL rather than ENOMEM, to match the error returned by the 141C API. DbMemoryException will be thrown when a Dbt is too small to 142contain data returned by Berkeley DB. When a call to malloc fails, or 143some other resource is exhausted, a plain DbException will be thrown 144with error code set to ENOMEM. [#13939] 145 146</ol> 147<h3>Java-specific API Changes:</h3> 148<ol> 149 150<li>Database.verify may now be called. This method is now static and 151takes a DatabaseConfig parameter. [#13971] 152<li>Add DB_ENV->{fileid_reset, lsn_reset} to the public API. [#14076] 153 154</ol> 155<h3>Java collections and bind API Changes:</h3> 156<ol> 157 158<li>The com.sleepycat.collections package is now fully compatible with 159the Java Collections framework. [#14732] 160 161</ol> 162<h3>Tcl-specific API Changes:</h3> 163<ol> 164 165<li>Fix a conflicting variable, sysscript.tcl. [#15051] 166 167</ol> 168<h3>RPC-specific Client/Server Changes:</h3> 169 170None. 171 172<h3>Replication Changes:</h3> 173<ol> 174 175<li>Fix a bug when running with DEBUG_ROP or DEBUG_WOP. [#13394] 176<li>Add live replication upgrade support [#13670] 177<li>Fix a bug so that client databases are removed at the start of 178internal initialization. [#14147] 179<li>Fix a bug in replication internal initialization so that data_dir 180will be handled correctly. Make internal initialization resilient to 181multiple data_dir calls with the same directory. [#14489] 182<li>Fix a bug in the 4.2 sync-up algorithm that could result in no open 183files. [#14552] 184<li>Fix a bug when clients decide to re-request. [#14642] 185<li>Fix a bug where a PERM bulk buffer could have a zero LSN passed to 186the application callback. [#14675] 187<li>Change names of some existing replication API methods as described 188in "Replication Method Naming" page of the "Upgrading Berkeley DB 189Applications to Release 4.5" section of Berkeley DB Reference Guide. 190[#14723] 191<li>Fix a bug which could cause an election to succeed only after 192waiting for the timeout to expire, even when all sites responded in a 193timely manner. The bug was most easily visible in an election between 2 194sites. [#14752] 195<li>Fix a bug where a process could have an old file handle to a log 196file. [#14797] 197<li>Fix a bug where a "log_more" message could be on a log file 198boundary. [#15034] 199<li>Fix a bug that could cause log corruption if a database open 200operation were attempted during a call to rep_start in another thread. 201[#15035] 202<li>Fix a bug during elections where a vote2 arrives before its vote1. 203[#15055] 204<li>Fix a bug to make sure we are a client if sending a REP_REREQUEST. 205[#15066] 206 207</ol> 208<h3>XA Resource Manager Changes:</h3> 209 210None. 211 212<h3>Locking Subsystem Changes:</h3> 213<ol> 214 215<li>Fix a bug that could cause a write to hang if DB_READ_UNCOMMITTED 216is enabled and it tries to reacquire a write lock. [#14919] 217 218</ol> 219<h3>Logging Subsystem Changes:</h3> 220<ol> 221 222<li>Fix a bug so that log headers are now included in the checksum. This 223avoids a possible race in doing hot backups. [#11636]. 224<li>Add a check so that some log sequence errors are diagnosed at run 225time rather than during recovery. [#13231] 226<li>Fix a bug where recovery fails if there is no disk space for the 227forced checkpoint that occurs at the end of processing the log. [#13986] 228<li>Fix a bug which could cause a page to be missing from the end of a 229database file if the page at the end of the file was freed while it 230contained data and the system was restarted before the log record for 231that free was flushed to disk. [#14090] 232<li>Fix a bug that could cause log files to be incorrectly removed by 233log_archive if it was run immediately after recovery. [#14874] 234 235</ol> 236<h3>Memory Pool Subsystem Changes:</h3> 237<ol> 238 239<li>Fix a bug that could cause corruption to the buffer pool cache if a 240race condition was hit while using DB->compact. [#14360] 241<li>Fix a bug where cache pages could be leaked in applications creating 242temporary files for which the DB_MPOOL_NOFILE flag was set. [#14544] 243 244</ol> 245<h3>Transaction Subsystem Changes:</h3> 246<ol> 247 248<li>Fix a bug that could cause extra empty pages to appear in a database 249file after recovery. [#11118] 250<li>Fix a bug triggered when running recovery with a feedback function 251that could cause a NULL pointer dereference. [#13834] 252<li>Fix a bug where running recovery could create duplicate entries in 253the data directory list. [#13884] 254<li>Fix a bug to not trade locks if a write lock is already owned. 255[#13917] 256<li>Fix a bug that could cause traps or hangs if the DB_TXN->set_name 257function is used in a multithreaded application. [#14033] 258<li>Fix a bug so that a transaction can no longer be committed after it 259had deadlocked. [#14037] 260<li>Fix a bug that could cause a trap during recovery if multiple 261operations that could remove the same extent are recovered. [#14061] 262<li>Fix a bug that could cause an extent file to be deleted after the 263last record in the extent was consumed but the consuming transaction was 264aborted. [#14179] 265<li>Fix a bug where the parent database would not use 266DB_READ_UNCOMMITTED in certain cases when calling DBC->c_pget. [#14361] 267<li>Fix a bug so that it is no longer possible to do a non-transactional 268cursor update on a database that is opened transactionally. [#14519] 269<li>Fix a bug that causes a sequence to ignore the DB_AUTO_COMMIT 270settings. [#14582] 271<li>Fix a bug, change txn_recover so that multiple processes will 272recover prepared transactions without requiring that the first process 273stay active. [#14707] 274<li>Fix a bug that could cause the wrong record to be deleted if a 275transaction had a cursor on a record with a pending delete and then 276replaced a record that contained overflow data or replaced a record with 277overflow data and that replace failed. [#14834] 278 279</ol> 280<h3>Utility Changes:</h3> 281<ol> 282 283<li>Fix a bug that caused db_verify to not check the order on leaf pages 284which were the leftmost children of an internal node. [#13004] 285<li>Fix a bug that caused db_hotbackup to not backup queue extent files. 286[#13848] 287<li>Fix a bug so that db_verify no longer reports that an unused hash 288page is not fully zeroed. [#14030] 289<li>Fix a bug where db_stat ignored the -f option to return "fast 290statistics". [#14283] 291<li>Fix a bug that prevented the db_stat utility from opening database 292files with write permission so that meta data statistics would be 293updated. [#14755] 294<li>Fix a bug in db_hotbackup related to windows. Sub-directories are 295now ignored. [#14757] 296 297</ol> 298<h3>Configuration, Documentation, Portability and Build Changes:</h3> 299<ol> 300 301<li>The Berkeley DB 4.3 and 4.4 releases disallowed using the 302--with-uniquename configuration option with the C++, Java, or RPC 303--enable-XXX options. The 4.5 release returns to the 4.2 release 304behavior, allowing those combinations of configuration options. [#14067] 305<li>Fix build issues when CONFIG_TEST is not enabled for Tcl. [#14507] 306<li>There are updated build instructions for Berkeley DB PHP module on 307Linux. [#14249] 308<li>Use libtool's "standard" environment variable names so that you can 309set "AR" to "ar -X64" for example, and modify both libtool and the 310Makefile commands. Remove the install-strip target from the Makefile, 311it is no longer used. [#14726] 312<li>Fix a bug where, when a database is opened with the DB_THREAD flag 313(the default in Java), and an operation in one thread causes the 314database to be truncated (typically when the last page in the database 315is freed) concurrently with a read or write in another thread, there can 316be arbitrary data loss, as Windows zeros out pages from the read/write 317location to the end of the file. [#15063] 318 319</ol> 320 321</body> 322</html> 323