1<!--$Id: 3.2.9.html,v 1.4 2007/05/17 18:17:18 bostic Exp $--> 2<html> 3<head> 4<title>The Berkeley DB Package: DB 3.2.9 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.2.9 Change Log</h3> 11 12<h3>Database On-Disk Format Changes:</h3> 13<ol> 14 15<li>The on-disk Queue format has changed from version 2 to version 3. For 16information on upgrading database formats, see "Upgrading Applications 17to the 3.2 release" in the Berkeley DB Reference Guide. 18 19</ol> 20<h3>Major New Features:</h3> 21<ol> 22 23<li>Berkeley DB now includes support for the QNX Neutrino Real-Time 24Platform. 25 26</ol> 27<h3>Interface Additions and Changes:</h3> 28<ol> 29 30<li>Add support for blocking on a Queue "consume" operation until a 31record is available, with a new flag (DB_CONSUME_WAIT) to support this. 32[#1037] 33<li>Change the Queue "consume" operation (and the DB_CONSUME flag) to 34use the DB->get() method instead of DBC->c_get(). [#1037] 35<li>Add support for extent-based queues, and a new method to support 36them, DB->set_q_extentsize. [#1463] 37<li>Add support for wrap-around record numbers in the Queue access 38method. [#1463] 39<li>Add a DB->set_feedback interface flag for database verification 40operations. [#2019] 41<li>Add a reference to a DB object as the first argument to 42four application callback functions (the callback functions set by 43DB->set_bt_compare, DB->set_bt_prefix, DB->set_dup_compare, and 44DB->set_h_hash). [#2179] 45<li>Add a DBENV->set_flags interface to support configuration of the 46database environment. [#2727] 47<li>Add the DB_CDB_ALLDB flag to the DBENV->set_flags interface to 48support Concurrent Data Store semantics across multiple databases in an 49environment. [#2727] 50<li>Remove the app_private field from the DBT structure. Add app_private 51fields to the DB and DB_ENV structures. [#2862] 52<li>The db_env_set_mutexlocks function has become a method on the 53environment handle, DBENV->set_mutexlocks. [#3001] 54 55</ol> 56<h3>General Environment Changes:</h3> 57<ol> 58 59<li>Add support for the destruction of mutexes which may hold system 60resources. [#1953] 61<li>Attempts to join existing regions where the application was built with 62a different version (major, minor, patch) of Berkeley DB than was the 63application that created the region, now returns EINVAL. [#2198] 64<li>Clarify the Berkeley DB documentation that all destructor methods, 65(for example, DB->close txn_commit, txn_abort and memp_fclose), 66always destroy their respective handles, regardless of their return, 67error or not. Review the appropriate code and apply minor fixes. [#2311] 68<li>Fix a bug in which creating multiple databases in one file could fail 69when using the Concurrent Data Store product. [#2713] 70<li>Fix a bug in which running recovery in one environment could cause 71mutexes to stop working in another environment open in the same process. 72[#3001] 73<li>Fix a set of bugs in which assorted DB interfaces could panic 74and return errors other than DB_RUNRECOVERY. [#3018] 75<li>Fix a bug where calling the DB_ENV->remove method using a handle 76already passed to the DB_ENV->open method dumped core. [#3097] 77<li>Fix a bug where the Concurrent Data Store product could enter 78deadlock. [#3065] 79<li>Fix a bug where recovery output spurious error messages when opening 80a previously deleted subdatabase. [#3074] 81 82</ol> 83<h3>General Access Method Changes:</h3> 84<ol> 85 86<li>Fix a bug where the DB->verify method was unable to access 87subdatabases, returning ENOENT. [#2319] 88<li>Change filename processing to not transform database names with 89leading "./" strings. [#2382] 90<li>Fix a bug in which database verification could report the wrong number of pages and fail. [#2559] 91<li>Fix a bug in which overflow pages belonging to duplicate data items 92might not be properly counted by DB->stat. [#2911] 93<li>Fix a bug in which cursors could be adjusted incorrectly when 94items are inserted into an off-page duplicate set. [#2910] 95<li>Fix a set of bugs which could cause the DB salvager to dump core 96when running with DB_AGGRESSIVE or for certain classes of corrupt databases. 97[#2784] 98<li>Fix a bug in which DB_KEYEXIST could be incorrectly returned 99by DB->verify. [#2784] 100<li>Add a stricter verification criterion: free lists of pages are not 101allowed on metadata pages other than the master one. [#2784] 102 103</ol> 104<h3>Btree Access Method Changes:</h3> 105<ol> 106 107<li>Fix a bug where cursors in the parent of a nested transaction could 108be incorrectly adjusted after a child transaction was aborted. [#2373] 109<li>Fix a bug where an overflow page's reference count was not 110decremented during a reverse split. [#2550] 111<li>Fix a bug where the tree record count in a Btree could be left 112incorrect after an aborted insert or delete. [#2810] 113<li>Fix a bug in which too high a value of bt_minkey could cause an 114infinite loop when executing a Btree split. [#2888] 115<li>Fix a bug in which overflow pages that stored a duplicate 116data item could be leaked when the item was deleted. [#2912] 117 118</ol> 119<h3>Hash Access Method Changes:</h3> 120<ol> 121 122<li>Fix a bug where cursors in the parent of a nested transaction could 123be incorrectly adjusted after a child transaction was aborted. [#2373] 124<li>Fix a bug in which cursor gets performed on deleted items could 125return EINVAL instead of the correct DB_KEYEMPTY. [#2596] 126<li>Fix a bug where the verifier could falsely report errors when new 127hash pages were allocated in an aborted transaction. [#2577] 128<li>Fix a bug where hash recovery roll-forward log contains a abort and 129then re-do of a hash table double. [#2599] 130<li>Fix a bug in hash recovery roll-forward that could cause database 131corruption. [#2602] 132<li>Fix a bug where sizes could be miscalculated when adding duplicate 133records. [#2611] 134<li>Fix a bug in which a Hash insert could result in a misplaced 135item or an application crash. [#2842] 136<li>Fix a memory leak in Hash which could cause salvaging of Hash 137databases to waste an amount of memory roughly equal to database size. [#2869] 138<li>Fix a bug in which a failed attempt to put a duplicate duplicate 139item could result in a corrupted database. [#2996] 140<li>Fix a bug in which databases upgraded from version 2.X could 141become corrupted by the upgrade process. [#3061] 142<li>Fix a bug in which verifying a Hash database with the DB_ORDERCHKONLY 143flag could fail. [#3061] 144 145</ol> 146<h3>Queue Access Method Changes:</h3> 147<ol> 148 149<li>Fix a bug in which a (possibly nonsense) record number was returned 150when a queue insertion failed. [#2634] 151<li>Add support for circular queues: when UINT32_T_MAX records have 152been added using DB_APPEND, wrap around to record number 1. [#2829] 153<li>Fix a bug where the DB->stat method incorrectly marked the 154metadata page clean. [#3092] 155 156</ol> 157<h3>Recno Access Method Changes:</h3> 158<ol> 159 160<li>Fix a bug where cursors in the parent of a nested transaction could 161be incorrectly adjusted after a child transaction was aborted. [#2373,#2490] 162<li>Fix a bug in which a failure during the open of a Recno database could 163result in application crashes. [#2687] 164<li>Change the Recno statistics to not count logically deleted data 165items in Recno trees with immutable record numbers. [#2629] 166<li>Fix a bug in which overflow pages in Recno databases 167might not be properly counted by DB->stat. [#2911] 168<li>Change the Recno backing source file implementation to use stdio 169and not memory map the files. [#3076] 170<li>Fix a bug where writing new records past the end of the source text 171file when the entire file hadn't been read failed. [#3276] 172 173</ol> 174<h3>C++ API Changes:</h3> 175<ol> 176 177<li>Fix a bug where calling the Db::remove() method could crash the application. [#2665] 178<li>Stop supporting "reopens" of Db/DbEnv objects in C++, fix API memory 179leaks. [#2783, #2344] 180 181</ol> 182<h3>Java API Changes:</h3> 183<ol> 184 185<li>Java now supports the Db->set_bt_compare, Db->set_bt_prefix 186Db->set_h_hash and DbEnv->set_tx_recover methods, allowing Java 187applications to specify alternate Btree comparison and prefix methods, 188Hash hashing method and application-specific recovery. [#2179] 189<li>Remove unnecessary local allocation routine setting in Java API. [#2510] 190<li>Fix a bug where the Db.DB_CACHED_COUNTS flag was not properly defined in Java. [#2568] 191<li>Fix a bug where certain DB error returns did not display the correct db_strerror text. [#2679] 192<li>Db.rename, Db.remove, DbEnv.remove now throw 193java.io.FileNotFoundException. [#2320] 194<li>Stop supporting "reopens" of Db/DbEnv objects in Java, fix API 195memory leaks. [#2320] 196 197</ol> 198<h3>Tcl API Changes:</h3> 199<ol> 200 201<li>Fix a bug where closing a Tcl environment handle (when the environment 202included open database handles), the open database handles would be 203discarded and the underlying Berkeley DB resources leaked. [#2325] 204 205</ol> 206<h3>RPC Client/Server Changes:</h3> 207 208<blockquote>None.</blockquote> 209 210<h3>XA Resource Manager Changes:</h3> 211<ol> 212 213<li>Fix a bug in which updates could be performed on behalf of the 214wrong XA transaction. [#2650] 215 216</ol> 217<h3>Locking Subsystem Changes:</h3> 218<ol> 219 220<li>Change the locking subsystem to guarantee that if any request for 221a lock fails, the off field is set to LOCK_INVALID, parts of Berkeley 222DB reasonably depend on this, and it fixes a potential uninitialized 223memory read in Btree root page processing. [#2364] 224 225</ol> 226<h3>Logging Subsystem Changes:</h3> 227<ol> 228 229<li>Fix a bug where an error message was written out if the log_get() 230interface was called and the supplied DBT included the DB_USERMEM flag, 231and there was insufficient space available for the log record. [#2243] 232 233</ol> 234<h3>Buffer Pool Subsystem Changes:</h3> 235<ol> 236 237<li>Avoid flushing the log for each buffer written during a transaction 238checkpoint. [#2287] 239<li>Fix a bug in which the "gbytes" parameter to the set_cachesize functions 240(and to set_cachesize directives in a DB_CONFIG file) was handled incorrectly. 241[#2685] 242<li>Fix a bug which could result in erratic behavior or application 243crashes during buffer pool open. [#2747] 244<li>Fix a bug in which statistics fields belonging to per-file structures 245were not returned when per-file statistics were not requested. [#3038] 246 247</ol> 248<h3>Transaction Subsystem Changes:</h3> 249<ol> 250 251<li>Rework child transaction structures on child commit in order to 252decrease transaction resource usage and ensure abort on error. [#2230] [#2489] 253<li>Display an error message if cursors opened within a transaction are 254still open at transaction commit/abort. [#2235] 255<li>Fix a bug where one abort path after a page allocation could lead to 256a corrupted free list. [#2464] 257<li>Fix bug that caused reference to potentially freed memory. [#2478] 258<li>Fix a bug in which recovery of the deletion of a file that had been 259later re-created with the same name could fail. [#2538] 260<li>Fix a bug where missing pages were handled incorrectly during 261overflow reference count recover. [#2556] 262<li>Fix a bug where recovery of a subdatabase metadata operation could fail. [#2502] 263<li>Change transaction checkpointing to render less likely a situation in which no checkpoint will ever complete because pages remain pinned. [#2569] 264<li>Fix a bug where recovery of a queue metadata operation could fail. [#2690] 265<li>Fix a bug where recovery of a DB_CONSUME operation in queue could fail. [#2698] 266<li>Fix a bug where recovery could fail if done twice without an intervening checkpoint after an unclean shut down. [#2918] 267<li>Fix a bug where an error on recovery could cause a core dump due 268to an incorrect number of arguments in a printf statement. [#2987] 269<li>Change transaction checkpointing so that checkpoints are no longer 270skipped if there are new log records in the log buffer but none which have 271been flushed to disk. [#2949] 272 273</ol> 274<h3>Utility Changes:</h3> 275<ol> 276 277<li>Fix a bug in which db_stat would print extraneous error messages 278when opening a file containing multiple databases. [#2565] 279<li>Fix a bug where db_dump would display keys as numeric strings even 280though data items were being displayed as hex pairs. [#2676] 281<li>Fix a bug where the wrong statistics value was displayed for the 282maximum locks ever requested. [#2979] 283<li>Remove mention of the "-a m" option to db_deadlock, it was never 284implemented. [#3082] 285 286</ol> 287<h3>Configuration, Documentation, Portability and Build Changes:</h3> 288<ol> 289 290<li>Support for MSVC 4 has been removed. 291<li>Add a --enable-umrw configuration option to mask harmless uninitialized 292memory reads/writes. [#2377] 293<li>Remove searching of non-standard directories for Tcl installation, 294search only /usr/local. [#2386] 295<li>Fix a bug where Win32 support did not accept colon as a device/path 296separator. [#2393] 297<li>Ensure that Tcl directory include files do not override Berkeley DB 298include files when building the Tcl API. [#2395] 299<li>Rename "try" variable something else for Compaq Tru64 UNIX 5.0a. [#2410] 300<li>Change the Reference Guide to list page name, not section name as 301the HTML title. [#2485] 302<li>Fix a bug where the DBT documentation incorrectly said that various 303flags were only used during key/data pair retrieval. [#2537] 304<li>Fix a bug where VxWorks applications were restricted to the use of one environment, and add support for DB_ENV->set_shm_key on VxWorks. [#2528] 305<li>Fix a bug where VxWorks applications incorrectly failed when trying 306to memory-map read-only database files. [#2570] 307<li>Add support in the MSVC project files to build statically on Windows. [#2554] 308<li>Fix a bug in which resolution of absolute pathnames in VxWorks was incorrect. [#2579] 309<li>Fix a bug in which file initialization was being incorrectly performed for temporary files that have not yet been physically instantiated on Windows/95 and /98. [#2341] 310<li>Enable large file support in Linux. [#2871] 311<li>Fix a compiler warning in the Solaris mutex code. [#2905] 312<li>Berkeley DB now works with the Cygwin tools. You need at least DLL 313version 1.1.4. Configure and build as you would on a Unix system. Only 314static library builds are supported, no shared library support is 315included. [#2913] 316<li>Update BSD-style queue.h macros to avoid compilation problems 317on some versions of FreeBSD. [#2999] 318<li>Modify installation sequence such that the db_185.h header file is now 319only installed when --enable-compat185 was specified as an option to configure. [#3064] 320 321</ol> 322 323</body> 324</html> 325