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