2
<!--Copyright 1997-2002 by Sleepycat Software, Inc.-->
3
<!--All rights reserved.-->
4
<!--See the file LICENSE for redistribution information.-->
7
<title>Berkeley DB: Db.set_flags</title>
8
<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
9
<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
12
<a name="2"><!--meow--></a>
13
<table width="100%"><tr valign=top>
18
<a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
23
import com.sleepycat.db.*;
25
public void set_flags(int flags)
29
<p>Calling Db.set_flags is additive; there is no way to clear flags.
30
<p>The <b>flags</b> value must be set to 0 or by bitwise inclusively <b>OR</b>'ing together one or
31
more of the following values:
33
<p>The following flags may be specified for any Berkeley DB access method:
35
<a name="3"><!--meow--></a>
36
<p><dt><a name="Db.DB_CHKSUM_SHA1">Db.DB_CHKSUM_SHA1</a><dd>Do checksum verification of pages read into the cache from the backing
37
filestore, using the SHA1 Secure Hash Algorithm.
38
<p>Calling Db.set_flags with the Db.DB_CHKSUM_SHA1 flag only affects the
39
specified <a href="../api_java/db_class.html">Db</a> handle (and any other Berkeley DB handles opened within
40
the scope of that handle).
41
<p>If the database already exists when <a href="../api_java/db_open.html">Db.open</a> is called, the DB_CHKSUM_SHA1
44
If creating additional databases in a file, the checksum behavior specified
45
must be consistent with the existing databases in the file or an error will
47
<a name="4"><!--meow--></a>
48
<p><dt><a name="Db.DB_ENCRYPT">Db.DB_ENCRYPT</a><dd>Encrypt the database using the cryptographic password specified to the
49
<a href="../api_java/env_set_encrypt.html">DbEnv.set_encrypt</a> or <a href="../api_java/db_set_encrypt.html">Db.set_encrypt</a> methods.
50
<p>Calling Db.set_flags with the Db.DB_ENCRYPT flag only affects the
51
specified <a href="../api_java/db_class.html">Db</a> handle (and any other Berkeley DB handles opened within
52
the scope of that handle).
53
<p>If the database already exists when <a href="../api_java/db_open.html">Db.open</a> is called, the DB_ENCRYPT
55
must be the same as the existing database or an error
57
If creating additional databases in a file, the encryption behavior specified
58
must be consistent with the existing databases in the file or an error will
62
<p>The following flags may be specified for the Btree access method:
64
<a name="5"><!--meow--></a>
65
<p><dt><a name="Db.DB_DUP">Db.DB_DUP</a><dd>Permit duplicate data items in the tree; that is, insertion when the
66
key of the key/data pair being inserted already exists in the tree will
67
be successful. The ordering of duplicates in the tree is determined by
68
the order of insertion, unless the ordering is otherwise specified by
69
use of a cursor operation. It is an error to specify both Db.DB_DUP
71
<p>Calling Db.set_flags with the Db.DB_DUP flag affects the
72
database, including all threads of control accessing the database.
73
<p>If the database already exists when <a href="../api_java/db_open.html">Db.open</a> is called, the DB_DUP
75
must be the same as the existing database or an error
77
<a name="6"><!--meow--></a>
78
<p><dt><a name="Db.DB_DUPSORT">Db.DB_DUPSORT</a><dd>Permit duplicate data items in the tree; that is, insertion when the
79
key of the key/data pair being inserted already exists in the tree will
80
be successful. The ordering of duplicates in the tree is determined by
81
the duplicate comparison function.
82
A default lexical comparison will be used.
83
It is an error to specify both Db.DB_DUPSORT and Db.DB_RECNUM.
84
<p>Calling Db.set_flags with the Db.DB_DUPSORT flag affects the
85
database, including all threads of control accessing the database.
86
<p>If the database already exists when <a href="../api_java/db_open.html">Db.open</a> is called, the DB_DUPSORT
88
must be the same as the existing database or an error
90
<a name="7"><!--meow--></a>
91
<p><dt><a name="Db.DB_RECNUM">Db.DB_RECNUM</a><dd>Support retrieval from the Btree using record numbers. For more
92
information, see the <a href="../api_java/db_get.html#DB_SET_RECNO">Db.DB_SET_RECNO</a> flag to the <a href="../api_java/db_get.html">Db.get</a>
93
and <a href="../api_java/dbc_get.html">Dbc.get</a> methods.
94
<p>Logical record numbers in Btree databases are mutable in the face of
95
record insertion or deletion. See the Db.DB_RENUMBER flag in the
96
Recno access method information for further discussion.
97
<p>Maintaining record counts within a Btree introduces a serious point of
98
contention, namely the page locations where the record counts are
99
stored. In addition, the entire tree must be locked during both
100
insertions and deletions, effectively single-threading the tree for
101
those operations. Specifying Db.DB_RECNUM can result in serious
102
performance degradation for some applications and data sets.
103
<p>It is an error to specify both Db.DB_DUP and Db.DB_RECNUM.
104
<p>Calling Db.set_flags with the Db.DB_RECNUM flag affects the
105
database, including all threads of control accessing the database.
106
<p>If the database already exists when <a href="../api_java/db_open.html">Db.open</a> is called, the DB_RECNUM
108
must be the same as the existing database or an error
110
<a name="8"><!--meow--></a><a name="9"><!--meow--></a>
111
<p><dt><a name="Db.DB_REVSPLITOFF">Db.DB_REVSPLITOFF</a><dd>Turn off reverse splitting in the Btree. As pages are emptied in a
112
database, the Berkeley DB Btree implementation attempts to coalesce empty pages
113
into higher-level pages in order to keep the tree as small as possible
114
and minimize tree search time. This can hurt performance in applications
115
with cyclical data demands; that is, applications where the database grows
116
and shrinks repeatedly. For example, because Berkeley DB does page-level
117
locking, the maximum level of concurrency in a database of two pages is far
118
smaller than that in a database of 100 pages, so a database that has
119
shrunk to a minimal size can cause severe deadlocking when a new cycle of
120
data insertion begins.
121
<p>Calling Db.set_flags with the Db.DB_REVSPLITOFF flag only affects the
122
specified <a href="../api_java/db_class.html">Db</a> handle (and any other Berkeley DB handles opened within
123
the scope of that handle).
126
<p>The following flags may be specified for the Hash access method:
128
<p><dt><a name="Db.DB_DUP">Db.DB_DUP</a><dd>Permit duplicate data items in the tree; that is, insertion when the
129
key of the key/data pair being inserted already exists in the tree will
130
be successful. The ordering of duplicates in the tree is determined by
131
the order of insertion, unless the ordering is otherwise specified by
132
use of a cursor operation. It is an error to specify both Db.DB_DUP
134
<p>Calling Db.set_flags with the Db.DB_DUP flag affects the
135
database, including all threads of control accessing the database.
136
<p>If the database already exists when <a href="../api_java/db_open.html">Db.open</a> is called, the DB_DUP
138
must be the same as the existing database or an error
140
<p><dt><a name="Db.DB_DUPSORT">Db.DB_DUPSORT</a><dd>Permit duplicate data items in the tree; that is, insertion when the
141
key of the key/data pair being inserted already exists in the tree will
142
be successful. The ordering of duplicates in the tree is determined by
143
the duplicate comparison function.
144
A default lexical comparison will be used.
145
It is an error to specify both Db.DB_DUPSORT and Db.DB_RECNUM.
146
<p>Calling Db.set_flags with the Db.DB_DUPSORT flag affects the
147
database, including all threads of control accessing the database.
148
<p>If the database already exists when <a href="../api_java/db_open.html">Db.open</a> is called, the DB_DUPSORT
150
must be the same as the existing database or an error
154
<p>There are no additional flags that may be specified for the Queue access
157
<p>The following flags may be specified for the Recno access method:
159
<a name="10"><!--meow--></a>
160
<p><dt><a name="Db.DB_RENUMBER">Db.DB_RENUMBER</a><dd>Specifying the Db.DB_RENUMBER flag causes the logical record
161
numbers to be mutable, and change as records are added to and deleted
162
from the database. For example, the deletion of record number 4 causes
163
records numbered 5 and greater to be renumbered downward by one. If a
164
cursor was positioned to record number 4 before the deletion, it will
165
refer to the new record number 4, if any such record exists, after the
166
deletion. If a cursor was positioned after record number 4 before the
167
deletion, it will be shifted downward one logical record, continuing to
168
refer to the same record as it did before.
169
<p>Using the <a href="../api_java/db_put.html">Db.put</a> or <a href="../api_java/dbc_put.html">Dbc.put</a> interfaces to create new
170
records will cause the creation of multiple records if the record number
171
is more than one greater than the largest record currently in the
172
database. For example, creating record 28, when record 25 was previously
173
the last record in the database, will create records 26 and 27 as well as
174
28. Attempts to retrieve records that were created in this manner will
175
result in an error return of <a href="../ref/program/errorret.html#DB_KEYEMPTY">Db.DB_KEYEMPTY</a>.
176
<p>If a created record is not at the end of the database, all records
177
following the new record will be automatically renumbered upward by one.
178
For example, the creation of a new record numbered 8 causes records
179
numbered 8 and greater to be renumbered upward by one. If a cursor was
180
positioned to record number 8 or greater before the insertion, it will be
181
shifted upward one logical record, continuing to refer to the same record
183
<p>For these reasons, concurrent access to a Recno database with the
184
Db.DB_RENUMBER flag specified may be largely meaningless, although
186
<p>Calling Db.set_flags with the Db.DB_RENUMBER flag affects the
187
database, including all threads of control accessing the database.
188
<p>If the database already exists when <a href="../api_java/db_open.html">Db.open</a> is called, the DB_RENUMBER
190
must be the same as the existing database or an error
192
<a name="11"><!--meow--></a>
193
<p><dt><a name="Db.DB_SNAPSHOT">Db.DB_SNAPSHOT</a><dd>This flag specifies that any specified <b>re_source</b> file be read
194
in its entirety when <a href="../api_java/db_open.html">Db.open</a> is called. If this flag is not
195
specified, the <b>re_source</b> file may be read lazily.
196
<p>Calling Db.set_flags with the Db.DB_SNAPSHOT flag only affects the
197
specified <a href="../api_java/db_class.html">Db</a> handle (and any other Berkeley DB handles opened within
198
the scope of that handle).
200
<p>The Db.set_flags interface may not be called after the <a href="../api_java/db_open.html">Db.open</a>
202
<p>The Db.set_flags method throws an exception that encapsulates a non-zero error value on
205
<p>The Db.set_flags method may fail and throw an exception encapsulating a non-zero error for the following conditions:
207
<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
209
<p>The <a href="../api_java/db_set_bt_compare.html">Db.set_bt_compare</a> method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
210
If a catastrophic error has occurred, the <a href="../api_java/db_set_bt_compare.html">Db.set_bt_compare</a> method may fail and
211
throw a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>,
212
in which case all subsequent Berkeley DB calls will fail in the same way.
214
<a href="../api_java/db_class.html">Db</a>
216
<a href="../api_java/db_list.html">Databases and Related Methods</a>
218
<table width="100%"><tr><td><br></td><td align=right>
219
<a href="../api_java/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
221
<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>