Typedefs | |
typedef struct MDBX_cursor | MDBX_cursor |
Opaque structure for navigating through a table. | |
Enumerations | |
enum | MDBX_cursor_op { MDBX_FIRST , MDBX_FIRST_DUP , MDBX_GET_BOTH , MDBX_GET_BOTH_RANGE , MDBX_GET_CURRENT , MDBX_GET_MULTIPLE , MDBX_LAST , MDBX_LAST_DUP , MDBX_NEXT , MDBX_NEXT_DUP , MDBX_NEXT_MULTIPLE , MDBX_NEXT_NODUP , MDBX_PREV , MDBX_PREV_DUP , MDBX_PREV_NODUP , MDBX_SET , MDBX_SET_KEY , MDBX_SET_RANGE , MDBX_PREV_MULTIPLE , MDBX_SET_LOWERBOUND , MDBX_SET_UPPERBOUND , MDBX_TO_KEY_LESSER_THAN , MDBX_TO_KEY_LESSER_OR_EQUAL , MDBX_TO_KEY_EQUAL , MDBX_TO_KEY_GREATER_OR_EQUAL , MDBX_TO_KEY_GREATER_THAN , MDBX_TO_EXACT_KEY_VALUE_LESSER_THAN , MDBX_TO_EXACT_KEY_VALUE_LESSER_OR_EQUAL , MDBX_TO_EXACT_KEY_VALUE_EQUAL , MDBX_TO_EXACT_KEY_VALUE_GREATER_OR_EQUAL , MDBX_TO_EXACT_KEY_VALUE_GREATER_THAN , MDBX_TO_PAIR_LESSER_THAN , MDBX_TO_PAIR_LESSER_OR_EQUAL , MDBX_TO_PAIR_EQUAL , MDBX_TO_PAIR_GREATER_OR_EQUAL , MDBX_TO_PAIR_GREATER_THAN } |
Cursor operationsThis is the set of all operations for retrieving data using a cursor. More... | |
Functions | |
LIBMDBX_API MDBX_cursor * | mdbx_cursor_create (void *context) |
Create a cursor handle but not bind it to transaction nor DBI-handle. | |
LIBMDBX_API int | mdbx_cursor_set_userctx (MDBX_cursor *cursor, void *ctx) |
Set application information associated with the cursor. | |
LIBMDBX_API void * | mdbx_cursor_get_userctx (const MDBX_cursor *cursor) |
Get the application information associated with the MDBX_cursor. | |
LIBMDBX_API int | mdbx_cursor_bind (const MDBX_txn *txn, MDBX_cursor *cursor, MDBX_dbi dbi) |
Bind cursor to specified transaction and DBI-handle. | |
LIBMDBX_API int | mdbx_cursor_unbind (MDBX_cursor *cursor) |
Unbind cursor from a transaction. | |
LIBMDBX_API int | mdbx_cursor_reset (MDBX_cursor *cursor) |
Сбрасывает состояние курсора. | |
LIBMDBX_API int | mdbx_cursor_open (const MDBX_txn *txn, MDBX_dbi dbi, MDBX_cursor **cursor) |
Create a cursor handle for the specified transaction and DBI handle. | |
LIBMDBX_API void | mdbx_cursor_close (MDBX_cursor *cursor) |
Close a cursor handle. | |
LIBMDBX_API int | mdbx_txn_release_all_cursors (const MDBX_txn *txn, bool unbind) |
Unbind or closes all cursors of a given transaction. | |
LIBMDBX_API int | mdbx_cursor_renew (const MDBX_txn *txn, MDBX_cursor *cursor) |
Renew a cursor handle for use within the given transaction. | |
LIBMDBX_API MDBX_txn * | mdbx_cursor_txn (const MDBX_cursor *cursor) |
Return the cursor's transaction handle. | |
LIBMDBX_API MDBX_dbi | mdbx_cursor_dbi (const MDBX_cursor *cursor) |
Return the cursor's table handle. | |
LIBMDBX_API int | mdbx_cursor_copy (const MDBX_cursor *src, MDBX_cursor *dest) |
Copy cursor position and state. | |
LIBMDBX_API int | mdbx_cursor_compare (const MDBX_cursor *left, const MDBX_cursor *right, bool ignore_multival) |
Сравнивает позицию курсоров. | |
LIBMDBX_API int | mdbx_cursor_eof (const MDBX_cursor *cursor) |
Determines whether the cursor is pointed to a key-value pair or not, i.e. was not positioned or points to the end of data. | |
LIBMDBX_API int | mdbx_cursor_on_first (const MDBX_cursor *cursor) |
Determines whether the cursor is pointed to the first key-value pair or not. | |
LIBMDBX_API int | mdbx_cursor_on_first_dup (const MDBX_cursor *cursor) |
Определяет стоит ли курсор на первом или единственном мульти-значении соответствующем ключу. | |
LIBMDBX_API int | mdbx_cursor_on_last (const MDBX_cursor *cursor) |
Determines whether the cursor is pointed to the last key-value pair or not. | |
LIBMDBX_API int | mdbx_cursor_on_last_dup (const MDBX_cursor *cursor) |
Определяет стоит ли курсор на последнем или единственном мульти-значении соответствующем ключу. | |
typedef struct MDBX_cursor MDBX_cursor |
Opaque structure for navigating through a table.
enum MDBX_cursor_op |
Cursor operationsThis is the set of all operations for retrieving data using a cursor.
Enumerator | |
---|---|
MDBX_FIRST | Position at first key/data item |
MDBX_FIRST_DUP | MDBX_DUPSORT -only: Position at first data item of current key. |
MDBX_GET_BOTH | MDBX_DUPSORT -only: Position at key/data pair. |
MDBX_GET_BOTH_RANGE | MDBX_DUPSORT -only: Position at given key and at first data greater than or equal to specified data. |
MDBX_GET_CURRENT | Return key/data at current cursor position |
MDBX_GET_MULTIPLE | MDBX_DUPFIXED -only: Return up to a page of duplicate data items from current cursor position. Move cursor to prepare for MDBX_NEXT_MULTIPLE. |
MDBX_LAST | Position at last key/data item |
MDBX_LAST_DUP | MDBX_DUPSORT -only: Position at last data item of current key. |
MDBX_NEXT | Position at next data item |
MDBX_NEXT_DUP | MDBX_DUPSORT -only: Position at next data item of current key. |
MDBX_NEXT_MULTIPLE | MDBX_DUPFIXED -only: Return up to a page of duplicate data items from next cursor position. Move cursor to prepare for |
MDBX_NEXT_NODUP | Position at first data item of next key |
MDBX_PREV | Position at previous data item |
MDBX_PREV_DUP | MDBX_DUPSORT -only: Position at previous data item of current key. |
MDBX_PREV_NODUP | Position at last data item of previous key |
MDBX_SET | Position at specified key |
MDBX_SET_KEY | Position at specified key, return both key and data |
MDBX_SET_RANGE | Position at first key greater than or equal to specified key. |
MDBX_PREV_MULTIPLE | MDBX_DUPFIXED -only: Position at previous page and return up to a page of duplicate data items. |
MDBX_SET_LOWERBOUND | Positions cursor at first key-value pair greater than or equal to specified, return both key and data, and the return code depends on whether a exact match. For non DUPSORT-ed collections this work the same to MDBX_SET_RANGE, but returns MDBX_SUCCESS if key found exactly or MDBX_RESULT_TRUE if greater key was found. For DUPSORT-ed a data value is taken into account for duplicates, i.e. for a pairs/tuples of a key and an each data value of duplicates. Returns MDBX_SUCCESS if key-value pair found exactly or MDBX_RESULT_TRUE if the next pair was returned. |
MDBX_SET_UPPERBOUND | Positions cursor at first key-value pair greater than specified, return both key and data, and the return code depends on whether a upper-bound was found. For non DUPSORT-ed collections this work like MDBX_SET_RANGE, but returns MDBX_SUCCESS if the greater key was found or MDBX_NOTFOUND otherwise. For DUPSORT-ed a data value is taken into account for duplicates, i.e. for a pairs/tuples of a key and an each data value of duplicates. Returns MDBX_SUCCESS if the greater pair was returned or MDBX_NOTFOUND otherwise. |
MDBX_TO_KEY_LESSER_THAN | |
MDBX_TO_KEY_LESSER_OR_EQUAL | |
MDBX_TO_KEY_EQUAL | |
MDBX_TO_KEY_GREATER_OR_EQUAL | |
MDBX_TO_KEY_GREATER_THAN | |
MDBX_TO_EXACT_KEY_VALUE_LESSER_THAN | |
MDBX_TO_EXACT_KEY_VALUE_LESSER_OR_EQUAL | |
MDBX_TO_EXACT_KEY_VALUE_EQUAL | |
MDBX_TO_EXACT_KEY_VALUE_GREATER_OR_EQUAL | |
MDBX_TO_EXACT_KEY_VALUE_GREATER_THAN | |
MDBX_TO_PAIR_LESSER_THAN | |
MDBX_TO_PAIR_LESSER_OR_EQUAL | |
MDBX_TO_PAIR_EQUAL | |
MDBX_TO_PAIR_GREATER_OR_EQUAL | |
MDBX_TO_PAIR_GREATER_THAN |
LIBMDBX_API int mdbx_cursor_bind | ( | const MDBX_txn * | txn, |
MDBX_cursor * | cursor, | ||
MDBX_dbi | dbi ) |
Bind cursor to specified transaction and DBI-handle.
Using of the mdbx_cursor_bind()
is equivalent to calling mdbx_cursor_renew() but with specifying an arbitrary DBI-handle.
A cursor may be associated with a new transaction, and referencing a new or the same table handle as it was created with. This may be done whether the previous transaction is live or dead.
[in] | txn | A transaction handle returned by mdbx_txn_begin(). |
[in] | dbi | A table handle returned by mdbx_dbi_open(). |
[in] | cursor | A cursor handle returned by mdbx_cursor_create(). |
MDBX_THREAD_MISMATCH | Given transaction is not owned by current thread. |
MDBX_EINVAL | An invalid parameter was specified. |
LIBMDBX_API void mdbx_cursor_close | ( | MDBX_cursor * | cursor | ) |
Close a cursor handle.
The cursor handle will be freed and must not be used again after this call, but its transaction may still be live.
[in] | cursor | A cursor handle returned by mdbx_cursor_open() or mdbx_cursor_create(). |
LIBMDBX_API int mdbx_cursor_compare | ( | const MDBX_cursor * | left, |
const MDBX_cursor * | right, | ||
bool | ignore_multival ) |
Сравнивает позицию курсоров.
Функция предназначена для сравнения позиций двух инициализированных/установленных курсоров, связанных с одной транзакцией и одной таблицей (DBI-дескриптором). Если же курсоры связаны с разными транзакциями, либо с разными таблицами, либо один из них не инициализирован, то результат сравнения не определен (поведением может быть изменено в последующих версиях).
[in] | left | Левый курсор для сравнения позиций. |
[in] | right | Правый курсор для сравнения позиций. |
[in] | ignore_multival | Булевой флаг, влияющий на результат только при сравнении курсоров для таблиц с мульти-значениями, т.е. с флагом MDBX_DUPSORT. В случае true , позиции курсоров сравниваются только по ключам, без учета позиционирования среди мульти-значений. Иначе, в случае false , при совпадении позиций по ключам, сравниваются также позиции по мульти-значениям. |
Значение | со знаком в семантике оператора <=> (меньше нуля, ноль, либо больше нуля) как результат сравнения позиций курсоров. |
LIBMDBX_API int mdbx_cursor_copy | ( | const MDBX_cursor * | src, |
MDBX_cursor * | dest ) |
Copy cursor position and state.
[in] | src | A source cursor handle returned by mdbx_cursor_create() or mdbx_cursor_open(). |
[in,out] | dest | A destination cursor handle returned by mdbx_cursor_create() or mdbx_cursor_open(). |
LIBMDBX_API MDBX_cursor * mdbx_cursor_create | ( | void * | context | ) |
Create a cursor handle but not bind it to transaction nor DBI-handle.
A cursor cannot be used when its table handle is closed. Nor when its transaction has ended, except with mdbx_cursor_bind() and mdbx_cursor_renew(). Also it can be discarded with mdbx_cursor_close().
A cursor must be closed explicitly always, before or after its transaction ends. It can be reused with mdbx_cursor_bind() or mdbx_cursor_renew() before finally closing it.
[in] | context | A pointer to application context to be associated with created cursor and could be retrieved by mdbx_cursor_get_userctx() until cursor closed. |
LIBMDBX_API MDBX_dbi mdbx_cursor_dbi | ( | const MDBX_cursor * | cursor | ) |
Return the cursor's table handle.
[in] | cursor | A cursor handle returned by mdbx_cursor_open(). |
LIBMDBX_API int mdbx_cursor_eof | ( | const MDBX_cursor * | cursor | ) |
Determines whether the cursor is pointed to a key-value pair or not, i.e. was not positioned or points to the end of data.
[in] | cursor | A cursor handle returned by mdbx_cursor_open(). |
MDBX_RESULT_TRUE | No more data available or cursor not positioned |
MDBX_RESULT_FALSE | A data is available |
Otherwise | the error code |
LIBMDBX_API void * mdbx_cursor_get_userctx | ( | const MDBX_cursor * | cursor | ) |
Get the application information associated with the MDBX_cursor.
[in] | cursor | An cursor handle returned by mdbx_cursor_create() or mdbx_cursor_open(). |
context
parameter of mdbx_cursor_create()
or set by mdbx_cursor_set_userctx(), or NULL
if something wrong. LIBMDBX_API int mdbx_cursor_on_first | ( | const MDBX_cursor * | cursor | ) |
Determines whether the cursor is pointed to the first key-value pair or not.
[in] | cursor | A cursor handle returned by mdbx_cursor_open(). |
MDBX_RESULT_TRUE | Cursor positioned to the first key-value pair |
MDBX_RESULT_FALSE | Cursor NOT positioned to the first key-value pair |
Otherwise | the error code |
LIBMDBX_API int mdbx_cursor_on_first_dup | ( | const MDBX_cursor * | cursor | ) |
Определяет стоит ли курсор на первом или единственном мульти-значении соответствующем ключу.
[in] | cursor | Курсор созданный посредством mdbx_cursor_open(). |
MDBX_RESULT_TRUE | курсор установлен на первом или единственном мульти-значении соответствующем ключу. |
MDBX_RESULT_FALSE | курсор НЕ установлен на первом или единственном мульти-значении соответствующем ключу. |
ИНАЧЕ | код ошибки. |
LIBMDBX_API int mdbx_cursor_on_last | ( | const MDBX_cursor * | cursor | ) |
Determines whether the cursor is pointed to the last key-value pair or not.
[in] | cursor | A cursor handle returned by mdbx_cursor_open(). |
MDBX_RESULT_TRUE | Cursor positioned to the last key-value pair |
MDBX_RESULT_FALSE | Cursor NOT positioned to the last key-value pair |
Otherwise | the error code |
LIBMDBX_API int mdbx_cursor_on_last_dup | ( | const MDBX_cursor * | cursor | ) |
Определяет стоит ли курсор на последнем или единственном мульти-значении соответствующем ключу.
[in] | cursor | Курсор созданный посредством mdbx_cursor_open(). |
MDBX_RESULT_TRUE | курсор установлен на последнем или единственном мульти-значении соответствующем ключу. |
MDBX_RESULT_FALSE | курсор НЕ установлен на последнем или единственном мульти-значении соответствующем ключу. |
ИНАЧЕ | код ошибки. |
LIBMDBX_API int mdbx_cursor_open | ( | const MDBX_txn * | txn, |
MDBX_dbi | dbi, | ||
MDBX_cursor ** | cursor ) |
Create a cursor handle for the specified transaction and DBI handle.
Using of the mdbx_cursor_open()
is equivalent to calling mdbx_cursor_create() and then mdbx_cursor_bind() functions.
A cursor cannot be used when its table handle is closed. Nor when its transaction has ended, except with mdbx_cursor_bind() and mdbx_cursor_renew(). Also it can be discarded with mdbx_cursor_close().
A cursor must be closed explicitly always, before or after its transaction ends. It can be reused with mdbx_cursor_bind() or mdbx_cursor_renew() before finally closing it.
[in] | txn | A transaction handle returned by mdbx_txn_begin(). |
[in] | dbi | A table handle returned by mdbx_dbi_open(). |
[out] | cursor | Address where the new MDBX_cursor handle will be stored. |
MDBX_THREAD_MISMATCH | Given transaction is not owned by current thread. |
MDBX_EINVAL | An invalid parameter was specified. |
LIBMDBX_API int mdbx_cursor_renew | ( | const MDBX_txn * | txn, |
MDBX_cursor * | cursor ) |
Renew a cursor handle for use within the given transaction.
A cursor may be associated with a new transaction whether the previous transaction is running or finished.
Using of the mdbx_cursor_renew()
is equivalent to calling mdbx_cursor_bind() with the DBI-handle that previously the cursor was used with.
[in] | txn | A transaction handle returned by mdbx_txn_begin(). |
[in] | cursor | A cursor handle returned by mdbx_cursor_open(). |
MDBX_THREAD_MISMATCH | Given transaction is not owned by current thread. |
MDBX_EINVAL | An invalid parameter was specified. |
MDBX_BAD_DBI | The cursor was not bound to a DBI-handle or such a handle became invalid. |
LIBMDBX_API int mdbx_cursor_reset | ( | MDBX_cursor * | cursor | ) |
Сбрасывает состояние курсора.
В результате сброса курсор становится неустановленным и не позволяет выполнять операции относительного позиционирования, получения или изменения данных, до установки на позицию не зависящую от текущей. Что позволяет приложению пресекать дальнейшие операции без предварительного позиционирования курсора.
[in] | cursor | Указатель на курсор. |
LIBMDBX_API int mdbx_cursor_set_userctx | ( | MDBX_cursor * | cursor, |
void * | ctx ) |
Set application information associated with the cursor.
[in] | cursor | An cursor handle returned by mdbx_cursor_create() or mdbx_cursor_open(). |
[in] | ctx | An arbitrary pointer for whatever the application needs. |
LIBMDBX_API MDBX_txn * mdbx_cursor_txn | ( | const MDBX_cursor * | cursor | ) |
Return the cursor's transaction handle.
[in] | cursor | A cursor handle returned by mdbx_cursor_open(). |
LIBMDBX_API int mdbx_cursor_unbind | ( | MDBX_cursor * | cursor | ) |
Unbind cursor from a transaction.
Unbinded cursor is disassociated with any transactions but still holds the original DBI-handle internally. Thus it could be renewed with any running transaction or closed.
[in] | cursor | A cursor handle returned by mdbx_cursor_open(). |
LIBMDBX_API int mdbx_txn_release_all_cursors | ( | const MDBX_txn * | txn, |
bool | unbind ) |
Unbind or closes all cursors of a given transaction.
Unbinds either closes all cursors associated (opened or renewed) with a given transaction in a bulk with minimal overhead.
[in] | txn | A transaction handle returned by mdbx_txn_begin(). |
[in] | unbind | If non-zero, unbinds cursors and leaves ones reusable. Otherwise close and dispose cursors. |
MDBX_THREAD_MISMATCH | Given transaction is not owned by current thread. |
MDBX_BAD_TXN | Given transaction is invalid or has a child/nested transaction transaction. |