A WT_CURSOR handle is the interface to a cursor. More...
Public Member Functions | |
int | close (WT_CURSOR *cursor) |
Close the cursor. | |
Data access | |
int | get_key (WT_CURSOR *cursor,...) |
Get the key for the current record. | |
int | get_value (WT_CURSOR *cursor,...) |
Get the value for the current record. | |
void | set_key (WT_CURSOR *cursor,...) |
Set the key for the next operation. | |
void | set_value (WT_CURSOR *cursor,...) |
Set the value for the next operation. | |
Cursor positioning | |
int | compare (WT_CURSOR *cursor, WT_CURSOR *other, int *comparep) |
Return the ordering relationship between two cursors: both cursors must have the same data source and have valid keys. | |
int | next (WT_CURSOR *cursor) |
Return the next record. | |
int | prev (WT_CURSOR *cursor) |
Return the previous record. | |
int | reset (WT_CURSOR *cursor) |
Reset the position of the cursor. | |
int | search (WT_CURSOR *cursor) |
Move to the record matching the key. | |
int | search_near (WT_CURSOR *cursor, int *exactp) |
Move to the record matching the key if it exists, or a record that would be adjacent. | |
Data modification | |
int | insert (WT_CURSOR *cursor) |
Insert a record, and optionally overwrite an existing record. | |
int | update (WT_CURSOR *cursor) |
Update a record. | |
int | remove (WT_CURSOR *cursor) |
Remove a record. | |
Public Attributes | |
WT_SESSION * | session |
The session handle for this cursor. | |
const char * | uri |
The name of the data source for the cursor, matches the uri parameter to WT_SESSION::open_cursor used to open the cursor. | |
const char * | key_format |
The format of the data packed into key items. | |
const char * | value_format |
The format of the data packed into value items. | |
A WT_CURSOR handle is the interface to a cursor.
Cursors allow data to be searched, iterated and modified, implementing the CRUD (create, read, update and delete) operations. Cursors are opened in the context of a session. If a transaction is started, cursors operate in the context of the transaction until the transaction is resolved.
Raw data is represented by key/value pairs of WT_ITEM structures, but cursors can also provide access to fields within the key and value if the formats are described in the WT_SESSION::create method.
In the common case, a cursor is used to access records in a table. However, cursors can be used on subsets of tables (such as a single column or a projection of multiple columns), as an interface to statistics, configuration data or application-specific data sources. See WT_SESSION::open_cursor for more information.
Thread safety: A WT_CURSOR handle is not usually shared between threads, see Multithreading for more information.
int WT_CURSOR::close | ( | WT_CURSOR * | cursor | ) |
Close the cursor.
This releases the resources associated with the cursor handle. Cursors are closed implicitly by ending the enclosing transaction or closing the session in which they were opened.
cursor | the cursor handle |
Return the ordering relationship between two cursors: both cursors must have the same data source and have valid keys.
cursor | the cursor handle |
other | another cursor handle |
comparep | the status of the comparison: < 0 if cursor refers to a key that appears before other , 0 if the cursors refer to the same key, and > 0 if cursor refers to a key that appears after other . |
int WT_CURSOR::get_key | ( | WT_CURSOR * | cursor, |
... | |||
) |
Get the key for the current record.
cursor | the cursor handle |
int WT_CURSOR::get_value | ( | WT_CURSOR * | cursor, |
... | |||
) |
Get the value for the current record.
cursor | the cursor handle |
int WT_CURSOR::insert | ( | WT_CURSOR * | cursor | ) |
Insert a record, and optionally overwrite an existing record.
If the cursor was not configured with "append" or "overwrite", both the key and value must be set and the record must not already exist; the record will be inserted.
If the cursor was configured with "overwrite", both the key and value must be set; if the record already exists, the key's value will be updated, otherwise, the record will be inserted.
In a cursor with record number keys was configured with "append", the value must be set; a new record will be appended and the record number set as the cursor key value.
Inserting a new record after the current maximum record in a fixed-length bit field column-store (that is, a store with an 'r' type key and 't' type value) implicitly creates the missing records as records with a value of 0.
cursor | the cursor handle |
int WT_CURSOR::next | ( | WT_CURSOR * | cursor | ) |
Return the next record.
cursor | the cursor handle |
int WT_CURSOR::prev | ( | WT_CURSOR * | cursor | ) |
Return the previous record.
cursor | the cursor handle |
int WT_CURSOR::remove | ( | WT_CURSOR * | cursor | ) |
Remove a record.
The key must be set, and the key's record will be removed.
Removing a record in a fixed-length bit field column-store (that is, a store with an 'r' type key and 't' type value) is identical to setting the record's value to 0.
cursor | the cursor handle |
int WT_CURSOR::reset | ( | WT_CURSOR * | cursor | ) |
Reset the position of the cursor.
Any resources held by the cursor are released, and the cursor's key and position are no longer valid. A subsequent iteration with WT_CURSOR::next will move to the first record, or with WT_CURSOR::prev will move to the last record.
cursor | the cursor handle |
int WT_CURSOR::search | ( | WT_CURSOR * | cursor | ) |
Move to the record matching the key.
The key must first be set.
cursor | the cursor handle |
int WT_CURSOR::search_near | ( | WT_CURSOR * | cursor, |
int * | exactp | ||
) |
Move to the record matching the key if it exists, or a record that would be adjacent.
Either the smallest record larger than the key or the largest record smaller than the key (in other words, a logically adjacent key). The key must first be set.
cursor | the cursor handle |
exactp | the status of the search: 0 if an exact match is found, < 0 if a smaller key is returned, > 0 if a larger key is returned |
void WT_CURSOR::set_key | ( | WT_CURSOR * | cursor, |
... | |||
) |
Set the key for the next operation.
cursor | the cursor handle |
If an error occurs during this operation, a flag will be set in the cursor, and the next operation to access the key will fail. This simplifies error handling in applications.
void WT_CURSOR::set_value | ( | WT_CURSOR * | cursor, |
... | |||
) |
Set the value for the next operation.
cursor | the cursor handle |
If an error occurs during this operation, a flag will be set in the cursor, and the next operation to access the value will fail. This simplifies error handling in applications.
int WT_CURSOR::update | ( | WT_CURSOR * | cursor | ) |
Update a record.
Both key and value must be set, the key must exist, and the value of the key's record will be updated.
cursor | the cursor handle |
const char* WT_CURSOR::key_format |
The format of the data packed into key items.
See Packing and Unpacking Data for details. If not set, a default value of "u" is assumed, and applications must use WT_ITEM structures to manipulate untyped byte arrays.
WT_SESSION* WT_CURSOR::session |
The session handle for this cursor.
const char* WT_CURSOR::value_format |
The format of the data packed into value items.
See Packing and Unpacking Data for details. If not set, a default value of "u" is assumed, and applications must use WT_ITEM structures to manipulate untyped byte arrays.