]> git.sur5r.net Git - openldap/blobdiff - libraries/liblmdb/lmdb.h
ITS#7994 Access to current transaction ID.
[openldap] / libraries / liblmdb / lmdb.h
index 4236218bb50cc3beff4516e0004d3584cac365c4..803b28618b123c93882167b0a8b8c9f177094fdc 100644 (file)
@@ -226,6 +226,9 @@ typedef struct MDB_env MDB_env;
  */
 typedef struct MDB_txn MDB_txn;
 
+/** @brief Unique identifier for an active or recent transaction. */
+typedef size_t MDB_txnid_t;
+
 /** @brief A handle for an individual database in the DB environment. */
 typedef unsigned int   MDB_dbi;
 
@@ -448,7 +451,7 @@ typedef struct MDB_envinfo {
        void    *me_mapaddr;                    /**< Address of map, if fixed */
        size_t  me_mapsize;                             /**< Size of the data memory map */
        size_t  me_last_pgno;                   /**< ID of the last used page */
-       size_t  me_last_txnid;                  /**< ID of the last committed transaction */
+       MDB_txnid_t  me_last_txnid;             /**< ID of the last committed transaction */
        unsigned int me_maxreaders;             /**< max reader slots in the environment */
        unsigned int me_numreaders;             /**< max reader slots used in the environment */
 } MDB_envinfo;
@@ -950,6 +953,19 @@ int  mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **
         */
 MDB_env *mdb_txn_env(MDB_txn *txn);
 
+       /** @brief Return the transaction's #MDB_txnid_t
+        *
+        * This returns the identifier associated with this transaction. For a
+        * read-only transaction, this corresponds to the snapshot being read;
+        * concurrent readers will frequently have the same transaction ID. For
+        * a write transaction, this is always the snapshot read plus one. When
+        * a write transaction aborts, the next transaction ID will be reused.
+        *
+        * @param[in] txn A transaction handle returned by #mdb_txn_begin()
+        * @return A transaction ID, valid if input is an active transaction.
+        */
+MDB_txnid_t mdb_txn_id(MDB_txn *txn);
+
        /** @brief Commit all the operations of a transaction into the database.
         *
         * The transaction handle is freed. It and its cursors must not be used