mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
181 lines
10 KiB
HTML
181 lines
10 KiB
HTML
<!--$Id: db_set_flags.so,v 10.26 2000/03/17 01:53:58 bostic Exp $-->
|
|
<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
|
|
<!--All rights reserved.-->
|
|
<html>
|
|
<head>
|
|
<title>Berkeley DB: DB->set_flags</title>
|
|
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
|
|
<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
|
|
</head>
|
|
<body bgcolor=white>
|
|
<a name="2"><!--meow--></a>
|
|
<table><tr valign=top>
|
|
<td>
|
|
<h1>DB->set_flags</h1>
|
|
</td>
|
|
<td width="1%">
|
|
<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
|
|
</td></tr></table>
|
|
<hr size=1 noshade>
|
|
<tt>
|
|
<h3><pre>
|
|
#include <db.h>
|
|
<p>
|
|
int
|
|
DB->set_flags(DB *db, u_int32_t flags);
|
|
</pre></h3>
|
|
<h1>Description</h1>
|
|
<p>Calling DB->set_flags is additive, there is no way to clear flags.
|
|
<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or more
|
|
of the following values.
|
|
<h3>Btree</h3>
|
|
<p>The following flags may be specified for the Btree access method:
|
|
<p><dl compact>
|
|
<p><dt><a name="DB_DUP">DB_DUP</a><dd>Permit duplicate data items in the tree, i.e. insertion when the key of
|
|
the key/data pair being inserted already exists in the tree will be
|
|
successful. The ordering of duplicates in the tree is determined by the
|
|
order of insertion, unless the ordering is otherwise specified by use of
|
|
a cursor operation. It is an error to specify both DB_DUP and
|
|
DB_RECNUM.
|
|
<p><dt><a name="DB_DUPSORT">DB_DUPSORT</a><dd>Permit duplicate data items in the tree, i.e. insertion when the key of
|
|
the key/data pair being inserted already exists in the tree will be
|
|
successful. The ordering of duplicates in the tree is determined by the
|
|
duplicate comparison function.
|
|
If the application does not specify a comparison function using the
|
|
<a href="../api_c/db_set_dup_compare.html">DB->set_dup_compare</a> function, a default, lexical comparison will be
|
|
used.
|
|
It is an error to specify both DB_DUPSORT and DB_RECNUM.
|
|
<p><dt><a name="DB_RECNUM">DB_RECNUM</a><dd>Support retrieval from the Btree using record numbers. For more
|
|
information, see the DB_GET_RECNO flag to the <a href="../api_c/db_get.html">DB->get</a> and
|
|
<a href="../api_c/dbc_get.html">DBcursor->c_get</a> methods.
|
|
<p>Logical record numbers in Btree databases are mutable in the face of
|
|
record insertion or deletion. See the DB_RENUMBER flag in the Recno
|
|
access method information for further discussion.
|
|
<p>Maintaining record counts within a Btree introduces a serious point of
|
|
contention, namely the page locations where the record counts are stored.
|
|
In addition, the entire tree must be locked during both insertions and
|
|
deletions, effectively single-threading the tree for those operations.
|
|
Specifying DB_RECNUM can result in serious performance degradation for
|
|
some applications and data sets.
|
|
<p>It is an error to specify both DB_DUP and DB_RECNUM.
|
|
<p><dt><a name="DB_REVSPLITOFF">DB_REVSPLITOFF</a><dd>Turn off reverse splitting in the Btree. As pages are emptied in a
|
|
database, the Berkeley DB Btree implementation attempts to coalesce empty pages
|
|
into higher-level pages in order to keep the tree as small as possible
|
|
and minimize tree search time. This can hurt performance in applications
|
|
with cyclical data demands, that is, applications where the database grows
|
|
and shrinks repeatedly. For example, because Berkeley DB does page-level
|
|
locking, the maximum level of concurrency in a database of 2 pages is far
|
|
smaller than that in a database of 100 pages, and so a database that has
|
|
shrunk to a minimal size can cause severe deadlocking when a new cycle of
|
|
data insertion begins.
|
|
</dl>
|
|
<h3>Hash</h3>
|
|
<p>The following flags may be specified for the Hash access method:
|
|
<p><dl compact>
|
|
<p><dt><a name="DB_DUP">DB_DUP</a><dd>Permit duplicate data items in the tree, i.e. insertion when the key of
|
|
the key/data pair being inserted already exists in the tree will be
|
|
successful. The ordering of duplicates in the tree is determined by the
|
|
order of insertion, unless the ordering is otherwise specified by use of
|
|
a cursor operation. It is an error to specify both DB_DUP and
|
|
DB_RECNUM.
|
|
<p><dt><a name="DB_DUPSORT">DB_DUPSORT</a><dd>Permit duplicate data items in the tree, i.e. insertion when the key of
|
|
the key/data pair being inserted already exists in the tree will be
|
|
successful. The ordering of duplicates in the tree is determined by the
|
|
duplicate comparison function.
|
|
If the application does not specify a comparison function using the
|
|
<a href="../api_c/db_set_dup_compare.html">DB->set_dup_compare</a> function, a default, lexical comparison will be
|
|
used.
|
|
It is an error to specify both DB_DUPSORT and DB_RECNUM.
|
|
</dl>
|
|
<h3>Queue</h3>
|
|
<p>There are no additional flags that may be specified for the Queue access
|
|
method.
|
|
<h3>Recno</h3>
|
|
<p>The following flags may be specified for the Recno access method:
|
|
<p><dl compact>
|
|
<p><dt><a name="DB_RENUMBER">DB_RENUMBER</a><dd>Specifying the DB_RENUMBER flag causes the logical record numbers to be
|
|
mutable, and change as records are added to and deleted from the database.
|
|
For example, the deletion of record number 4 causes records numbered 5
|
|
and greater to be renumbered downward by 1. If a cursor was positioned
|
|
to record number 4 before the deletion, it will reference the new record
|
|
number 4, if any such record exists, after the deletion. If a cursor was
|
|
positioned after record number 4 before the deletion, it will be shifted
|
|
downward 1 logical record, continuing to reference the same record as it
|
|
did before.
|
|
<p>Using the <a href="../api_c/db_put.html">DB->put</a> or <a href="../api_c/dbc_put.html">DBcursor->c_put</a> interfaces to create new
|
|
records will cause the creation of multiple records if the record number
|
|
is more than one greater than the largest record currently in the
|
|
database. For example, creating record 28, when record 25 was previously
|
|
the last record in the database, will create records 26 and 27 as well as
|
|
28. Attempts to retrieve records that were created in this manner will
|
|
result in an error return of <a href="../ref/program/errorret.html#DB_KEYEMPTY">DB_KEYEMPTY</a>.
|
|
<p>If a created record is not at the end of the database, all records
|
|
following the new record will be automatically renumbered upward by 1.
|
|
For example, the creation of a new record numbered 8 causes records
|
|
numbered 8 and greater to be renumbered upward by 1. If a cursor was
|
|
positioned to record number 8 or greater before the insertion, it will be
|
|
shifted upward 1 logical record, continuing to reference the same record
|
|
as it did before.
|
|
<p>For these reasons, concurrent access to a Recno database with the
|
|
DB_RENUMBER flag specified may be largely meaningless, although
|
|
it is supported.
|
|
<p><dt><a name="DB_SNAPSHOT">DB_SNAPSHOT</a><dd>This flag specifies that any specified <b>re_source</b> file be read in
|
|
its entirety when <a href="../api_c/db_open.html">DB->open</a> is called. If this flag is not
|
|
specified, the <b>re_source</b> file may be read lazily.
|
|
</dl>
|
|
<p>The DB->set_flags interface may only be used to configure Berkeley DB before
|
|
the <a href="../api_c/db_open.html">DB->open</a> interface is called.
|
|
<p>The DB->set_flags function returns a non-zero error value on failure and 0 on success.
|
|
<h1>Errors</h1>
|
|
<p><dl compact>
|
|
<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
|
|
</dl>
|
|
<h1>See Also</h1>
|
|
<a href="../api_c/db_create.html">db_create</a>,
|
|
<a href="../api_c/db_close.html">DB->close</a>,
|
|
<a href="../api_c/db_cursor.html">DB->cursor</a>,
|
|
<a href="../api_c/db_del.html">DB->del</a>,
|
|
<a href="../api_c/db_err.html">DB->err</a>,
|
|
<a href="../api_c/db_fd.html">DB->fd</a>,
|
|
<a href="../api_c/db_get.html">DB->get</a>,
|
|
<a href="../api_c/db_get_byteswapped.html">DB->get_byteswapped</a>,
|
|
<a href="../api_c/db_get_type.html">DB->get_type</a>,
|
|
<a href="../api_c/db_join.html">DB->join</a>,
|
|
<a href="../api_c/db_key_range.html">DB->key_range</a>,
|
|
<a href="../api_c/db_open.html">DB->open</a>,
|
|
<a href="../api_c/db_put.html">DB->put</a>,
|
|
<a href="../api_c/db_remove.html">DB->remove</a>,
|
|
<a href="../api_c/db_set_bt_compare.html">DB->set_bt_compare</a>,
|
|
<a href="../api_c/db_set_bt_minkey.html">DB->set_bt_minkey</a>,
|
|
<a href="../api_c/db_set_bt_prefix.html">DB->set_bt_prefix</a>,
|
|
<a href="../api_c/db_set_cachesize.html">DB->set_cachesize</a>,
|
|
<a href="../api_c/db_set_dup_compare.html">DB->set_dup_compare</a>,
|
|
<a href="../api_c/db_set_errcall.html">DB->set_errcall</a>,
|
|
<a href="../api_c/db_set_errfile.html">DB->set_errfile</a>,
|
|
<a href="../api_c/db_set_errpfx.html">DB->set_errpfx</a>,
|
|
<a href="../api_c/db_set_flags.html">DB->set_flags</a>,
|
|
<a href="../api_c/db_set_h_ffactor.html">DB->set_h_ffactor</a>,
|
|
<a href="../api_c/db_set_h_hash.html">DB->set_h_hash</a>,
|
|
<a href="../api_c/db_set_h_nelem.html">DB->set_h_nelem</a>,
|
|
<a href="../api_c/db_set_lorder.html">DB->set_lorder</a>,
|
|
<a href="../api_c/db_set_malloc.html">DB->set_malloc</a>,
|
|
<a href="../api_c/db_set_pagesize.html">DB->set_pagesize</a>,
|
|
<a href="../api_c/db_set_paniccall.html">DB->set_paniccall</a>,
|
|
<a href="../api_c/db_set_q_extentsize.html">DB->set_q_extentsize</a>,
|
|
<a href="../api_c/db_set_realloc.html">DB->set_realloc</a>,
|
|
<a href="../api_c/db_set_re_delim.html">DB->set_re_delim</a>,
|
|
<a href="../api_c/db_set_re_len.html">DB->set_re_len</a>,
|
|
<a href="../api_c/db_set_re_pad.html">DB->set_re_pad</a>,
|
|
<a href="../api_c/db_set_re_source.html">DB->set_re_source</a>,
|
|
<a href="../api_c/db_stat.html">DB->stat</a>,
|
|
<a href="../api_c/db_sync.html">DB->sync</a>,
|
|
<a href="../api_c/db_upgrade.html">DB->upgrade</a>
|
|
and
|
|
<a href="../api_c/db_verify.html">DB->verify</a>.
|
|
</tt>
|
|
<table><tr><td><br></td><td width="1%">
|
|
<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../ref/toc.html"><img src="../images/ref.gif" alt="Ref"></a>
|
|
</td></tr></table>
|
|
<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
|
|
</body>
|
|
</html>
|