- Berkeley DB Reference Guide:
- Access Methods
|
|
Retrieving records with a cursor
The DBcursor->c_get function is the standard interface for retrieving records from
the database with a cursor. The DBcursor->c_get function takes a flag which
controls how the cursor is positioned within the database and returns the
key/data item associated with that positioning. Similar to
DB->get, DBcursor->c_get may also take a supplied key and retrieve
the data associated with that key from the database. There are several
flags that you can set to customize retrieval.
Cursor position flags
- DB_FIRST, DB_LAST
- Return the first (last) record from the database.
- DB_NEXT, DB_PREV
- Return the record from the database immediately following (preceding) the
cursor.
- DB_NEXT_DUP
- Return the record from the database immediately following the cursor, if
it is a duplicate data item for the current key.
- DB_NEXT_NODUP, DB_PREV_NODUP
- Return the next record from the database following (preceding) the cursor
that is not a duplicate data item for the current key.
- DB_CURRENT
- Return the record from the database currently pointed to by the cursor.
Retrieving specific key/data pairs
- DB_SET
- Return the record from the database that matches the supplied key. In
the case of duplicates the first duplicate is returned and the cursor is
positioned at the beginning of the duplicate list. The user can then
traverse the duplicate entries for the key.
- DB_SET_RANGE
- Return the smallest record in the database greater than or equal to the
supplied key. This functionality permits partial key matches and range
searches.
- DB_GET_BOTH
- Return the record from the database that matches both the supplied key
and data items. This is particularly useful when there are large numbers
of duplicate records for a key, as it allows the cursor to easily be
positioned at the correct place for traversal of some part of a large set
of duplicate records.
Retrieving based on record numbers
- DB_SET_RECNO
- If the underlying database is a Btree, and was configured so that it is
possible to search it by logical record number, retrieve a specific
record.
- DB_GET_RECNO
- If the underlying database is a Btree, and was configured so that it is
possible to search it by logical record number, return the record number
for the current cursor record.
Special-purpose flags
- DB_CONSUME
- Read-and-delete: the first record (the head) of the queue is returned and
deleted. The underlying database must be a Queue.
- DB_RMW
- Read-modify-write: acquire write locks instead of read locks during
retrieval. This can enhance performance in threaded applications where
deadlock is a concern.
In all cases, the cursor is repositioned by a DBcursor->c_get operation
to point to the newly-returned key/data pair in the database.
Copyright Sleepycat Software