• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/db-4.8.30/docs/api_reference/C/
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4  <head>
5    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6    <title>DB-&gt;compact()</title>
7    <link rel="stylesheet" href="apiReference.css" type="text/css" />
8    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
9    <link rel="start" href="index.html" title="Berkeley DB C API Reference" />
10    <link rel="up" href="db.html" title="Chapter��2.�� The DB Handle" />
11    <link rel="prev" href="dbcreate.html" title="db_create" />
12    <link rel="next" href="dbdel.html" title="DB-&gt;del()" />
13  </head>
14  <body>
15    <div class="navheader">
16      <table width="100%" summary="Navigation header">
17        <tr>
18          <th colspan="3" align="center">DB-&gt;compact()</th>
19        </tr>
20        <tr>
21          <td width="20%" align="left"><a accesskey="p" href="dbcreate.html">Prev</a>��</td>
22          <th width="60%" align="center">Chapter��2.��
23                The DB Handle
24        </th>
25          <td width="20%" align="right">��<a accesskey="n" href="dbdel.html">Next</a></td>
26        </tr>
27      </table>
28      <hr />
29    </div>
30    <div class="sect1" lang="en" xml:lang="en">
31      <div class="titlepage">
32        <div>
33          <div>
34            <h2 class="title" style="clear: both"><a id="dbcompact"></a>DB-&gt;compact()</h2>
35          </div>
36        </div>
37      </div>
38      <pre class="programlisting">#include &lt;db.h&gt;
39
40int
41DB-&gt;compact(DB *db, DB_TXN *txnid,
42    DBT *start, DBT *stop, DB_COMPACT *c_data, u_int32_t flags, DBT *end);  </pre>
43      <p>
44         The <code class="methodname">DB-&gt;compact()</code> method compacts Btree and Recno access method
45         databases, and optionally returns unused Btree, Hash or Recno database
46         pages to the underlying filesystem.
47    </p>
48      <p>
49         The <code class="methodname">DB-&gt;compact()</code> <span>
50            <span>
51                  method returns a non-zero error value on failure and 0 on success.
52            </span>
53            
54        </span>
55    </p>
56      <div class="sect2" lang="en" xml:lang="en">
57        <div class="titlepage">
58          <div>
59            <div>
60              <h3 class="title"><a id="id1632862"></a>Parameters</h3>
61            </div>
62          </div>
63        </div>
64        <div class="sect3" lang="en" xml:lang="en">
65          <div class="titlepage">
66            <div>
67              <div>
68                <h4 class="title"><a id="id1632429"></a>txnid</h4>
69              </div>
70            </div>
71          </div>
72          <p>
73                          If the operation is part of an application-specified transaction, the
74                          <span class="bold"><strong>txnid</strong></span> parameter is a transaction
75                          handle returned from <a class="xref" href="txnbegin.html" title="DB_ENV-&gt;txn_begin()">DB_ENV-&gt;txn_begin()</a>; 
76                          if the operation is part of a Berkeley DB Concurrent Data Store group, the
77                          <span class="bold"><strong>txnid</strong></span> parameter is a handle returned
78                          from <a class="xref" href="envcdsgroup_begin.html" title="DB_ENV-&gt;cdsgroup_begin()">DB_ENV-&gt;cdsgroup_begin()</a>;
79                          otherwise NULL.
80                      </p>
81          <p>
82                          If a transaction handle is supplied to this method, then the operation is
83                          performed using that transaction. In this event, large sections of the
84                          tree may be locked during the course of the transaction.
85                      </p>
86          <p>
87                          If no transaction handle is specified, but the operation occurs
88                          in a transactional database, the operation will be implicitly
89                          transaction protected using multiple transactions.  These transactions
90                          will be periodically committed to avoid locking large sections of the
91                          tree.  Any deadlocks encountered cause the compaction operation to
92                          be retried from the point of the last transaction commit.
93                     </p>
94        </div>
95        <div class="sect3" lang="en" xml:lang="en">
96          <div class="titlepage">
97            <div>
98              <div>
99                <h4 class="title"><a id="id1632702"></a>start</h4>
100              </div>
101            </div>
102          </div>
103          <p>
104                          If non-NULL, the <span class="bold"><strong>start</strong></span> parameter is
105                          the starting point for compaction in a Btree or Recno database. 
106                          Compaction will start at the smallest key greater than or equal to the
107                          specified key.  If NULL, compaction will start at the beginning of the
108                          database.
109                     </p>
110        </div>
111        <div class="sect3" lang="en" xml:lang="en">
112          <div class="titlepage">
113            <div>
114              <div>
115                <h4 class="title"><a id="id1632903"></a>stop</h4>
116              </div>
117            </div>
118          </div>
119          <p>
120                          If non-NULL, the <span class="bold"><strong>stop</strong></span> parameter is
121                          the stopping point for compaction in a Btree or Recno database. 
122                          Compaction will stop at the page with the smallest key greater than
123                          the specified key.  If NULL, compaction will stop at the end of the
124                          database.
125                     </p>
126        </div>
127        <div class="sect3" lang="en" xml:lang="en">
128          <div class="titlepage">
129            <div>
130              <div>
131                <h4 class="title"><a id="id1632651"></a>c_data</h4>
132              </div>
133            </div>
134          </div>
135          <p>
136                         
137                     </p>
138          <p>
139                          If non-NULL, the <span class="bold"><strong>c_data</strong></span> parameter
140                          contains additional compaction configuration parameters, and returns
141                          compaction operation statistics, in a structure of type DB_COMPACT.
142                     </p>
143          <p>
144                          The following input configuration fields are available from the
145                          DB_COMPACT structure:
146                     </p>
147          <div class="itemizedlist">
148            <ul type="disc">
149              <li>
150                <p>
151                                <code class="literal">int compact_fillpercent;</code>
152                            </p>
153                <p>
154                                If non-zero, this provides the goal for filling pages, specified as a percentage
155                                between 1 and 100.  Any page in a Btree or Recno databases not at or
156                                above this percentage full will be considered for compaction.  The
157                                default behavior is to consider every page for compaction, regardless
158                                of its page fill percentage.
159                            </p>
160              </li>
161              <li>
162                <p>
163                                <code class="literal">int compact_pages;</code>
164                            </p>
165                <p>
166                                If non-zero, the call will return after the
167				specified number of pages have been freed, or
168				no more pages can be freed.
169                            </p>
170              </li>
171              <li>
172                <p>
173                                <code class="literal">db_timeout_t compact_timeout;</code>
174                            </p>
175                <p>
176                                If non-zero, and no <span class="bold"><strong>txnid</strong></span> parameter
177                                was specified, this parameter identifies the lock timeout used for implicit transactions, in
178                                microseconds.
179                            </p>
180              </li>
181            </ul>
182          </div>
183          <p>
184                        The following output statistics fields are available from the
185                        <code class="literal">DB_COMPACT</code> structure:
186                    </p>
187          <div class="itemizedlist">
188            <ul type="disc">
189              <li>
190                <p>
191                                <code class="literal">u_int32_t compact_deadlock;</code>
192                            </p>
193                <p>
194                                An output statistics parameter: if no <span class="bold"><strong>txnid</strong></span> parameter was specified, the number of
195                                deadlocks which occurred.
196                            </p>
197              </li>
198              <li>
199                <p>
200                                <code class="literal">u_int32_t compact_pages_examine;</code>
201                            </p>
202                <p>
203                                An output statistics parameter: the number of database pages reviewed
204                                during the compaction phase.
205                            </p>
206              </li>
207              <li>
208                <p>
209                              <code class="literal">u_int32_t compact_pages_free;</code>
210                          </p>
211                <p>
212                               An output statistics parameter: the number of database pages freed
213                               during the compaction phase.
214                          </p>
215              </li>
216              <li>
217                <p>
218                              <code class="literal">u_int32_t compact_levels;</code>
219                          </p>
220                <p>
221                               An output statistics parameter: the number of levels removed from the
222                               Btree or Recno database during the compaction phase.
223                          </p>
224              </li>
225              <li>
226                <p>
227                              <code class="literal">u_int32_t compact_pages_truncated;</code>
228                          </p>
229                <p>
230                               An output statistics parameter: the number of database pages returned
231                               to the filesystem.
232                          </p>
233              </li>
234            </ul>
235          </div>
236        </div>
237        <div class="sect3" lang="en" xml:lang="en">
238          <div class="titlepage">
239            <div>
240              <div>
241                <h4 class="title"><a id="id1632483"></a>flags</h4>
242              </div>
243            </div>
244          </div>
245          <p>
246                          The <span class="bold"><strong>flags</strong></span> parameter must be set to 0
247                          or one of the following values:
248                     </p>
249          <div class="itemizedlist">
250            <ul type="disc">
251              <li>
252                <p><a id="compact_DB_FREELIST_ONLY"></a>
253                                 <code class="literal">DB_FREELIST_ONLY</code>
254                           </p>
255                <p>
256                                Do no page compaction, only returning pages to the filesystem that are
257                                already free and at the end of the file.  This flag must be set if the
258                                database is a Hash access method database.
259                           </p>
260              </li>
261              <li>
262                <p><a id="compact_DB_FREE_SPACE"></a>
263                                 <code class="literal">DB_FREE_SPACE</code>
264                           </p>
265                <p>
266                                Return pages to the filesystem when possible. If this flag is not
267                                specified, pages emptied as a result of compaction will be placed on
268                                the free list for re-use, but never returned to the filesystem.
269                           </p>
270                <p>
271                                Note that only pages at the end of a file can be returned to the
272                                filesystem.  Because of the one-pass nature of the compaction
273                                algorithm, any unemptied page near the end of the file inhibits
274                                returning pages to the file system.  A repeated call to the
275                                <code class="methodname">DB-&gt;compact()</code> method with a low <span class="bold"><strong>compact_fillpercent</strong></span> may be used to return pages
276                                in this case.
277                           </p>
278              </li>
279            </ul>
280          </div>
281        </div>
282        <div class="sect3" lang="en" xml:lang="en">
283          <div class="titlepage">
284            <div>
285              <div>
286                <h4 class="title"><a id="id1633063"></a>end</h4>
287              </div>
288            </div>
289          </div>
290          <p>
291                          If non-NULL, the <span class="bold"><strong>end</strong></span> parameter will
292                          be filled in with the database key marking the end of the compaction
293                          operation in a Btree or Recno database.  This is generally the first
294                          key of the page where the operation stopped.
295                     </p>
296        </div>
297      </div>
298      <div class="sect2" lang="en" xml:lang="en">
299        <div class="titlepage">
300          <div>
301            <div>
302              <h3 class="title"><a id="id1633231"></a>Errors</h3>
303            </div>
304          </div>
305        </div>
306        <p>
307                         The <code class="methodname">DB-&gt;compact()</code> <span>
308            <span>
309                 method may fail and return one of the following non-zero errors:
310            </span>
311            
312        </span>
313                    </p>
314        <div class="sect3" lang="en" xml:lang="en">
315          <div class="titlepage">
316            <div>
317              <div>
318                <h4 class="title"><a id="id1632714"></a>DB_LOCK_DEADLOCK</h4>
319              </div>
320            </div>
321          </div>
322          <p>
323                A transactional database environment operation was selected to resolve
324                a deadlock.
325            </p>
326        </div>
327        <div class="sect3" lang="en" xml:lang="en">
328          <div class="titlepage">
329            <div>
330              <div>
331                <h4 class="title"><a id="id1633322"></a>DB_LOCK_NOTGRANTED</h4>
332              </div>
333            </div>
334          </div>
335          <p>
336                A Berkeley DB Concurrent Data Store database environment configured
337                for lock timeouts was unable to grant a lock in the allowed time.
338            </p>
339        </div>
340        <div class="sect3" lang="en" xml:lang="en">
341          <div class="titlepage">
342            <div>
343              <div>
344                <h4 class="title"><a id="id1633040"></a> DB_REP_HANDLE_DEAD</h4>
345              </div>
346            </div>
347          </div>
348          <p>
349                When a client synchronizes with the master, it is possible for committed
350                transactions to be rolled back. This invalidates all  the database and cursor
351                handles opened in the replication environment. Once this occurs, an attempt to use
352                such a handle will 
353                
354                return <code class="literal">DB_REP_HANDLE_DEAD</code>.
355                The application will need to discard the handle and open a new one in order to
356                continue processing.
357            </p>
358        </div>
359        <div class="sect3" lang="en" xml:lang="en">
360          <div class="titlepage">
361            <div>
362              <div>
363                <h4 class="title"><a id="id1633331"></a>DB_REP_LOCKOUT</h4>
364              </div>
365            </div>
366          </div>
367          <p>
368                The operation was blocked by client/master synchronization.
369            </p>
370        </div>
371        <div class="sect3" lang="en" xml:lang="en">
372          <div class="titlepage">
373            <div>
374              <div>
375                <h4 class="title"><a id="id1632885"></a>EACCES</h4>
376              </div>
377            </div>
378          </div>
379          <p>
380                An attempt was made to modify a read-only database.
381            </p>
382        </div>
383        <div class="sect3" lang="en" xml:lang="en">
384          <div class="titlepage">
385            <div>
386              <div>
387                <h4 class="title"><a id="id1633333"></a>EINVAL</h4>
388              </div>
389            </div>
390          </div>
391          <p>
392                An invalid flag value or parameter was specified.
393            </p>
394        </div>
395      </div>
396      <div class="sect2" lang="en" xml:lang="en">
397        <div class="titlepage">
398          <div>
399            <div>
400              <h3 class="title"><a id="id1633048"></a>Class</h3>
401            </div>
402          </div>
403        </div>
404        <p>
405                <a class="link" href="db.html" title="Chapter��2.�� The DB Handle">DB</a>  
406            </p>
407      </div>
408      <div class="sect2" lang="en" xml:lang="en">
409        <div class="titlepage">
410          <div>
411            <div>
412              <h3 class="title"><a id="id1632779"></a>See Also</h3>
413            </div>
414          </div>
415        </div>
416        <p>
417                     <a class="xref" href="db.html#dblist" title="Database and Related Methods">Database and Related Methods</a> 
418                </p>
419      </div>
420    </div>
421    <div class="navfooter">
422      <hr />
423      <table width="100%" summary="Navigation footer">
424        <tr>
425          <td width="40%" align="left"><a accesskey="p" href="dbcreate.html">Prev</a>��</td>
426          <td width="20%" align="center">
427            <a accesskey="u" href="db.html">Up</a>
428          </td>
429          <td width="40%" align="right">��<a accesskey="n" href="dbdel.html">Next</a></td>
430        </tr>
431        <tr>
432          <td width="40%" align="left" valign="top">db_create��</td>
433          <td width="20%" align="center">
434            <a accesskey="h" href="index.html">Home</a>
435          </td>
436          <td width="40%" align="right" valign="top">��DB-&gt;del()</td>
437        </tr>
438      </table>
439    </div>
440  </body>
441</html>
442