summaryrefslogtreecommitdiff
path: root/bdb/docs/api_cxx/db_set_re_source.html
blob: ea51dde62022280ef1c680e88c9d1ca0ddcb379c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!--$Id: db_set_re_source.so,v 10.17 2000/05/01 21:57:43 bostic Exp $-->
<!--Copyright 1997, 1998, 1999, 2000 by Sleepycat Software, Inc.-->
<!--All rights reserved.-->
<html>
<head>
<title>Berkeley DB: Db::set_re_source</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_re_source</h1>
</td>
<td width="1%">
<a href="../api_cxx/cxx_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 &lt;db_cxx.h&gt;
<p>
int
Db::set_re_source(char *re_source);
</pre></h3>
<h1>Description</h1>
<p>Set the underlying source file for the Recno access method.  The purpose
of the <b>re_source</b> value is to provide fast access and modification
to databases that are normally stored as flat text files.
<p>If the <b>re_source</b> field is set, it specifies an underlying flat
text database file that is read to initialize a transient record number
index.  In the case of variable length records, the records are separated
as specified by <a href="../api_cxx/db_set_re_delim.html">Db::set_re_delim</a>.  For example, standard UNIX
byte stream files can be interpreted as a sequence of variable length
records separated by &lt;newline&gt; characters.
<p>In addition, when cached data would normally be written back to the
underlying database file (e.g., the <a href="../api_cxx/db_close.html">Db::close</a> or <a href="../api_cxx/db_sync.html">Db::sync</a>
methods are called), the in-memory copy of the database will be written
back to the <b>re_source</b> file.
<p>By default, the backing source file is read lazily, i.e., records are not
read from the file until they are requested by the application.
<b>If multiple processes (not threads) are accessing a Recno database
concurrently and either inserting or deleting records, the backing source
file must be read in its entirety before more than a single process
accesses the database, and only that process should specify the backing
source file as part of the <a href="../api_cxx/db_open.html">Db::open</a> call.  See the <a href="../api_cxx/db_set_flags.html#DB_SNAPSHOT">DB_SNAPSHOT</a>
flag for more information.</b>
<p><b>Reading and writing the backing source file specified by <b>re_source</b>
cannot be transactionally protected because it involves filesystem
operations that are not part of the Db transaction methodology.</b>
For this reason, if a temporary database is used to hold the records,
i.e., a NULL was specified as the <b>file</b> argument to <a href="../api_cxx/db_open.html">Db::open</a>,
it is possible to lose the contents of the <b>re_source</b> file, e.g.,
if the system crashes at the right instant.
If a file is used to hold the database, i.e., a file name was specified
as the <b>file</b> argument to <a href="../api_cxx/db_open.html">Db::open</a>, normal database
recovery on that file can be used to prevent information loss,
although it is still possible that the contents of <b>re_source</b>
will be lost if the system crashes.
<p>The <b>re_source</b> file must already exist (but may be zero-length) when
<a href="../api_cxx/db_open.html">Db::open</a> is called.
<p>It is not an error to specify a read-only <b>re_source</b> file when
creating a database, nor is it an error to modify the resulting database.
However, any attempt to write the changes to the backing source file using
either the <a href="../api_cxx/db_sync.html">Db::sync</a> or <a href="../api_cxx/db_close.html">Db::close</a> methods will fail, of course.
Specify the <a href="../api_cxx/db_close.html#DB_NOSYNC">DB_NOSYNC</a> flag to the <a href="../api_cxx/db_close.html">Db::close</a> method to stop it
from attempting to write the changes to the backing file, instead, they
will be silently discarded.
<p>For all of the above reasons, the <b>re_source</b> field is generally
used to specify databases that are read-only for <a href="../api_cxx/db_class.html">Db</a> applications,
and that are either generated on the fly by software tools, or modified
using a different mechanism, e.g., a text editor.
<p>The Db::set_re_source interface may only be used to configure Berkeley DB before
the <a href="../api_cxx/db_open.html">Db::open</a> interface is called.
<p>The Db::set_re_source method either returns a non-zero error value or throws an exception that
encapsulates a non-zero error value on failure, and returns 0 on success.
<h1>Errors</h1>
<p><dl compact>
<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
<p>Called after <a href="../api_cxx/db_open.html">Db::open</a> was called.
</dl>
<h3>Class</h3>
<a href="../api_cxx/db_class.html">Db</a>
<h1>See Also</h1>
<a href="../api_cxx/db_close.html">Db::close</a>,
<a href="../api_cxx/db_cursor.html">Db::cursor</a>,
<a href="../api_cxx/db_del.html">Db::del</a>,
<a href="../api_cxx/db_err.html">Db::err</a>,
<a href="../api_cxx/db_fd.html">Db::fd</a>,
<a href="../api_cxx/db_get.html">Db::get</a>,
<a href="../api_cxx/db_get_byteswapped.html">Db::get_byteswapped</a>,
<a href="../api_cxx/db_get_type.html">Db::get_type</a>,
<a href="../api_cxx/db_join.html">Db::join</a>,
<a href="../api_cxx/db_key_range.html">Db::key_range</a>,
<a href="../api_cxx/db_open.html">Db::open</a>,
<a href="../api_cxx/db_put.html">Db::put</a>,
<a href="../api_cxx/db_remove.html">Db::remove</a>,
<a href="../api_cxx/db_set_bt_compare.html">Db::set_bt_compare</a>,
<a href="../api_cxx/db_set_bt_minkey.html">Db::set_bt_minkey</a>,
<a href="../api_cxx/db_set_bt_prefix.html">Db::set_bt_prefix</a>,
<a href="../api_cxx/db_set_cachesize.html">Db::set_cachesize</a>,
<a href="../api_cxx/db_set_dup_compare.html">Db::set_dup_compare</a>,
<a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a>,
<a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a>,
<a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a>,
<a href="../api_cxx/db_set_flags.html">Db::set_flags</a>,
<a href="../api_cxx/db_set_h_ffactor.html">Db::set_h_ffactor</a>,
<a href="../api_cxx/db_set_h_hash.html">Db::set_h_hash</a>,
<a href="../api_cxx/db_set_h_nelem.html">Db::set_h_nelem</a>,
<a href="../api_cxx/db_set_lorder.html">Db::set_lorder</a>,
<a href="../api_cxx/db_set_malloc.html">Db::set_malloc</a>,
<a href="../api_cxx/db_set_pagesize.html">Db::set_pagesize</a>,
<a href="../api_cxx/db_set_paniccall.html">Db::set_paniccall</a>,
<a href="../api_cxx/db_set_q_extentsize.html">Db::set_q_extentsize</a>,
<a href="../api_cxx/db_set_realloc.html">Db::set_realloc</a>,
<a href="../api_cxx/db_set_re_delim.html">Db::set_re_delim</a>,
<a href="../api_cxx/db_set_re_len.html">Db::set_re_len</a>,
<a href="../api_cxx/db_set_re_pad.html">Db::set_re_pad</a>,
<a href="../api_cxx/db_set_re_source.html">Db::set_re_source</a>,
<a href="../api_cxx/db_stat.html">Db::stat</a>,
<a href="../api_cxx/db_sync.html">Db::sync</a>,
<a href="../api_cxx/db_upgrade.html">Db::upgrade</a>
and
<a href="../api_cxx/db_verify.html">Db::verify</a>.
</tt>
<table><tr><td><br></td><td width="1%">
<a href="../api_cxx/cxx_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>