1<!--$Id: 3.3.11.html,v 1.6 2007/05/17 18:17:18 bostic Exp $--> 2<html> 3<head> 4<title>The Berkeley DB Package: DB 3.3.11 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 3.3.11 Change Log</h3> 11 12<h3>Major New Features:</h3> 13<ol> 14 15<li>Berkeley DB now continues to run when no disk space is available. [#637] 16<li>Add Berkeley DB API support for bulk-data returns. [#2934] 17<li>Add Berkeley DB API support for secondary indices. [#3329] 18<li>Add support for degree 1 isolation (dirty reads). [#3395] 19<li>Add support for native Berkeley DB two-phase commit. This requires 20an additional parameter to txn_prepare (a global transaction id), a new 21interface that returns the list of prepared but not yet committed 22transactions, and a new interface that supports transaction discard. [#3563] 23<li>Add support for the Embedix OS. [#3666] 24 25</ol> 26<h3>Interface Additions and Changes:</h3> 27<ol> 28 29<li>The new Db handle method DB->truncate supports discard of all 30records in a database. [#1984] 31<li>The DB_LOCK_CONFLICT flag has been removed. [#2606] 32<li>The new DbEnv handle method DBENV->set_lg_regionmax method 33supports sizing the logging subsystem's region. [#3509] 34<li>Add support for deadlock resolution based on the transaction holding 35the fewest, most, and most write locks. [#3020] 36<li>Replace the DB->set_malloc and DB->set_realloc functions, and 37the malloc arguments to DB->stat, lock_stat, log_archive, log_stat, 38memp_stat and txn_stat, with the new DB_ENV->set_alloc and 39DB->set_alloc interfaces. [#3329] 40<li>Allow the DB->get_type and DB->get_byteswapped methods to 41return error values. [#4071] 42 43</ol> 44<h3>General Environment Changes:</h3> 45<ol> 46 47<li>Fix a bug where threads of control were not properly informed that 48the database environment had failed with DB_RUNRECOVERY. [#3280] 49<li>Fix a bug where it was impossible to remove or run recovery on a 50database environment that had failed with DB_RUNRECOVERY. [#3280] 51<li>Fix a bug where error messages could be lost when performing 52recovery on a database environment as part of a DB->open call. 53[#3340] 54<li>Detect attempts to use DB handles inside transactions that were not 55originally created in an environment that supports transactions. [#3406] 56<li>Fix a bug where recovery could drop core when a subdatabase metadata 57page was being recovered. [#3454] 58<li>Fix bug where system mutex resources could be leaked when DB_THREAD 59was specified, on OSE, VxWorks and QNX. [#3474] 60<li>Fix a bug where the DBENV->set_feedback method could 61cause a core dump if the database environment had no 62existing log files. [#3894] 63 64 65</ol> 66<h3>General Access Method Changes:</h3> 67<ol> 68 69<li>Add the DB_FAST_STAT option to the DB->stat method to return only 70those database statistics that can be acquired without database 71traversal. Deprecate the DB_CACHED_COUNTS and DB_RECORDCOUNT flags to 72the DB->stat method. [#2090] 73<li>Fix bugs in the salvager where various error cases failed to unpin 74pages. [#2869] 75<li>Fix a bug where join memory could be allocated using the wrong 76allocation routines. [#3403] 77<li>Fix a bug where a transaction handle could be used after it was 78closed. [#3480] 79<li>Fix a bug in which a join cursor get could unexpectedly fail, or 80memory returned by a join cursor get could be freed or corrupted by 81an unrelated call using the primary database handle. [#3749] 82<li>Fix a bug in which DB-managed memory returned by a DB->get or 83DB->put call may be corrupted by a later cursor call. [#3576] 84<li>Fix a bug where file descriptors could be leaked when attempting 85to open database files where the metadata page could not be read. [#3786] 86<li>Fix a bug where the Db.open method could throw a DB_INCOMPLETE 87exception. [#3885] 88<li>Fix a bug in which partial gets that specify an offset and length 89beyond the end of the record could return garbage data. [#4117] 90 91</ol> 92<h3>Btree Access Method Changes:</h3> 93<ol> 94 95<li>Fix a bug where overwriting a previously deleted data item in a 96sorted, off-page, duplicate set could fail. [#3617] 97<li>Fix a bug where the Btree/Recno DB->stat method could 98leave a page pinned. [#3761] 99<li>Fix a bug where aborting a child transaction could cause an application 100crash if cursors were open in the parent transaction. [#4002] 101 102</ol> 103<h3>Hash Access Method Changes:</h3> 104<ol> 105 106<li>Fix a bug where memory could be freed and then returned to the 107application. [#3506] 108<li>Fix a bug where truncating a hash database with off-page duplicate 109records could drop core. 110<li>Fix a bug where certain record partial put operations could 111be unrecoverable. [#3944] 112<li>Fix a bug where abort when converting from on-page to off-page 113duplicate sets could cause a core dump. [#3975] 114<li>Fix a bug where an error in converting from on-page to off-page 115duplicate sets could leave a page pinned. [#3975] 116<li>Fix a bug where aborting a child transaction could cause open cursors 117belonging to a parent transaction to return corrupt or incomplete data. [#4002] 118<li>Fix a class of bugs in which aborting a child transaction could cause a 119hash cursor that pointed at a deleted item to start pointing at a different, 120incorrect item. [#4052] [#4142] 121 122</ol> 123<h3>Queue Access Method Changes:</h3> 124<ol> 125 126<li>Preserve Queue database extent size across dump/load cycles. [#3323] 127<li>Fix a bug where calling the DB->stat method on an empty Queue 128database opened in read-only mode dropped core. [#3333] 129<li>Fix a bug in which attempts to get nonexistent records in a Queue 130database could incorrectly return EIO. [#3670] 131<li>Fix a bug where the delete of an extent file could be unrecoverable. [#3927] 132<li>Improve concurrency in the Queue access method by removing a log 133write made while holding a metapage lock during record append. [#3939] 134<li>Fix a bug where the metapage lock was not released on error. [#3998] 135<li>Fix a bug where log_archive with the DB_ARCH_DATA flag specified 136did not return the names of the extent files for Queue databases. [#3968] 137<li>Improve concurrency in the Queue access method by removing a log write made while holding a metapage lock during record append. [#3939] 138 139</ol> 140<h3>Recno Access Method Changes:</h3> 141<ol> 142 143<li>Fix a bug in which a DB->get(DB_GET_BOTH) or DBC->c_get(DB_GET_BOTH) 144operation on a Recno database could erroneously return an item with 145a matching datum but a different record number from that specified. 146[#3878] 147<li>Fix a bug in which implicitly-created data items could incorrectly 148appear non-empty in a fixed-length Recno database with an re_len 149greater than the threshold for moving items off-page. [#2934] 150<li>Fix a bug where partial backing source file records (records 151terminated by end-of-file) were lost. [#4161] 152 153</ol> 154<h3>C++ API Changes:</h3> 155<ol> 156 157<li>Add C++ methods to support access from C++ class objects to 158underlying C objects. [#3656] 159 160</ol> 161<h3>Java API Changes:</h3> 162<ol> 163 164<li>Fix a bug where calling the env.log_put method caused a core dump. [#3401] 165<li>Fix a bug where the Java lock statistics structure was out-of-date 166with the C version and the documentation. [#3489] 167 168</ol> 169<h3>Tcl API Changes:</h3> 170<ol> 171 172<li>Fix a bug where memory guard bytes were incorrectly checked by the 173Tcl txn_stat call. [#3431] 174<li>Fix a bug in which values too large for a signed 32-bit integer, 175but which would fit in the unsigned 32-bit integer called for by many 176DB interfaces, would be incorrectly rejected by the Tcl interface 177on some platforms. [#4184] 178 179</ol> 180<h3>RPC Client/Server Changes:</h3> 181<ol> 182 183<li>Fix a bug in RPC reply for the DB->join method. [#3425] 184<li>Change RPC to use Berkeley DB major/minor release numbers as the 185RPC version numbers. [#3425] 186<li>Fix a bug where lock detection wasn't being run. 187<li>Fix a bug where we were not returning the correct value 188for get_byteswapped when running over RPC. [#3771] 189<li>Change the method interface from set_server to set_rpc_server 190and add an argument to allow users to send in a CLIENT structure for 191us to use for RPC. [#3772] 192 193</ol> 194<h3>XA Resource Manager Changes:</h3> 195 196<blockquote>None.</blockquote> 197 198<h3>Locking Subsystem Changes:</h3> 199<ol> 200 201<li>Speed up deadlock detector check by linking lockers together so we 202don't traverse a large and sparse locker table. [#2983] 203<li>Fix a bug where deadlock detection could be incorrect. [#3479] 204<li>Fix a bug where deadlock resolution of youngest/oldest transactions 205incorrectly selected the transaction to abort. [#3149] 206 207</ol> 208<h3>Logging Subsystem Changes:</h3> 209<ol> 210 211<li>Fix a bug where running recovery on a database environment containing 212only logs from a previous release of Berkeley DB, in which log.0000000001 213doesn't exist, could fail. [#3380] 214<li>Fix a bug where opening too many files could cause a core dump. [#3399] 215<li>Fix a bug where resetting the log buffer size could cause a core 216dump. [#3855] 217<li>Fix a bug where files in the database environment similarly named to 218Berkeley DB log files could cause applications to fail. [#4234] 219 220</ol> 221<h3>Buffer Pool Subsystem Changes:</h3> 222<ol> 223 224<li>Fix a bug where incorrect values for the total size of the cache 225were being returned by the memp_stat interface. [#3638] 226<li>Fix a bug where the clean-page count for the Berkeley DB buffer cache could become incorrect. [#3679] 227<li>Fix a bug where checkpoints could not succeed if there was 228a temporary backing file for which the process did not have 229an open file descriptor. [#3826] 230<li>Detect unreasonable cache sizes, fix a bug where 4GB regions 231could drop core. [#3904] 232<li>Fix a bug where checkpoints could be blocked from ever completing if 233an application combined Berkeley DB access method use of the buffer pool 234with non-DB use. [#4058] 235<li>Fix a bug where dirty/clean page counts could be incorrect. [#4249] 236 237</ol> 238<h3>Transaction Subsystem Changes:</h3> 239<ol> 240 241<li>Fix a potential memory leak in the txn_stat interface. [#3426] 242 243</ol> 244<h3>Utility Changes:</h3> 245<ol> 246 247<li>Add a -f option to return only those database statistics that can 248be acquired without database traversal. [#2090] 249<li>Fix a bug in several utilities where a destroyed DB handle could be 250used after it was closed, resulting in core dumps. [#3565] 251<li>Fix a bug where db_load would fail in any environment supporting 252transactions. [#3565] 253<li>Fix a bug where db_stat could drop core if the environment had not 254been configured to support all services. [#3526] 255<li>Increase the size of the cache created by the db_dump utility 256when no pre-existing environment is specified. [#4192] 257 258</ol> 259<h3>Database or Log File On-Disk Format Changes:</h3> 260 261<blockquote>None.</blockquote> 262 263<h3>Configuration, Documentation, Portability and Build Changes:</h3> 264<ol> 265 266<li>Upgrade to config.guess version 1.193, config.sub version 1.207, 267autoconf version 2.50. 268<li>Fix a bug where log_archive could return EINVAL on VxWorks because 269checkpoint could zero out portions of the log. 270<li>Add the --with-uniquename=NAME configuration option so that multiple 271copies of Berkeley DB can be loaded into a single process. [#3025] 272<li>Document the relationship between log in-memory buffer size and log 273file size. [#3340] 274<li>Fix a bug where the user CFLAGS value was overwritten on Linux. [#3375] 275<li>Fix a bug where the db_recops type values were overwritten by 276#defines. [#3407] 277<li>PowerPC/GCC system mutexes were incorrect. [#3417] 278<li>Fix a bug where --enable-bigfile was incorrectly evaluated. [#3559] 279<li>Clarify lock_vec documentation with respect to structure fields. [#3552] 280<li>Fix a mutex memory leak on AIX and HPUX. [#3703] 281<li>Support by static and shared libraries by default. [#3722] 282<li>Add mutex support for GCC and Alpha/Sparc platforms. [#3780] 283<li>Fix Berkeley DB error messages with extraneous trailing 284newline characters. [#3915] 285<li>Fix a bug where installing or uninstalling the documentation 286could remove files other than Berkeley DB's. [#3960] 287<li>Fix a bug where ssize_t was typed as "int" on Win64. [#3948] 288<li>Fix a bug where recovery could fail and/or databases be corrupted 289for applications running on filesystems that do not zero out implicitly 290created blocks (for example, VxWorks and Windows 95/95). [#4025] 291 292</ol> 293 294</body> 295</html> 296