1<!--"$Id--> 2<html> 3<head> 4<title>The Berkeley DB Package: DB 3.1.14 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.1.14 Change Log</h3> 11 12<h3>Database On-Disk Format Changes:</h3> 13<ol> 14<li>The on-disk Btree/Recno format has changed from version 7 to version 158, and the on-disk Hash format has changed from version 6 to version 7. 16For information on upgrading database formats, see "Upgrading Applications 17to the 3.1 release" in the Berkeley DB Reference Guide for more 18information. 19</ol> 20 21<h3>Major New Features:</h3> 22<ol> 23 24<li>Berkeley DB now includes support for VxWorks systems. 25<li>Off-page duplicates now stored in an on-disk B+tree structure, 26greatly speeding searches in sorted duplicate sets. In addition, 27a count of duplicate items is now maintained for all duplicate sets, 28providing better optimization of logical joins. [#303] 29<li>New cursor method, DBcursor->c_count, that returns the number of 30duplicate items associated with the referenced key. [#303] 31<li>Berkeley DB now includes a RPC-based client/server implementation. [#426] 32<li>Recovery to a specified time is supported. [#855] 33<li>New cursor method, DB->verify, that supports database verification 34and salvage. [#588, #827, #1156] 35<li>Add a Berkeley DB method to rename databases. [#1492] 36<li>Significantly increased verbose error output for debugging support. [#1866] 37 38</ol> 39<h3>Interface Additions and Changes:</h3> 40<ol> 41 42<li>All of the Berkeley DB utilities now support the -V option to display 43the library version. 44<li>It is now possible to set almost all the Berkeley DB environment 45configuration options in the environment's DB_CONFIG file. There are new 46DB_ENV handle methods for setting the database directory, logging 47directory and temporary file directory. These were previously set using 48the DB_DATA_DIR, DB_LOG_DIR and DB_TMP_DIR strings in the config argument 49to the DB_ENV->open and DB_ENV->remove methods. As part of this change, 50the config argument to the DB_ENV->open and DB_ENV->remove methods has 51been removed in favor of the new methods. 52<li>Add a private field to the DBT structure, enabling applications to 53pass private information into the Btree/Hash comparison/hashing functions. 54<li>Change the redo parameter of the function passed to the 55DBENV->set_tx_recover interface used to be an integer set to any one 56of a number of #defined values. The <b>redo</b> parameter has been 57replaced by the <b>op</b> parameter, an enumerated type. [#606] 58<li>Add support for a new DBcursor->c_get flags, DB_NEXT_NODUP 59(DB_PREV_NODUP), which return the next (previous) key/data pair where the 60data item is not a duplicate of the current key. [#887, #1985] 61<li>Modify the DB->put interface, when using the DB_APPEND flag, to 62support DBT conventions. [#1523] 63<li>Add DB_NODUPDATA option to the DB->put and DBcursor->c_put 64methods to disallow duplicate duplicates. [#1866] 65<li>Add a fast return of approximate row counts for all access methods, 66add separate key and data statistics for the Hash access method. 67Regularize the naming scheme for all statistics. [#1978] 68<li>Move application-wide configuration interfaces from DbEnv method 69set to static function interfaces. [#2245] 70 71</ol> 72<h3>General Environment Changes:</h3> 73<ol> 74 75<li>It is now possible to build and run Berkeley DB on systems that do 76not have either of the mmap(2) or shmget(2) interfaces. 77<li>Take two checkpoints after recovery completes so that on next recovery 78no work needs to be redone. [#1316] 79<li>Fix a bug where, if DIAGNOSTIC was #defined, recovery could incorrectly 80assert that no files should be open and drop core. [#1316] 81<li>Fix a bug where recovering from deleting a page in a database could 82cause other operations to not be rolled-forward. [#1532] 83<li>Fix a bug where HP-UX msemaphore semaphores could cause mutex races 84on HP-UX 10.XX. [#2199] 85 86</ol> 87<h3>General Access Method Changes:</h3> 88<ol> 89 90<li>Add support for zero-length keys. [#625] 91<li>Fix a bug where join cursors were not automatically closed when the 92primary DB handle was closed. [#1325] 93<li>Fix a bug where the DB->remove method of an entire database would create 94a backup file even if the application wasn't running with transactions; the 95backup files were never removed. [#1357] 96<li>Fix a bug where when adding a new page in a chain of duplicates the 97LSN of a page could be unnecessarily updated, confusing recovery. [#1412] 98<li>Fix a bug where creating a subdatabase ignored the specification of 99a non-standard page size. [#1422] 100<li>Fix a bug where join cursors didn't correctly support DB_DBT_XXX 101flags. [#1639] 102<li>Fix bugs in join cursor handling of DBTs, and associated memory leaks. 103[#1777, #1929, #1940] 104<li>Change error return for duplicate duplicates from EINVAL to 105DB_KEYEXIST. [#1866] 106<li>Fix a bug where DB handles opened in threaded environments were not 107themselves automatically threaded. [#1943] 108<li>Fix a bug where the DB->remove method could leak memory. [#2066] 109 110</ol> 111<h3>Btree Access Method Changes:</h3> 112<ol> 113 114<li>Increase the accuracy of the returned statistics count for Btree key 115and data items. 116<li>Fix a bug where the next page in the leaf page chain might not be 117updated during recovery. [#1320] 118<li>Fix a bug where Btrees supporting retrieval by record number could 119become corrupted for some data sets. [#1663] 120<li>Fix a bug where Btrees supporting retrieval by record number could 121have incorrect record counts after reverse splits. [#1688] 122<li>Fix a bug where keys stored as overflow items could be incorrectly 123compared. [#1994] 124 125</ol> 126<h3>Hash Access Method Changes:</h3> 127<ol> 128 129<li>Fix a bug where partial puts in the hash access method could lead to 130heap corruption. [#1300] 131<li>Fix a bug where duplicate data items were not correctly identified 132during logging and could be incorrectly restored during recovery. [#1377] 133 134</ol> 135<h3>Queue Access Method Changes:</h3> 136<ol> 137 138<li>Fix a bug where an invalid lock was acquired when duplicating a cursor 139in Concurrent Data Store. 140<li>Fix a bug where EAGAIN could be returned instead of DB_LOCK_DEADLOCK. 141[#1354] 142<li>Fix a bug where the Queue Access Method could drop core if a put 143operation failed. [#1449] 144<li>Fix a bug where user requests for non-blocking locks were ignored. [#1970] 145 146</ol> 147<h3>Recno Access Method Changes:</h3> 148 149<blockquote>None.</blockquote> 150 151<h3>C++ API Changes:</h3> 152<ol> 153 154<li>Fix a large number of warnings and portability problems for various 155C++ compilers. 156<li>Add "void" type to operator = in all examples for portability. 157<li>Fix a bug where the DB_CXX_NO_EXCEPTIONS in the Db constructor was 158causing immediate failure of the call. [#1350] 159<li>Fix problems with disposing of Db and DbEnv objects: the underlying 160DB, DB_ENV objects were looked at after a close(), which is illegal, 161since the memory is freed. And in the case where Db::Db() is called 162with a NULL DbEnv, we create our own DbEnv object, and this was not 163being deleted on close(). [#1466, #1467, #1468] 164<li>Fix a bug where Db::remove and Db::upgrade were specified 'static'. [#1469] 165<li>Fix a bug where memory freed during open/close was written to in the 166destructor. [#1889] 167<li>Fix a bug where Db::close and DbEnv::close and their associated 168destructors interacted wrongly. [#1998] 169 170</ol> 171<h3>Java API Changes:</h3> 172<ol> 173 174<li>Fix a bug where, when building with versions 1.1.* of the JDK, an 175explicit reference for the CLASSPATH prevented compilation from within 176MS Visual studio. [#1334] 177<li>Avoid using true/false as they aren't recognized by older C++ systems 178(in this case, SPARC Solaris 2.6 with Sun Workshop 4.2). [#1384] 179<li>Fix a bug where Java could fail to run on Solaris due to memory 180allocation issues with shared libraries. [#1384] 181<li>Rewrite the Java API in C for portability reasons (it was previously 182implemented in C++). [#1384] 183 184</ol> 185<h3>Tcl API Changes:</h3> 186<ol> 187 188<li>The -mpool option to the berkdb env command is now the default. 189<li>The -txn option to the berkdb env command now implies the -lock and -log 190options. 191 192</ol> 193<h3>RPC Client/Server Changes:</h3> 194<blockquote>None.</blockquote> 195 196<h3>XA Resource Manager Changes:</h3> 197<ol> 198 199<li>Fix a bug where returned XID fields (currently unused by Tuxedo) were 200being incorrectly zeroed. [#1840] 201 202</ol> 203<h3>Locking Subsystem Changes:</h3> 204<ol> 205 206<li>Lock objects with waiters are now separately threaded to make deadlock 207detection faster. [#1983] 208<li>Fix a bug where locks could be leaked if the DB_LOCK_NOWAIT flag was 209specified and the lock was already held. [#2072] 210<li>Add a count of the lock requests that failed because DB_LOCK_NOWAIT 211was set to the lock region statistics. [#2072] 212 213</ol> 214<h3>Logging Subsystem Changes:</h3> 215<ol> 216 217<li>Fix a bug where logging print routines displayed file IDs as unsigned 218values instead of signed values. 219<li>Change the Windows/NT release to no longer pre-allocate logfiles. 220[#849, #1780] 221<li>Fix a bug where if you attempt to do catastrophic recovery on a log 222that spans a crash you can get errors of the form "open: invalid 223argument". [#1365] 224<li>Fix a bug where the DB_ARCH_LOG flag to the log_archive interface 225could fail to return the correct set of log filenames. [#1426] 226<li>Fix a bug where free'd memory could be accessed in an error path. [#2053] 227 228</ol> 229<h3>Buffer Pool Subsystem Changes:</h3> 230<ol> 231 232<li>Fix a bug where Berkeley DB could fail when too many databases were 233created in an environment. [#1528] 234 235</ol> 236<h3>Transaction Subsystem Changes:</h3> 237<ol> 238 239<li>Fix a number of bugs in DB file registration that could cause problems 240if files were repeatedly opened and closed. [#1943] 241<li>Remove all requirements that applications flush the log before closing 242the environment to ensure that no additional work needs to be done during 243recovery. [#2006] 244<li>Fix a bug where an unthreaded DB handle could be incorrectly used in 245a threaded environment, during recovery. [#2033] 246 247</ol> 248<h3>Utility Changes:</h3> 249<ol> 250 251<li>Convert the supporting utilities to use common code for signal 252and process-ID log file handling. [#1596] 253 254</ol> 255<h3>Configuration, Documentation, Portability and Build Changes:</h3> 256<ol> 257 258<li>Upgrade to the current Perl BerkeleyDB and DB_File modules. 259<li>Upgrade to the current Scriptics Tcl release (8.3), add the --with-tcl 260option to automatically use the tclConfig.sh information to correctly 261compile the Tcl API and test suite. 262<li>Upgrade to current versions of libtool (1.3.4), autoconf and the 263config scripts. 264<li>Update the test suite to no longer require a large set of UNIX 265utilities to run. 266<li>Convert to CVS/RCS source repository and file revision Ids. 267<li>Include Windows 2000 support. 268<li>Support systems without strtoul(3) support. [#1337] 269<li>Fix a bug where the DB 1.85 API interface was incorrectly named, so 270configuration scripts wouldn't find "dbopen" and applications wouldn't 271load. [#1345] 272<li>Fix a bug where AIX wouldn't compile because there was no MUTEX_INIT 273macro for the test-and-set mutexes. [#1354] 274<li>Fix a bug where Berkeley DB incorrectly aligned memory from the shared 275memory regions for gcc on the UltraSparc. [#1395, #1404] 276<li>Fix a bug where DB did not correctly build on the Siemens Nixdorf 277Reliant Unix because the initspin() function was expected to return an 278int. [#1418] 279<li>Fix a bug where DB would fail on HP-UX, apparently the HP-UX C library 280contains pread/pwrite symbols, but they don't work. [#1459] 281<li>Call GetTempDir() to determine system's temp directory on Windows. [#1478] 282<li>Fix a case where large buffers could be allocated on the stack when 283running on Windows, leading to stack resource starvation in multithreaded 284programs. [#1530] 285<li>Fix a bug where DB would fail to compile on AIX because of a missing 286MUTEX_INIT definition. [#1561] 287<li>Fix a bug where out-of-memory condition when scanning a directory failed 288to close the directory. [#1872] 289<li>Remove all use of signal functions. [#1964] 290<li>Fix a bug where the POSIX fcntl system call would be called even after 291the underlying Berkeley DB open call had been replaced by the application. 292[#2114] 293<li>Fix a bug where the standard free routine was still called when finishing 294a directory scan, even after the application had replaced the underlying OS 295functionality. [#2115] 296 297</ol> 298 299</body> 300</html> 301