Berkeley DB Reference Guide: Partial record storage and retrieval
Berkeley DB Reference Guide:
Partial record storage and retrieval
It is possible to both store and retrieve parts of data items in all
Berkeley DB access methods. This is done by setting the
DB_DBT_PARTIAL flag in the DBT structure passed to the
Berkeley DB interface.
The DB_DBT_PARTIAL flag is based on the values of two fields
of the DBT structure, dlen and doff. The value
of dlen is the number of bytes of the record in which the
application is interested. The value of doff is the offset from
the beginning of the data item where those bytes start.
For example, if the data item were ABCDEFGHIJKL, a doff
value of 3 would indicate that the bytes of interest started at
D, and a dlen value of 4 would indicate that the bytes
of interest were DEFG.
When retrieving a data item from a database, the dlen bytes
starting doff bytes from the beginning of the record are
returned, as if they comprised the entire record. If any or all of the
specified bytes do not exist in the record, the retrieval is still
successful and any existing bytes (and nul bytes for any non-existent
bytes) are returned.
When storing a data item into the database, the dlen bytes
starting doff bytes from the beginning of the specified key's
data record are replaced by the data specified by the data and
size fields. If dlen is smaller than size, the
record will grow, and if dlen is larger than size, the
record will shrink. If the specified bytes do not exist, the record will
be extended using nul bytes as necessary, and the store call will still
The following are various examples of the put case for the
DB_DBT_PARTIAL flag. In all examples, the initial data item is 20
bytes in length: