X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibmdb%2Fmdb.h;h=9075c41e0c6d929f0556fdca2aed1d9df7e348dd;hb=68143e4532ba3b3dccdb4e80665140542170d6d6;hp=14105b26e464429ad9a8fdcf18a00532ff242bdf;hpb=b9d13a29e6c4c2742277c82bdc646c32d364a619;p=openldap
diff --git a/libraries/libmdb/mdb.h b/libraries/libmdb/mdb.h
index 14105b26e4..9075c41e0c 100644
--- a/libraries/libmdb/mdb.h
+++ b/libraries/libmdb/mdb.h
@@ -149,6 +149,8 @@ typedef void (MDB_rel_func)(MDB_val *item, void *oldptr, void *newptr, void *rel
*/
/** mmap at a fixed address */
#define MDB_FIXEDMAP 0x01
+ /** no environment directory */
+#define MDB_NOSUBDIR 0x02
/** don't fsync after commit */
#define MDB_NOSYNC 0x10000
/** read only */
@@ -187,6 +189,14 @@ typedef void (MDB_rel_func)(MDB_val *item, void *oldptr, void *newptr, void *rel
#define MDB_NODUPDATA 0x20
/** For mdb_cursor_put: overwrite the current key/data pair */
#define MDB_CURRENT 0x40
+/** For put: Just reserve space for data, don't copy it. Return a
+ * pointer to the reserved space.
+ */
+#define MDB_RESERVE 0x10000
+/** Data is being appended, don't split full pages. */
+#define MDB_APPEND 0x20000
+/** Store multiple data items in one call. */
+#define MDB_MULTIPLE 0x40000
/* @} */
/** @brief Cursor Get operations.
@@ -305,6 +315,12 @@ int mdb_env_create(MDB_env **env);
* across multiple invocations. This option may not always work, depending on
* how the operating system has allocated memory to shared libraries and other uses.
* The feature is highly experimental.
+ *
#MDB_NOSUBDIR
+ * By default, MDB 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.
* #MDB_NOSYNC
* Don't perform a synchronous flush after committing a transaction. This means
* transactions will exhibit the ACI (atomicity, consistency, and isolation)
@@ -505,9 +521,8 @@ int mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **
/** @brief Commit all the operations of a transaction into the database.
*
- * All cursors opened within the transaction must be closed before the transaction
- * is committed.
- * The transaction handle will be freed and must not be used again after this call.
+ * All cursors opened within the transaction will be closed by this call. The cursors
+ * and transaction handle will be freed and must not be used again after this call.
* @param[in] txn A transaction handle returned by #mdb_txn_begin()
* @return A non-zero error value on failure and 0 on success. Some possible
* errors are:
@@ -521,9 +536,8 @@ int mdb_txn_commit(MDB_txn *txn);
/** @brief Abandon all the operations of the transaction instead of saving them.
*
- * All cursors opened within the transaction must be closed before the transaction
- * is aborted.
- * The transaction handle will be freed and must not be used again after this call.
+ * All cursors opened within the transaction will be closed by this call. The cursors
+ * and transaction handle will be freed and must not be used again after this call.
* @param[in] txn A transaction handle returned by #mdb_txn_begin()
*/
void mdb_txn_abort(MDB_txn *txn);
@@ -836,6 +850,18 @@ int mdb_cursor_open(MDB_txn *txn, MDB_dbi dbi, MDB_cursor **cursor);
*/
void mdb_cursor_close(MDB_cursor *cursor);
+ /** @brief Return the cursor's transaction handle.
+ *
+ * @param[in] cursor A cursor handle returned by #mdb_cursor_open()
+ */
+MDB_txn *mdb_cursor_txn(MDB_cursor *cursor);
+
+ /** @brief Return the cursor's database handle.
+ *
+ * @param[in] cursor A cursor handle returned by #mdb_cursor_open()
+ */
+MDB_dbi mdb_cursor_dbi(MDB_cursor *cursor);
+
/** @brief Retrieve by cursor.
*
* This function retrieves key/data pairs from the database. The address and length