| 1 | .\" Copyright (c) 1990, 1993
|
|---|
| 2 | .\" The Regents of the University of California. All rights reserved.
|
|---|
| 3 | .\"
|
|---|
| 4 | .\" Redistribution and use in source and binary forms, with or without
|
|---|
| 5 | .\" modification, are permitted provided that the following conditions
|
|---|
| 6 | .\" are met:
|
|---|
| 7 | .\" 1. Redistributions of source code must retain the above copyright
|
|---|
| 8 | .\" notice, this list of conditions and the following disclaimer.
|
|---|
| 9 | .\" 2. Redistributions in binary form must reproduce the above copyright
|
|---|
| 10 | .\" notice, this list of conditions and the following disclaimer in the
|
|---|
| 11 | .\" documentation and/or other materials provided with the distribution.
|
|---|
| 12 | .\" 3. All advertising materials mentioning features or use of this software
|
|---|
| 13 | .\" must display the following acknowledgement:
|
|---|
| 14 | .\" This product includes software developed by the University of
|
|---|
| 15 | .\" California, Berkeley and its contributors.
|
|---|
| 16 | .\" 4. Neither the name of the University nor the names of its contributors
|
|---|
| 17 | .\" may be used to endorse or promote products derived from this software
|
|---|
| 18 | .\" without specific prior written permission.
|
|---|
| 19 | .\"
|
|---|
| 20 | .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|---|
| 21 | .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|---|
| 22 | .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|---|
| 23 | .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|---|
| 24 | .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|---|
| 25 | .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|---|
| 26 | .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|---|
| 27 | .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|---|
| 28 | .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|---|
| 29 | .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|---|
| 30 | .\" SUCH DAMAGE.
|
|---|
| 31 | .\"
|
|---|
| 32 | .\" @(#)dbopen.3 8.5 (Berkeley) 1/2/94
|
|---|
| 33 | .\" $FreeBSD: src/lib/libc/db/man/dbopen.3,v 1.8 2002/12/19 09:40:21 ru Exp $
|
|---|
| 34 | .\"
|
|---|
| 35 | .Dd January 2, 1994
|
|---|
| 36 | .Dt DBOPEN 3
|
|---|
| 37 | .Os
|
|---|
| 38 | .Sh NAME
|
|---|
| 39 | .Nm dbopen
|
|---|
| 40 | .Nd "database access methods"
|
|---|
| 41 | .Sh SYNOPSIS
|
|---|
| 42 | .In sys/types.h
|
|---|
| 43 | .In db.h
|
|---|
| 44 | .In fcntl.h
|
|---|
| 45 | .In limits.h
|
|---|
| 46 | .Ft DB *
|
|---|
| 47 | .Fn dbopen "const char *file" "int flags" "int mode" "DBTYPE type" "const void *openinfo"
|
|---|
| 48 | .Sh DESCRIPTION
|
|---|
| 49 | The
|
|---|
| 50 | .Fn dbopen
|
|---|
| 51 | function
|
|---|
| 52 | is the library interface to database files.
|
|---|
| 53 | The supported file formats are btree, hashed and UNIX file oriented.
|
|---|
| 54 | The btree format is a representation of a sorted, balanced tree structure.
|
|---|
| 55 | The hashed format is an extensible, dynamic hashing scheme.
|
|---|
| 56 | The flat-file format is a byte stream file with fixed or variable length
|
|---|
| 57 | records.
|
|---|
| 58 | The formats and file format specific information are described in detail
|
|---|
| 59 | in their respective manual pages
|
|---|
| 60 | .Xr btree 3 ,
|
|---|
| 61 | .Xr hash 3
|
|---|
| 62 | and
|
|---|
| 63 | .Xr recno 3 .
|
|---|
| 64 | .Pp
|
|---|
| 65 | The
|
|---|
| 66 | .Fn dbopen
|
|---|
| 67 | function
|
|---|
| 68 | opens
|
|---|
| 69 | .Fa file
|
|---|
| 70 | for reading and/or writing.
|
|---|
| 71 | Files never intended to be preserved on disk may be created by setting
|
|---|
| 72 | the
|
|---|
| 73 | .Fa file
|
|---|
| 74 | argument to
|
|---|
| 75 | .Dv NULL .
|
|---|
| 76 | .Pp
|
|---|
| 77 | The
|
|---|
| 78 | .Fa flags
|
|---|
| 79 | and
|
|---|
| 80 | .Fa mode
|
|---|
| 81 | arguments
|
|---|
| 82 | are as specified to the
|
|---|
| 83 | .Xr open 2
|
|---|
| 84 | routine, however, only the
|
|---|
| 85 | .Dv O_CREAT , O_EXCL , O_EXLOCK , O_NONBLOCK ,
|
|---|
| 86 | .Dv O_RDONLY , O_RDWR , O_SHLOCK
|
|---|
| 87 | and
|
|---|
| 88 | .Dv O_TRUNC
|
|---|
| 89 | flags are meaningful.
|
|---|
| 90 | (Note, opening a database file
|
|---|
| 91 | .Dv O_WRONLY
|
|---|
| 92 | is not possible.)
|
|---|
| 93 | .\"Three additional options may be specified by
|
|---|
| 94 | .\".Em or Ns 'ing
|
|---|
| 95 | .\"them into the
|
|---|
| 96 | .\".Fa flags
|
|---|
| 97 | .\"argument.
|
|---|
| 98 | .\".Bl -tag -width indent
|
|---|
| 99 | .\".It Dv DB_LOCK
|
|---|
| 100 | .\"Do the necessary locking in the database to support concurrent access.
|
|---|
| 101 | .\"If concurrent access isn't needed or the database is read-only this
|
|---|
| 102 | .\"flag should not be set, as it tends to have an associated performance
|
|---|
| 103 | .\"penalty.
|
|---|
| 104 | .\".It Dv DB_SHMEM
|
|---|
| 105 | .\"Place the underlying memory pool used by the database in shared
|
|---|
| 106 | .\"memory.
|
|---|
| 107 | .\"Necessary for concurrent access.
|
|---|
| 108 | .\".It Dv DB_TXN
|
|---|
| 109 | .\"Support transactions in the database.
|
|---|
| 110 | .\"The
|
|---|
| 111 | .\".Dv DB_LOCK
|
|---|
| 112 | .\"and
|
|---|
| 113 | .\".Dv DB_SHMEM
|
|---|
| 114 | .\"flags must be set as well.
|
|---|
| 115 | .\".El
|
|---|
| 116 | .Pp
|
|---|
| 117 | The
|
|---|
| 118 | .Fa type
|
|---|
| 119 | argument is of type
|
|---|
| 120 | .Ft DBTYPE
|
|---|
| 121 | (as defined in the
|
|---|
| 122 | .Aq Pa db.h
|
|---|
| 123 | include file) and
|
|---|
| 124 | may be set to
|
|---|
| 125 | .Dv DB_BTREE , DB_HASH
|
|---|
| 126 | or
|
|---|
| 127 | .Dv DB_RECNO .
|
|---|
| 128 | .Pp
|
|---|
| 129 | The
|
|---|
| 130 | .Fa openinfo
|
|---|
| 131 | argument is a pointer to an access method specific structure described
|
|---|
| 132 | in the access method's manual page.
|
|---|
| 133 | If
|
|---|
| 134 | .Fa openinfo
|
|---|
| 135 | is
|
|---|
| 136 | .Dv NULL ,
|
|---|
| 137 | each access method will use defaults appropriate for the system
|
|---|
| 138 | and the access method.
|
|---|
| 139 | .Pp
|
|---|
| 140 | The
|
|---|
| 141 | .Fn dbopen
|
|---|
| 142 | function
|
|---|
| 143 | returns a pointer to a
|
|---|
| 144 | .Ft DB
|
|---|
| 145 | structure on success and
|
|---|
| 146 | .Dv NULL
|
|---|
| 147 | on error.
|
|---|
| 148 | The
|
|---|
| 149 | .Ft DB
|
|---|
| 150 | structure is defined in the
|
|---|
| 151 | .Aq Pa db.h
|
|---|
| 152 | include file, and contains at
|
|---|
| 153 | least the following fields:
|
|---|
| 154 | .Bd -literal
|
|---|
| 155 | typedef struct {
|
|---|
| 156 | DBTYPE type;
|
|---|
| 157 | int (*close)(const DB *db);
|
|---|
| 158 | int (*del)(const DB *db, const DBT *key, u_int flags);
|
|---|
| 159 | int (*fd)(const DB *db);
|
|---|
| 160 | int (*get)(const DB *db, DBT *key, DBT *data, u_int flags);
|
|---|
| 161 | int (*put)(const DB *db, DBT *key, const DBT *data,
|
|---|
| 162 | u_int flags);
|
|---|
| 163 | int (*sync)(const DB *db, u_int flags);
|
|---|
| 164 | int (*seq)(const DB *db, DBT *key, DBT *data, u_int flags);
|
|---|
| 165 | } DB;
|
|---|
| 166 | .Ed
|
|---|
| 167 | .Pp
|
|---|
| 168 | These elements describe a database type and a set of functions performing
|
|---|
| 169 | various actions.
|
|---|
| 170 | These functions take a pointer to a structure as returned by
|
|---|
| 171 | .Fn dbopen ,
|
|---|
| 172 | and sometimes one or more pointers to key/data structures and a flag value.
|
|---|
| 173 | .Bl -tag -width indent
|
|---|
| 174 | .It Va type
|
|---|
| 175 | The type of the underlying access method (and file format).
|
|---|
| 176 | .It Va close
|
|---|
| 177 | A pointer to a routine to flush any cached information to disk, free any
|
|---|
| 178 | allocated resources, and close the underlying file(s).
|
|---|
| 179 | Since key/data pairs may be cached in memory, failing to sync the file
|
|---|
| 180 | with a
|
|---|
| 181 | .Va close
|
|---|
| 182 | or
|
|---|
| 183 | .Va sync
|
|---|
| 184 | function may result in inconsistent or lost information.
|
|---|
| 185 | .Va close
|
|---|
| 186 | routines return -1 on error (setting
|
|---|
| 187 | .Va errno )
|
|---|
| 188 | and 0 on success.
|
|---|
| 189 | .It Va del
|
|---|
| 190 | A pointer to a routine to remove key/data pairs from the database.
|
|---|
| 191 | .Pp
|
|---|
| 192 | The
|
|---|
| 193 | .Fa flags
|
|---|
| 194 | argument
|
|---|
| 195 | may be set to the following value:
|
|---|
| 196 | .Bl -tag -width indent
|
|---|
| 197 | .It Dv R_CURSOR
|
|---|
| 198 | Delete the record referenced by the cursor.
|
|---|
| 199 | The cursor must have previously been initialized.
|
|---|
| 200 | .El
|
|---|
| 201 | .Pp
|
|---|
| 202 | .Va delete
|
|---|
| 203 | routines return -1 on error (setting
|
|---|
| 204 | .Va errno ) ,
|
|---|
| 205 | 0 on success, and 1 if the specified
|
|---|
| 206 | .Fa key
|
|---|
| 207 | was not in the file.
|
|---|
| 208 | .It Va fd
|
|---|
| 209 | A pointer to a routine which returns a file descriptor representative
|
|---|
| 210 | of the underlying database.
|
|---|
| 211 | A file descriptor referencing the same file will be returned to all
|
|---|
| 212 | processes which call
|
|---|
| 213 | .Fn dbopen
|
|---|
| 214 | with the same
|
|---|
| 215 | .Fa file
|
|---|
| 216 | name.
|
|---|
| 217 | This file descriptor may be safely used as an argument to the
|
|---|
| 218 | .Xr fcntl 2
|
|---|
| 219 | and
|
|---|
| 220 | .Xr flock 2
|
|---|
| 221 | locking functions.
|
|---|
| 222 | The file descriptor is not necessarily associated with any of the
|
|---|
| 223 | underlying files used by the access method.
|
|---|
| 224 | No file descriptor is available for in memory databases.
|
|---|
| 225 | .Va \&Fd
|
|---|
| 226 | routines return -1 on error (setting
|
|---|
| 227 | .Va errno ) ,
|
|---|
| 228 | and the file descriptor on success.
|
|---|
| 229 | .It Va get
|
|---|
| 230 | A pointer to a routine which is the interface for keyed retrieval from
|
|---|
| 231 | the database.
|
|---|
| 232 | The address and length of the data associated with the specified
|
|---|
| 233 | .Fa key
|
|---|
| 234 | are returned in the structure referenced by
|
|---|
| 235 | .Fa data .
|
|---|
| 236 | .Va get
|
|---|
| 237 | routines return -1 on error (setting
|
|---|
| 238 | .Va errno ) ,
|
|---|
| 239 | 0 on success, and 1 if the
|
|---|
| 240 | .Fa key
|
|---|
| 241 | was not in the file.
|
|---|
| 242 | .It Va put
|
|---|
| 243 | A pointer to a routine to store key/data pairs in the database.
|
|---|
| 244 | .Pp
|
|---|
| 245 | The
|
|---|
| 246 | .Fa flags
|
|---|
| 247 | argument
|
|---|
| 248 | may be set to one of the following values:
|
|---|
| 249 | .Bl -tag -width indent
|
|---|
| 250 | .It Dv R_CURSOR
|
|---|
| 251 | Replace the key/data pair referenced by the cursor.
|
|---|
| 252 | The cursor must have previously been initialized.
|
|---|
| 253 | .It Dv R_IAFTER
|
|---|
| 254 | Append the data immediately after the data referenced by
|
|---|
| 255 | .Fa key ,
|
|---|
| 256 | creating a new key/data pair.
|
|---|
| 257 | The record number of the appended key/data pair is returned in the
|
|---|
| 258 | .Fa key
|
|---|
| 259 | structure.
|
|---|
| 260 | (Applicable only to the
|
|---|
| 261 | .Dv DB_RECNO
|
|---|
| 262 | access method.)
|
|---|
| 263 | .It Dv R_IBEFORE
|
|---|
| 264 | Insert the data immediately before the data referenced by
|
|---|
| 265 | .Fa key ,
|
|---|
| 266 | creating a new key/data pair.
|
|---|
| 267 | The record number of the inserted key/data pair is returned in the
|
|---|
| 268 | .Fa key
|
|---|
| 269 | structure.
|
|---|
| 270 | (Applicable only to the
|
|---|
| 271 | .Dv DB_RECNO
|
|---|
| 272 | access method.)
|
|---|
| 273 | .It Dv R_NOOVERWRITE
|
|---|
| 274 | Enter the new key/data pair only if the key does not previously exist.
|
|---|
| 275 | .It Dv R_SETCURSOR
|
|---|
| 276 | Store the key/data pair, setting or initializing the position of the
|
|---|
| 277 | cursor to reference it.
|
|---|
| 278 | (Applicable only to the
|
|---|
| 279 | .Dv DB_BTREE
|
|---|
| 280 | and
|
|---|
| 281 | .Dv DB_RECNO
|
|---|
| 282 | access methods.)
|
|---|
| 283 | .El
|
|---|
| 284 | .Pp
|
|---|
| 285 | .Dv R_SETCURSOR
|
|---|
| 286 | is available only for the
|
|---|
| 287 | .Dv DB_BTREE
|
|---|
| 288 | and
|
|---|
| 289 | .Dv DB_RECNO
|
|---|
| 290 | access
|
|---|
| 291 | methods because it implies that the keys have an inherent order
|
|---|
| 292 | which does not change.
|
|---|
| 293 | .Pp
|
|---|
| 294 | .Dv R_IAFTER
|
|---|
| 295 | and
|
|---|
| 296 | .Dv R_IBEFORE
|
|---|
| 297 | are available only for the
|
|---|
| 298 | .Dv DB_RECNO
|
|---|
| 299 | access method because they each imply that the access method is able to
|
|---|
| 300 | create new keys.
|
|---|
| 301 | This is only true if the keys are ordered and independent, record numbers
|
|---|
| 302 | for example.
|
|---|
| 303 | .Pp
|
|---|
| 304 | The default behavior of the
|
|---|
| 305 | .Va put
|
|---|
| 306 | routines is to enter the new key/data pair, replacing any previously
|
|---|
| 307 | existing key.
|
|---|
| 308 | .Pp
|
|---|
| 309 | .Va put
|
|---|
| 310 | routines return -1 on error (setting
|
|---|
| 311 | .Va errno ) ,
|
|---|
| 312 | 0 on success, and 1 if the
|
|---|
| 313 | .Dv R_NOOVERWRITE
|
|---|
| 314 | flag
|
|---|
| 315 | was set and the key already exists in the file.
|
|---|
| 316 | .It Va seq
|
|---|
| 317 | A pointer to a routine which is the interface for sequential
|
|---|
| 318 | retrieval from the database.
|
|---|
| 319 | The address and length of the key are returned in the structure
|
|---|
| 320 | referenced by
|
|---|
| 321 | .Fa key ,
|
|---|
| 322 | and the address and length of the data are returned in the
|
|---|
| 323 | structure referenced
|
|---|
| 324 | by
|
|---|
| 325 | .Fa data .
|
|---|
| 326 | .Pp
|
|---|
| 327 | Sequential key/data pair retrieval may begin at any time, and the
|
|---|
| 328 | position of the
|
|---|
| 329 | .Dq cursor
|
|---|
| 330 | is not affected by calls to the
|
|---|
| 331 | .Va del ,
|
|---|
| 332 | .Va get ,
|
|---|
| 333 | .Va put ,
|
|---|
| 334 | or
|
|---|
| 335 | .Va sync
|
|---|
| 336 | routines.
|
|---|
| 337 | Modifications to the database during a sequential scan will be reflected
|
|---|
| 338 | in the scan, i.e. records inserted behind the cursor will not be returned
|
|---|
| 339 | while records inserted in front of the cursor will be returned.
|
|---|
| 340 | .Pp
|
|---|
| 341 | The
|
|---|
| 342 | .Fa flags
|
|---|
| 343 | argument
|
|---|
| 344 | .Em must
|
|---|
| 345 | be set to one of the following values:
|
|---|
| 346 | .Bl -tag -width indent
|
|---|
| 347 | .It Dv R_CURSOR
|
|---|
| 348 | The data associated with the specified key is returned.
|
|---|
| 349 | This differs from the
|
|---|
| 350 | .Va get
|
|---|
| 351 | routines in that it sets or initializes the cursor to the location of
|
|---|
| 352 | the key as well.
|
|---|
| 353 | (Note, for the
|
|---|
| 354 | .Dv DB_BTREE
|
|---|
| 355 | access method, the returned key is not necessarily an
|
|---|
| 356 | exact match for the specified key.
|
|---|
| 357 | The returned key is the smallest key greater than or equal to the specified
|
|---|
| 358 | key, permitting partial key matches and range searches.)
|
|---|
| 359 | .It Dv R_FIRST
|
|---|
| 360 | The first key/data pair of the database is returned, and the cursor
|
|---|
| 361 | is set or initialized to reference it.
|
|---|
| 362 | .It Dv R_LAST
|
|---|
| 363 | The last key/data pair of the database is returned, and the cursor
|
|---|
| 364 | is set or initialized to reference it.
|
|---|
| 365 | (Applicable only to the
|
|---|
| 366 | .Dv DB_BTREE
|
|---|
| 367 | and
|
|---|
| 368 | .Dv DB_RECNO
|
|---|
| 369 | access methods.)
|
|---|
| 370 | .It Dv R_NEXT
|
|---|
| 371 | Retrieve the key/data pair immediately after the cursor.
|
|---|
| 372 | If the cursor is not yet set, this is the same as the
|
|---|
| 373 | .Dv R_FIRST
|
|---|
| 374 | flag.
|
|---|
| 375 | .It Dv R_PREV
|
|---|
| 376 | Retrieve the key/data pair immediately before the cursor.
|
|---|
| 377 | If the cursor is not yet set, this is the same as the
|
|---|
| 378 | .Dv R_LAST
|
|---|
| 379 | flag.
|
|---|
| 380 | (Applicable only to the
|
|---|
| 381 | .Dv DB_BTREE
|
|---|
| 382 | and
|
|---|
| 383 | .Dv DB_RECNO
|
|---|
| 384 | access methods.)
|
|---|
| 385 | .El
|
|---|
| 386 | .Pp
|
|---|
| 387 | .Dv R_LAST
|
|---|
| 388 | and
|
|---|
| 389 | .Dv R_PREV
|
|---|
| 390 | are available only for the
|
|---|
| 391 | .Dv DB_BTREE
|
|---|
| 392 | and
|
|---|
| 393 | .Dv DB_RECNO
|
|---|
| 394 | access methods because they each imply that the keys have an inherent
|
|---|
| 395 | order which does not change.
|
|---|
| 396 | .Pp
|
|---|
| 397 | .Va seq
|
|---|
| 398 | routines return -1 on error (setting
|
|---|
| 399 | .Va errno ) ,
|
|---|
| 400 | 0 on success and 1 if there are no key/data pairs less than or greater
|
|---|
| 401 | than the specified or current key.
|
|---|
| 402 | If the
|
|---|
| 403 | .Dv DB_RECNO
|
|---|
| 404 | access method is being used, and if the database file
|
|---|
| 405 | is a character special file and no complete key/data pairs are currently
|
|---|
| 406 | available, the
|
|---|
| 407 | .Va seq
|
|---|
| 408 | routines return 2.
|
|---|
| 409 | .It Va sync
|
|---|
| 410 | A pointer to a routine to flush any cached information to disk.
|
|---|
| 411 | If the database is in memory only, the
|
|---|
| 412 | .Va sync
|
|---|
| 413 | routine has no effect and will always succeed.
|
|---|
| 414 | .Pp
|
|---|
| 415 | The
|
|---|
| 416 | .Fa flags
|
|---|
| 417 | argument may be set to the following value:
|
|---|
| 418 | .Bl -tag -width indent
|
|---|
| 419 | .It Dv R_RECNOSYNC
|
|---|
| 420 | If the
|
|---|
| 421 | .Dv DB_RECNO
|
|---|
| 422 | access method is being used, this flag causes
|
|---|
| 423 | the
|
|---|
| 424 | .Va sync
|
|---|
| 425 | routine to apply to the btree file which underlies the
|
|---|
| 426 | recno file, not the recno file itself.
|
|---|
| 427 | (See the
|
|---|
| 428 | .Va bfname
|
|---|
| 429 | field of the
|
|---|
| 430 | .Xr recno 3
|
|---|
| 431 | manual page for more information.)
|
|---|
| 432 | .El
|
|---|
| 433 | .Pp
|
|---|
| 434 | .Va sync
|
|---|
| 435 | routines return -1 on error (setting
|
|---|
| 436 | .Va errno )
|
|---|
| 437 | and 0 on success.
|
|---|
| 438 | .El
|
|---|
| 439 | .Sh "KEY/DATA PAIRS"
|
|---|
| 440 | Access to all file types is based on key/data pairs.
|
|---|
| 441 | Both keys and data are represented by the following data structure:
|
|---|
| 442 | .Bd -literal
|
|---|
| 443 | typedef struct {
|
|---|
| 444 | void *data;
|
|---|
| 445 | size_t size;
|
|---|
| 446 | } DBT;
|
|---|
| 447 | .Ed
|
|---|
| 448 | .Pp
|
|---|
| 449 | The elements of the
|
|---|
| 450 | .Ft DBT
|
|---|
| 451 | structure are defined as follows:
|
|---|
| 452 | .Bl -tag -width "data"
|
|---|
| 453 | .It Va data
|
|---|
| 454 | A pointer to a byte string.
|
|---|
| 455 | .It Va size
|
|---|
| 456 | The length of the byte string.
|
|---|
| 457 | .El
|
|---|
| 458 | .Pp
|
|---|
| 459 | Key and data byte strings may reference strings of essentially unlimited
|
|---|
| 460 | length although any two of them must fit into available memory at the same
|
|---|
| 461 | time.
|
|---|
| 462 | It should be noted that the access methods provide no guarantees about
|
|---|
| 463 | byte string alignment.
|
|---|
| 464 | .Sh ERRORS
|
|---|
| 465 | The
|
|---|
| 466 | .Fn dbopen
|
|---|
| 467 | routine may fail and set
|
|---|
| 468 | .Va errno
|
|---|
| 469 | for any of the errors specified for the library routines
|
|---|
| 470 | .Xr open 2
|
|---|
| 471 | and
|
|---|
| 472 | .Xr malloc 3
|
|---|
| 473 | or the following:
|
|---|
| 474 | .Bl -tag -width Er
|
|---|
| 475 | .It Bq Er EFTYPE
|
|---|
| 476 | A file is incorrectly formatted.
|
|---|
| 477 | .It Bq Er EINVAL
|
|---|
| 478 | An argument has been specified (hash function, pad byte etc.) that is
|
|---|
| 479 | incompatible with the current file specification or which is not
|
|---|
| 480 | meaningful for the function (for example, use of the cursor without
|
|---|
| 481 | prior initialization) or there is a mismatch between the version
|
|---|
| 482 | number of file and the software.
|
|---|
| 483 | .El
|
|---|
| 484 | .Pp
|
|---|
| 485 | The
|
|---|
| 486 | .Va close
|
|---|
| 487 | routines may fail and set
|
|---|
| 488 | .Va errno
|
|---|
| 489 | for any of the errors specified for the library routines
|
|---|
| 490 | .Xr close 2 ,
|
|---|
| 491 | .Xr read 2 ,
|
|---|
| 492 | .Xr write 2 ,
|
|---|
| 493 | .Xr free 3 ,
|
|---|
| 494 | or
|
|---|
| 495 | .Xr fsync 2 .
|
|---|
| 496 | .Pp
|
|---|
| 497 | The
|
|---|
| 498 | .Va del ,
|
|---|
| 499 | .Va get ,
|
|---|
| 500 | .Va put
|
|---|
| 501 | and
|
|---|
| 502 | .Va seq
|
|---|
| 503 | routines may fail and set
|
|---|
| 504 | .Va errno
|
|---|
| 505 | for any of the errors specified for the library routines
|
|---|
| 506 | .Xr read 2 ,
|
|---|
| 507 | .Xr write 2 ,
|
|---|
| 508 | .Xr free 3
|
|---|
| 509 | or
|
|---|
| 510 | .Xr malloc 3 .
|
|---|
| 511 | .Pp
|
|---|
| 512 | The
|
|---|
| 513 | .Va fd
|
|---|
| 514 | routines will fail and set
|
|---|
| 515 | .Va errno
|
|---|
| 516 | to
|
|---|
| 517 | .Er ENOENT
|
|---|
| 518 | for in memory databases.
|
|---|
| 519 | .Pp
|
|---|
| 520 | The
|
|---|
| 521 | .Va sync
|
|---|
| 522 | routines may fail and set
|
|---|
| 523 | .Va errno
|
|---|
| 524 | for any of the errors specified for the library routine
|
|---|
| 525 | .Xr fsync 2 .
|
|---|
| 526 | .Sh SEE ALSO
|
|---|
| 527 | .Xr btree 3 ,
|
|---|
| 528 | .Xr hash 3 ,
|
|---|
| 529 | .Xr mpool 3 ,
|
|---|
| 530 | .Xr recno 3
|
|---|
| 531 | .Rs
|
|---|
| 532 | .%T "LIBTP: Portable, Modular Transactions for UNIX"
|
|---|
| 533 | .%A Margo Seltzer
|
|---|
| 534 | .%A Michael Olson
|
|---|
| 535 | .%R "USENIX proceedings"
|
|---|
| 536 | .%D Winter 1992
|
|---|
| 537 | .Re
|
|---|
| 538 | .Sh BUGS
|
|---|
| 539 | The typedef
|
|---|
| 540 | .Ft DBT
|
|---|
| 541 | is a mnemonic for
|
|---|
| 542 | .Dq "data base thang" ,
|
|---|
| 543 | and was used
|
|---|
| 544 | because noone could think of a reasonable name that wasn't already used.
|
|---|
| 545 | .Pp
|
|---|
| 546 | The file descriptor interface is a kluge and will be deleted in a
|
|---|
| 547 | future version of the interface.
|
|---|
| 548 | .Pp
|
|---|
| 549 | None of the access methods provide any form of concurrent access,
|
|---|
| 550 | locking, or transactions.
|
|---|