1<!--"$Id: 2.6.4.html,v 1.4 2007/05/17 18:17:18 bostic Exp $ (Sleepycat) $Date: 2007/05/17 18:17:18 $"-->
2<html>
3<head>
4<title>The Berkeley DB Package: DB 2.6.4 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 2.6.4 Change Log</h3>
11
12<h3>Interface Additions in Berkeley DB 2.6.4:</h3>
13
14<ol>
15
16<p><li>
17Berkeley DB now supports a new mode of operation: Concurrent Access Methods.
18This configuration supports multiple-reader, single-writer access without
19requiring deadlock detection and transaction protection. The new interface
20is specified by using the DB_INIT_CDB flag to the db_appinit() function.
21<p>
22In addition, the DB-&gt;cursor interface has been modified to take a fourth
23argument, a <b>flags</b> argument.  This change will require that all
24applications using the DB-&gt;cursor interface be modified and recompiled.
25(The necessary modification is trivial, simply add a final argument of
26<b>0</b> to the DB-&gt;cursor call.)
27<p><font color=red>
28This change is NOT transparent to applications.
29</font>
30
31<p><li>
32In previous Berkeley DB releases, cursors in Recno databases with mutable
33record numbers had to be re-positioned each time they were used to delete
34a record.  This is no longer the case, and all of the records in the
35database logically at and above the cursor may now be deleted by
36repeatedly calling the delete function after positioning the cursor once.
37This change causes Berkeley DB practice to conform to the documentation
38found in previous releases.
39<p><font color=red>
40This change is NOT transparent to applications.
41</font>
42
43<p><li>
44Berkeley DB no longer permits applications to specify database page sizes
45that are not powers-of-two.  This change fixes a bug which could cause
46application failure, as page alignments were not necessarily correct when
47files with page sizes other than powers-of-two were mapped into process
48memory.
49<p><font color=red>
50This change is NOT transparent to applications.
51</font>
52
53</ol>
54
55<h3>B+tree Access Method Bug Fixes:</h3>
56
57<ol>
58
59<p><li>
60Fix a bug which could cause application failure or corrupted data when
61database operations would split a Btree page and then subsequently fail
62or attempt to physically delete records after being restarted.
63
64<p><li>
65Fix a bug which could cause application failure when deleting records
66failed due to a deadlock.
67
68<p><li>
69Fix a bug which could cause a NULL pointer dereference when the relinking
70of duplicate data item pages failed due to deadlock.
71
72<p><li>
73Fix a memory leak where an internal cursor could be left open when
74databases were opened.
75
76<p><li>
77Fix a single-byte memory leak when the standard DB-&gt;del() interface was
78used to delete key/data pairs with duplicate data items.
79
80</ol>
81
82<h3>Hash Access Method Bug Fixes:</h3>
83
84<ol>
85
86<p><li>
87Fix a bug which could cause application failure or data corruption when
88deleting on-page duplicate items.
89
90<p><li>
91Fix a memory leak when closing cursors.
92
93</ol>
94
95<h3>Recno Access Method Bug Fixes:</h3>
96
97<ol>
98
99<p><li>
100Cursors that referenced deleted records were not correctly updated when
101the record was overwritten with new data, and would continue to return
102that the record was still in a "deleted" state.
103
104<p><li>
105Fix a bug where application specified read-modify-write semantics were
106ignored.
107
108<p><li>
109Remove lock-coupling behavior in tiny databases to avoid perpetual
110deadlock.
111
112<p><li>
113Fix a bug where root pages were not always correctly write-locked.
114
115</ol>
116
117<h3>Java API Changes and Bug Fixes</h3>
118
119<ol>
120
121<p><li>
122Fix compile include directory ordering, which could cause Java to be
123compiled using the wrong db.h include file.
124
125</ol>
126
127<h3>General Access Method Bug Fixes:</h3>
128
129<ol>
130
131<p><li>
132Fix a bug which left the read-modify-write semantics in place after the
133operation for which the application specified it completed.
134
135<p><li>
136Fix a bug which caused application failure if a NULL key argument was
137specified for the DB_AFTER, DB_BEFORE or DB_CURRENT flags to the
138DBcursor-&gt;get() interface.
139
140<p><li>
141Change the initial mutex timer back-off from 10ms to 1ms.
142
143</ol>
144
145<h3>Shared Memory Buffer Pool Subsystem Bug Fixes:</h3>
146
147<ol>
148
149<p><li>
150Fix a bug in large database files (&gt;4Gb), which could potentially cause
151data corruption when a database was closed, reopened and new pages were
152then allocated.
153
154<p><li>
155Modify the memp_sync() interface code to no longer hold Berkeley DB region
156locks across memory allocation calls (for example, malloc(3)).  This
157change significantly increases throughput in applications checkpointing
158large memory caches.
159
160<p><li>
161Modify the memory pool qsort(3) comparison function to work when called
162by badly written qsort(3) functions.
163
164</ol>
165
166<h3>Additional Bug Fixes:</h3>
167
168<ol>
169
170<p><li>
171Fix a bug in the Berkeley DB error functions where variable numbers of
172arguments were not correctly accessed on some architectures, for
173example, the PowerPC.
174
175</ol>
176
177<h3>System Porting and Build Procedure Changes:</h3>
178
179<ol>
180
181<p><li>
182Support installation into prefix directories for which multiple directory
183components do not yet exist.
184
185<p><li>
186Support installation into different system directories on a per-type
187basis, for example, all the binaries to one directory, and include files to
188another.
189
190<p><li>
191Fix a bug where the supplied portability routine memcpy() was not
192correctly compiled.
193
194<p><li>
195Modify auto-configuration to refuse to configure in the top-level
196distribution directory.
197
198</ol>
199
200</body>
201</html>
202