)
is the library interface to database files.
One of the supported file formats is record number files.
The general description of the database access methods is in
dbopen(3),
this manual page describes only the recno specific information.
The record number data structure is either variable or fixed-length records stored in a flat-file format, accessed by the logical record number. The existence of record number five implies the existence of records one through four, and the deletion of record number one causes record number five to be renumbered to record number four, as well as the cursor, if positioned after record number one, to shift down one record.
The recno access method specific data structure provided to
dbopen()
is defined in the
<
db.h
>
include file as follows:
typedef struct {
u_long flags;
u_int cachesize;
u_int psize;
int lorder;
size_t reclen;
uint8_t bval;
char *bfname;
} RECNOINFO;
The elements of this structure are defined as follows:
flags
R_FIXEDLEN
reclen
specifies the length of the record, and the structure element
bval
is used as the pad character.
Any records, inserted into the database, that are less than
reclen
bytes long are automatically padded.
R_NOKEY
),
the sequential record retrieval fills in both the caller's key and
data structures.
If the
R_NOKEY
flag is specified, the cursor routines are not required to fill in the
key structure.
This permits applications to retrieve records at the end of files
without reading all of the intervening records.
R_SNAPSHOT
)
is called, instead of permitting any unmodified records to be read
from the original file.
cachesize
cachesize
is 0 (no size is specified) a default cache is used.
psize
psize
is 0 (no page size is specified) a page size is chosen based on the
underlying file system I/O block size.
See
btree(3)
for more information.
lorder
lorder
is 0 (no order is specified) the current host order is used.
reclen
bval
bfname
NULL
,
it specifies the name of the btree file, as if specified as the file
name for a
dbopen(
)
of a btree file.
The data part of the key/data pair used by the recno access method
is the same as other access methods.
The key is different.
The
data
field of the key should be a pointer to a memory location of type
recno_t, as defined in the
<db.h
>
include file.
This type is normally the largest unsigned integral type available to
the implementation.
The
size
field of the key should be the size of that type.
Because there can be no meta-data associated with the underlying recno access method files, any changes made to the default values (e.g., fixed record length or byte separator value) must be explicitly specified each time the file is opened.
In the interface specified by
dbopen(),
using the
put
interface to create a new record will cause the creation of multiple,
empty records if the record number is more than one greater than the
largest record currently in the database.
EINVAL