/** @file lmdb.h
* @brief Lightning memory-mapped database library
*
- * @mainpage Lightning Memory-Mapped Database Manager (MDB)
+ * @mainpage Lightning Memory-Mapped Database Manager (LMDB)
*
* @section intro_sec Introduction
- * MDB is a Btree-based database management library modeled loosely on the
+ * LMDB is a Btree-based database management library modeled loosely on the
* BerkeleyDB API, but much simplified. The entire database is exposed
* in a memory map, and all data fetches return data directly
* from the mapped memory, so no malloc's or memcpy's occur during
* readers, and readers don't block writers.
*
* Unlike other well-known database mechanisms which use either write-ahead
- * transaction logs or append-only data writes, MDB requires no maintenance
+ * transaction logs or append-only data writes, LMDB requires no maintenance
* during operation. Both write-ahead loggers and append-only databases
* require periodic checkpointing and/or compaction of their log or database
- * files otherwise they grow without bound. MDB tracks free pages within
+ * files otherwise they grow without bound. LMDB tracks free pages within
* the database and re-uses them for new write operations, so the database
* size does not grow without bound in normal use.
*
* stale locks can block further operation.
*
* Fix: Check for stale readers periodically, using the
- * #mdb_reader_check function or the mdb_stat tool. Or just
+ * #mdb_reader_check function or the \ref mdb_stat_1 "mdb_stat" tool. Or just
* make all programs using the database close it; the lockfile
* is always reset on first open of the environment.
*
*
* - Use an MDB_env* in the process which opened it, without fork()ing.
*
- * - Do not have open an MDB database twice in the same process at
+ * - Do not have open an LMDB database twice in the same process at
* the same time. Not even from a plain open() call - close()ing it
* breaks flock() advisory locking.
*
* - If you do that anyway, do a periodic check for stale readers. Or
* close the environment once in a while, so the lockfile can get reset.
*
- * - Do not use MDB databases on remote filesystems, even between
+ * - Do not use LMDB databases on remote filesystems, even between
* processes on the same host. This breaks flock() on some OSes,
* possibly memory map sync, and certainly sync between programs
* on different hosts.
typedef int mdb_filehandle_t;
#endif
-/** @defgroup mdb MDB API
+/** @defgroup mdb LMDB API
* @{
* @brief OpenLDAP Lightning Memory-Mapped Database Manager
*/
#define MDB_PANIC (-30795)
/** Environment version mismatch */
#define MDB_VERSION_MISMATCH (-30794)
- /** File is not a valid MDB file */
+ /** File is not a valid LMDB file */
#define MDB_INVALID (-30793)
/** Environment mapsize reached */
#define MDB_MAP_FULL (-30792)
unsigned int me_numreaders; /**< max reader slots used in the environment */
} MDB_envinfo;
- /** @brief Return the mdb library version information.
+ /** @brief Return the LMDB library version information.
*
* @param[out] major if non-NULL, the library major version number is copied here
* @param[out] minor if non-NULL, the library minor version number is copied here
* This function is a superset of the ANSI C X3.159-1989 (ANSI C) strerror(3)
* function. If the error code is greater than or equal to 0, then the string
* returned by the system function strerror(3) is returned. If the error code
- * is less than 0, an error string corresponding to the MDB library error is
- * returned. See @ref errors for a list of MDB-specific error codes.
+ * is less than 0, an error string corresponding to the LMDB library error is
+ * returned. See @ref errors for a list of LMDB-specific error codes.
* @param[in] err The error code
* @retval "error message" The description of the error
*/
char *mdb_strerror(int err);
- /** @brief Create an MDB environment handle.
+ /** @brief Create an LMDB environment handle.
*
* This function allocates memory for a #MDB_env structure. To release
* the allocated memory and discard the handle, call #mdb_env_close().
* how the operating system has allocated memory to shared libraries and other uses.
* The feature is highly experimental.
* <li>#MDB_NOSUBDIR
- * By default, MDB creates its environment in a directory whose
+ * By default, LMDB creates its environment in a directory whose
* pathname is given in \b path, and creates its data and lock files
* under that directory. With this option, \b path is used as-is for
* the database main data file. The database lock file is the \b path
* with "-lock" appended.
* <li>#MDB_RDONLY
* Open the environment in read-only mode. No write operations will be
- * allowed. MDB will still modify the lock file - except on read-only
- * filesystems, where MDB does not use locks.
+ * allowed. LMDB will still modify the lock file - except on read-only
+ * filesystems, where LMDB does not use locks.
* <li>#MDB_WRITEMAP
* Use a writeable memory map unless MDB_RDONLY is set. This is faster
* and uses fewer mallocs, but loses protection from application bugs
* the user synchronizes its use. Applications that multiplex many
* user threads over individual OS threads need this option. Such an
* application must also serialize the write transactions in an OS
- * thread, since MDB's write locking is unaware of the user threads.
+ * thread, since LMDB's write locking is unaware of the user threads.
* <li>#MDB_NOLOCK
* Don't do any locking. If concurrent access is anticipated, the
* caller must manage all concurrency itself. For proper operation
* @return A non-zero error value on failure and 0 on success. Some possible
* errors are:
* <ul>
- * <li>#MDB_VERSION_MISMATCH - the version of the MDB library doesn't match the
+ * <li>#MDB_VERSION_MISMATCH - the version of the LMDB library doesn't match the
* version that created the database environment.
* <li>#MDB_INVALID - the environment file headers are corrupted.
* <li>ENOENT - the directory specified by the path parameter doesn't exist.
*/
int mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode);
- /** @brief Copy an MDB environment to the specified path.
+ /** @brief Copy an LMDB environment to the specified path.
*
* This function may be used to make a backup of an existing environment.
* No lockfile is created, since it gets recreated at need.
*/
int mdb_env_copy(MDB_env *env, const char *path);
- /** @brief Copy an MDB environment to the specified file descriptor.
+ /** @brief Copy an LMDB environment to the specified file descriptor.
*
* This function may be used to make a backup of an existing environment.
* No lockfile is created, since it gets recreated at need.
*/
int mdb_env_copyfd(MDB_env *env, mdb_filehandle_t fd);
- /** @brief Return statistics about the MDB environment.
+ /** @brief Return statistics about the LMDB environment.
*
* @param[in] env An environment handle returned by #mdb_env_create()
* @param[out] stat The address of an #MDB_stat structure
*/
int mdb_env_stat(MDB_env *env, MDB_stat *stat);
- /** @brief Return information about the MDB environment.
+ /** @brief Return information about the LMDB environment.
*
* @param[in] env An environment handle returned by #mdb_env_create()
* @param[out] stat The address of an #MDB_envinfo structure
/** @brief Flush the data buffers to disk.
*
* Data is always written to disk when #mdb_txn_commit() is called,
- * but the operating system may keep it buffered. MDB always flushes
+ * but the operating system may keep it buffered. LMDB always flushes
* the OS buffers upon commit as well, unless the environment was
* opened with #MDB_NOSYNC or in part #MDB_NOMETASYNC.
* @param[in] env An environment handle returned by #mdb_env_create()
*/
void *mdb_env_get_userctx(MDB_env *env);
- /** @brief A callback function for most MDB assert() failures,
+ /** @brief A callback function for most LMDB assert() failures,
* called before printing the message and aborting.
*
* @param[in] env An environment handle returned by #mdb_env_create().
* reserved space, which the caller can fill in later - before
* the next update operation or the transaction ends. This saves
* an extra memcpy if the data is being generated later.
- * MDB does nothing else with this memory, the caller is expected
+ * LMDB does nothing else with this memory, the caller is expected
* to modify all of the space requested.
* <li>#MDB_APPEND - append the given key/data pair to the end of the
* database. No key comparisons are performed. This option allows
#ifdef __cplusplus
}
#endif
+/** @page tools LMDB Command Line Tools
+ The following describes the command line tools that are available for LMDB.
+ \li \ref mdb_copy_1
+ \li \ref mdb_dump_1
+ \li \ref mdb_load_1
+ \li \ref mdb_stat_1
+*/
+
#endif /* _LMDB_H_ */