.TH "lmdb.h" 3 "Mon Jul 16 2018" "LMDB" \" -*- nroff -*- .ad l .nh .SH NAME lmdb.h \- Lightning memory-mapped database library\&. .SH SYNOPSIS .br .PP \fC#include \fP .br .SS "Data Structures" .in +1c .ti -1c .RI "struct \fBMDB_val\fP" .br .RI "Generic structure used for passing keys and data in and out of the database\&. " .ti -1c .RI "struct \fBMDB_stat\fP" .br .RI "Statistics for a database in the environment\&. " .ti -1c .RI "struct \fBMDB_envinfo\fP" .br .RI "Information about the environment\&. " .in -1c .SS "Macros" .in +1c .ti -1c .RI "#define \fBMDB_VERSION_MAJOR\fP 0" .br .ti -1c .RI "#define \fBMDB_VERSION_MINOR\fP 9" .br .ti -1c .RI "#define \fBMDB_VERSION_PATCH\fP 22" .br .ti -1c .RI "#define \fBMDB_VERINT\fP(a, b, c) (((a) << 24) | ((b) << 16) | (c))" .br .ti -1c .RI "#define \fBMDB_VERSION_FULL\fP \fBMDB_VERINT\fP(\fBMDB_VERSION_MAJOR\fP,\fBMDB_VERSION_MINOR\fP,\fBMDB_VERSION_PATCH\fP)" .br .ti -1c .RI "#define \fBMDB_VERSION_DATE\fP 'March 21, 2018'" .br .ti -1c .RI "#define \fBMDB_VERSTR\fP(a, b, c, d) 'LMDB ' #a '\&.' #b '\&.' #c ': (' d ')'" .br .ti -1c .RI "#define \fBMDB_VERFOO\fP(a, b, c, d) \fBMDB_VERSTR\fP(a,b,c,d)" .br .ti -1c .RI "#define \fBMDB_VERSION_STRING\fP \fBMDB_VERFOO\fP(\fBMDB_VERSION_MAJOR\fP,\fBMDB_VERSION_MINOR\fP,\fBMDB_VERSION_PATCH\fP,\fBMDB_VERSION_DATE\fP)" .br .ti -1c .RI "#define \fBMDB_FIXEDMAP\fP 0x01" .br .ti -1c .RI "#define \fBMDB_NOSUBDIR\fP 0x4000" .br .ti -1c .RI "#define \fBMDB_NOSYNC\fP 0x10000" .br .ti -1c .RI "#define \fBMDB_RDONLY\fP 0x20000" .br .ti -1c .RI "#define \fBMDB_NOMETASYNC\fP 0x40000" .br .ti -1c .RI "#define \fBMDB_WRITEMAP\fP 0x80000" .br .ti -1c .RI "#define \fBMDB_MAPASYNC\fP 0x100000" .br .ti -1c .RI "#define \fBMDB_NOTLS\fP 0x200000" .br .ti -1c .RI "#define \fBMDB_NOLOCK\fP 0x400000" .br .ti -1c .RI "#define \fBMDB_NORDAHEAD\fP 0x800000" .br .ti -1c .RI "#define \fBMDB_NOMEMINIT\fP 0x1000000" .br .ti -1c .RI "#define \fBMDB_REVERSEKEY\fP 0x02" .br .ti -1c .RI "#define \fBMDB_DUPSORT\fP 0x04" .br .ti -1c .RI "#define \fBMDB_INTEGERKEY\fP 0x08" .br .ti -1c .RI "#define \fBMDB_DUPFIXED\fP 0x10" .br .ti -1c .RI "#define \fBMDB_INTEGERDUP\fP 0x20" .br .ti -1c .RI "#define \fBMDB_REVERSEDUP\fP 0x40" .br .ti -1c .RI "#define \fBMDB_CREATE\fP 0x40000" .br .ti -1c .RI "#define \fBMDB_NOOVERWRITE\fP 0x10" .br .ti -1c .RI "#define \fBMDB_NODUPDATA\fP 0x20" .br .ti -1c .RI "#define \fBMDB_CURRENT\fP 0x40" .br .ti -1c .RI "#define \fBMDB_RESERVE\fP 0x10000" .br .ti -1c .RI "#define \fBMDB_APPEND\fP 0x20000" .br .ti -1c .RI "#define \fBMDB_APPENDDUP\fP 0x40000" .br .ti -1c .RI "#define \fBMDB_MULTIPLE\fP 0x80000" .br .ti -1c .RI "#define \fBMDB_CP_COMPACT\fP 0x01" .br .ti -1c .RI "#define \fBMDB_SUCCESS\fP 0" .br .ti -1c .RI "#define \fBMDB_KEYEXIST\fP (\-30799)" .br .ti -1c .RI "#define \fBMDB_NOTFOUND\fP (\-30798)" .br .ti -1c .RI "#define \fBMDB_PAGE_NOTFOUND\fP (\-30797)" .br .ti -1c .RI "#define \fBMDB_CORRUPTED\fP (\-30796)" .br .ti -1c .RI "#define \fBMDB_PANIC\fP (\-30795)" .br .ti -1c .RI "#define \fBMDB_VERSION_MISMATCH\fP (\-30794)" .br .ti -1c .RI "#define \fBMDB_INVALID\fP (\-30793)" .br .ti -1c .RI "#define \fBMDB_MAP_FULL\fP (\-30792)" .br .ti -1c .RI "#define \fBMDB_DBS_FULL\fP (\-30791)" .br .ti -1c .RI "#define \fBMDB_READERS_FULL\fP (\-30790)" .br .ti -1c .RI "#define \fBMDB_TLS_FULL\fP (\-30789)" .br .ti -1c .RI "#define \fBMDB_TXN_FULL\fP (\-30788)" .br .ti -1c .RI "#define \fBMDB_CURSOR_FULL\fP (\-30787)" .br .ti -1c .RI "#define \fBMDB_PAGE_FULL\fP (\-30786)" .br .ti -1c .RI "#define \fBMDB_MAP_RESIZED\fP (\-30785)" .br .ti -1c .RI "#define \fBMDB_INCOMPATIBLE\fP (\-30784)" .br .ti -1c .RI "#define \fBMDB_BAD_RSLOT\fP (\-30783)" .br .ti -1c .RI "#define \fBMDB_BAD_TXN\fP (\-30782)" .br .ti -1c .RI "#define \fBMDB_BAD_VALSIZE\fP (\-30781)" .br .ti -1c .RI "#define \fBMDB_BAD_DBI\fP (\-30780)" .br .ti -1c .RI "#define \fBMDB_LAST_ERRCODE\fP \fBMDB_BAD_DBI\fP" .br .ti -1c .RI "#define \fBmdb_open\fP(txn, name, flags, dbi) \fBmdb_dbi_open\fP(txn,name,flags,dbi)" .br .ti -1c .RI "#define \fBmdb_close\fP(env, dbi) \fBmdb_dbi_close\fP(env,dbi)" .br .in -1c .SS "Typedefs" .in +1c .ti -1c .RI "typedef mode_t \fBmdb_mode_t\fP" .br .ti -1c .RI "typedef int \fBmdb_filehandle_t\fP" .br .ti -1c .RI "typedef unsigned int \fBMDB_dbi\fP" .br .RI "A handle for an individual database in the DB environment\&. " .ti -1c .RI "typedef int() \fBMDB_cmp_func\fP(const \fBMDB_val\fP *a, const \fBMDB_val\fP *b)" .br .RI "A callback function used to compare two keys in a database\&. " .ti -1c .RI "typedef void() \fBMDB_rel_func\fP(\fBMDB_val\fP *item, void *oldptr, void *newptr, void *relctx)" .br .RI "A callback function used to relocate a position-dependent data item in a fixed-address database\&. " .ti -1c .RI "typedef void \fBMDB_assert_func\fP(\fBMDB_env\fP *env, const char *msg)" .br .RI "A callback function for most LMDB assert() failures, called before printing the message and aborting\&. " .ti -1c .RI "typedef int() \fBMDB_msg_func\fP(const char *msg, void *ctx)" .br .RI "A callback function used to print a message from the library\&. " .in -1c .SS "Enumerations" .in +1c .ti -1c .RI "enum \fBMDB_cursor_op\fP { \fBMDB_FIRST\fP, \fBMDB_FIRST_DUP\fP, \fBMDB_GET_BOTH\fP, \fBMDB_GET_BOTH_RANGE\fP, \fBMDB_GET_CURRENT\fP, \fBMDB_GET_MULTIPLE\fP, \fBMDB_LAST\fP, \fBMDB_LAST_DUP\fP, \fBMDB_NEXT\fP, \fBMDB_NEXT_DUP\fP, \fBMDB_NEXT_MULTIPLE\fP, \fBMDB_NEXT_NODUP\fP, \fBMDB_PREV\fP, \fBMDB_PREV_DUP\fP, \fBMDB_PREV_NODUP\fP, \fBMDB_SET\fP, \fBMDB_SET_KEY\fP, \fBMDB_SET_RANGE\fP, \fBMDB_PREV_MULTIPLE\fP } .RI "Cursor Get operations\&. "" .br .in -1c .SS "Functions" .in +1c .ti -1c .RI "char * \fBmdb_version\fP (int *major, int *minor, int *patch)" .br .RI "Return the LMDB library version information\&. " .ti -1c .RI "char * \fBmdb_strerror\fP (int err)" .br .RI "Return a string describing a given error code\&. " .ti -1c .RI "int \fBmdb_env_create\fP (\fBMDB_env\fP **env)" .br .RI "Create an LMDB environment handle\&. " .ti -1c .RI "int \fBmdb_env_open\fP (\fBMDB_env\fP *env, const char *path, unsigned int flags, \fBmdb_mode_t\fP mode)" .br .RI "Open an environment handle\&. " .ti -1c .RI "int \fBmdb_env_copy\fP (\fBMDB_env\fP *env, const char *path)" .br .RI "Copy an LMDB environment to the specified path\&. " .ti -1c .RI "int \fBmdb_env_copyfd\fP (\fBMDB_env\fP *env, \fBmdb_filehandle_t\fP fd)" .br .RI "Copy an LMDB environment to the specified file descriptor\&. " .ti -1c .RI "int \fBmdb_env_copy2\fP (\fBMDB_env\fP *env, const char *path, unsigned int flags)" .br .RI "Copy an LMDB environment to the specified path, with options\&. " .ti -1c .RI "int \fBmdb_env_copyfd2\fP (\fBMDB_env\fP *env, \fBmdb_filehandle_t\fP fd, unsigned int flags)" .br .RI "Copy an LMDB environment to the specified file descriptor, with options\&. " .ti -1c .RI "int \fBmdb_env_stat\fP (\fBMDB_env\fP *env, \fBMDB_stat\fP *stat)" .br .RI "Return statistics about the LMDB environment\&. " .ti -1c .RI "int \fBmdb_env_info\fP (\fBMDB_env\fP *env, \fBMDB_envinfo\fP *stat)" .br .RI "Return information about the LMDB environment\&. " .ti -1c .RI "int \fBmdb_env_sync\fP (\fBMDB_env\fP *env, int force)" .br .RI "Flush the data buffers to disk\&. " .ti -1c .RI "void \fBmdb_env_close\fP (\fBMDB_env\fP *env)" .br .RI "Close the environment and release the memory map\&. " .ti -1c .RI "int \fBmdb_env_set_flags\fP (\fBMDB_env\fP *env, unsigned int flags, int onoff)" .br .RI "Set environment flags\&. " .ti -1c .RI "int \fBmdb_env_get_flags\fP (\fBMDB_env\fP *env, unsigned int *flags)" .br .RI "Get environment flags\&. " .ti -1c .RI "int \fBmdb_env_get_path\fP (\fBMDB_env\fP *env, const char **path)" .br .RI "Return the path that was used in \fBmdb_env_open()\fP\&. " .ti -1c .RI "int \fBmdb_env_get_fd\fP (\fBMDB_env\fP *env, \fBmdb_filehandle_t\fP *fd)" .br .RI "Return the filedescriptor for the given environment\&. " .ti -1c .RI "int \fBmdb_env_set_mapsize\fP (\fBMDB_env\fP *env, size_t size)" .br .RI "Set the size of the memory map to use for this environment\&. " .ti -1c .RI "int \fBmdb_env_set_maxreaders\fP (\fBMDB_env\fP *env, unsigned int readers)" .br .RI "Set the maximum number of threads/reader slots for the environment\&. " .ti -1c .RI "int \fBmdb_env_get_maxreaders\fP (\fBMDB_env\fP *env, unsigned int *readers)" .br .RI "Get the maximum number of threads/reader slots for the environment\&. " .ti -1c .RI "int \fBmdb_env_set_maxdbs\fP (\fBMDB_env\fP *env, \fBMDB_dbi\fP dbs)" .br .RI "Set the maximum number of named databases for the environment\&. " .ti -1c .RI "int \fBmdb_env_get_maxkeysize\fP (\fBMDB_env\fP *env)" .br .RI "Get the maximum size of keys and \fBMDB_DUPSORT\fP data we can write\&. " .ti -1c .RI "int \fBmdb_env_set_userctx\fP (\fBMDB_env\fP *env, void *ctx)" .br .RI "Set application information associated with the \fBMDB_env\fP\&. " .ti -1c .RI "void * \fBmdb_env_get_userctx\fP (\fBMDB_env\fP *env)" .br .RI "Get the application information associated with the \fBMDB_env\fP\&. " .ti -1c .RI "int \fBmdb_env_set_assert\fP (\fBMDB_env\fP *env, \fBMDB_assert_func\fP *func)" .br .ti -1c .RI "int \fBmdb_txn_begin\fP (\fBMDB_env\fP *env, \fBMDB_txn\fP *parent, unsigned int flags, \fBMDB_txn\fP **txn)" .br .RI "Create a transaction for use with the environment\&. " .ti -1c .RI "\fBMDB_env\fP * \fBmdb_txn_env\fP (\fBMDB_txn\fP *txn)" .br .RI "Returns the transaction's \fBMDB_env\fP\&. " .ti -1c .RI "size_t \fBmdb_txn_id\fP (\fBMDB_txn\fP *txn)" .br .RI "Return the transaction's ID\&. " .ti -1c .RI "int \fBmdb_txn_commit\fP (\fBMDB_txn\fP *txn)" .br .RI "Commit all the operations of a transaction into the database\&. " .ti -1c .RI "void \fBmdb_txn_abort\fP (\fBMDB_txn\fP *txn)" .br .RI "Abandon all the operations of the transaction instead of saving them\&. " .ti -1c .RI "void \fBmdb_txn_reset\fP (\fBMDB_txn\fP *txn)" .br .RI "Reset a read-only transaction\&. " .ti -1c .RI "int \fBmdb_txn_renew\fP (\fBMDB_txn\fP *txn)" .br .RI "Renew a read-only transaction\&. " .ti -1c .RI "int \fBmdb_dbi_open\fP (\fBMDB_txn\fP *txn, const char *name, unsigned int flags, \fBMDB_dbi\fP *dbi)" .br .RI "Open a database in the environment\&. " .ti -1c .RI "int \fBmdb_stat\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, \fBMDB_stat\fP *stat)" .br .RI "Retrieve statistics for a database\&. " .ti -1c .RI "int \fBmdb_dbi_flags\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, unsigned int *flags)" .br .RI "Retrieve the DB flags for a database handle\&. " .ti -1c .RI "void \fBmdb_dbi_close\fP (\fBMDB_env\fP *env, \fBMDB_dbi\fP dbi)" .br .RI "Close a database handle\&. Normally unnecessary\&. Use with care: " .ti -1c .RI "int \fBmdb_drop\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, int del)" .br .RI "Empty or delete+close a database\&. " .ti -1c .RI "int \fBmdb_set_compare\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, \fBMDB_cmp_func\fP *cmp)" .br .RI "Set a custom key comparison function for a database\&. " .ti -1c .RI "int \fBmdb_set_dupsort\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, \fBMDB_cmp_func\fP *cmp)" .br .RI "Set a custom data comparison function for a \fBMDB_DUPSORT\fP database\&. " .ti -1c .RI "int \fBmdb_set_relfunc\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, \fBMDB_rel_func\fP *rel)" .br .RI "Set a relocation function for a \fBMDB_FIXEDMAP\fP database\&. " .ti -1c .RI "int \fBmdb_set_relctx\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, void *ctx)" .br .RI "Set a context pointer for a \fBMDB_FIXEDMAP\fP database's relocation function\&. " .ti -1c .RI "int \fBmdb_get\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, \fBMDB_val\fP *key, \fBMDB_val\fP *data)" .br .RI "Get items from a database\&. " .ti -1c .RI "int \fBmdb_put\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, \fBMDB_val\fP *key, \fBMDB_val\fP *data, unsigned int flags)" .br .RI "Store items into a database\&. " .ti -1c .RI "int \fBmdb_del\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, \fBMDB_val\fP *key, \fBMDB_val\fP *data)" .br .RI "Delete items from a database\&. " .ti -1c .RI "int \fBmdb_cursor_open\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, \fBMDB_cursor\fP **cursor)" .br .RI "Create a cursor handle\&. " .ti -1c .RI "void \fBmdb_cursor_close\fP (\fBMDB_cursor\fP *cursor)" .br .RI "Close a cursor handle\&. " .ti -1c .RI "int \fBmdb_cursor_renew\fP (\fBMDB_txn\fP *txn, \fBMDB_cursor\fP *cursor)" .br .RI "Renew a cursor handle\&. " .ti -1c .RI "\fBMDB_txn\fP * \fBmdb_cursor_txn\fP (\fBMDB_cursor\fP *cursor)" .br .RI "Return the cursor's transaction handle\&. " .ti -1c .RI "\fBMDB_dbi\fP \fBmdb_cursor_dbi\fP (\fBMDB_cursor\fP *cursor)" .br .RI "Return the cursor's database handle\&. " .ti -1c .RI "int \fBmdb_cursor_get\fP (\fBMDB_cursor\fP *cursor, \fBMDB_val\fP *key, \fBMDB_val\fP *data, \fBMDB_cursor_op\fP op)" .br .RI "Retrieve by cursor\&. " .ti -1c .RI "int \fBmdb_cursor_put\fP (\fBMDB_cursor\fP *cursor, \fBMDB_val\fP *key, \fBMDB_val\fP *data, unsigned int flags)" .br .RI "Store by cursor\&. " .ti -1c .RI "int \fBmdb_cursor_del\fP (\fBMDB_cursor\fP *cursor, unsigned int flags)" .br .RI "Delete current key/data pair\&. " .ti -1c .RI "int \fBmdb_cursor_count\fP (\fBMDB_cursor\fP *cursor, size_t *countp)" .br .RI "Return count of duplicates for current key\&. " .ti -1c .RI "int \fBmdb_cmp\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, const \fBMDB_val\fP *a, const \fBMDB_val\fP *b)" .br .RI "Compare two data items according to a particular database\&. " .ti -1c .RI "int \fBmdb_dcmp\fP (\fBMDB_txn\fP *txn, \fBMDB_dbi\fP dbi, const \fBMDB_val\fP *a, const \fBMDB_val\fP *b)" .br .RI "Compare two data items according to a particular database\&. " .ti -1c .RI "int \fBmdb_reader_list\fP (\fBMDB_env\fP *env, \fBMDB_msg_func\fP *func, void *ctx)" .br .RI "Dump the entries in the reader lock table\&. " .ti -1c .RI "int \fBmdb_reader_check\fP (\fBMDB_env\fP *env, int *dead)" .br .RI "Check for stale entries in the reader lock table\&. " .in -1c .SH "Detailed Description" .PP Lightning memory-mapped database library\&. .SH "Typedef Documentation" .PP .SS "typedef mode_t \fBmdb_mode_t\fP" Unix permissions for creating files, or dummy definition for Windows .SS "typedef int \fBmdb_filehandle_t\fP" An abstraction for a file handle\&. On POSIX systems file handles are small integers\&. On Windows they're opaque pointers\&. .SH "Author" .PP Generated automatically by Doxygen for LMDB from the source code\&.