Salvador Ortiz <[email protected]> writes:
> I want to avoid as much as possible the need to duplicate LMDB's state in 
> perl,
> in particular dbi's flags, so I need a method to obtain the MDB_env from a
> MDB_txn, but the required API is missing.
> 
> In the same spirit of mdb_cursor_txn or mdb_cursor_dbi I propose adding
> mdb_txn_env.

Maybe there should be an mdb_txn_info() function instead:

typedef struct MDB_txninfo {
        int     mt_lib_version; /* library version, set by liblmdb */
        MDB_env *mt_env;
} MDB_txninfo;

#define mdb_txn_info(txn, ti) mdb_txn_xinfo(txn, ti, MDB_VERSION_FULL)
int mdb_txn_xinfo(MDB_txn *txn, MDB_txninfo *ti, int api_version);

The version parameter is so we can extend MDB_txninfo later, and
liblmdb will know how much of MDB_txninfo it can fill in.  The
caller can zero out the txninfo before the call, so he'll be
prepared if an older liblmdb does not support and set all fields.

-- 
Hallvard


Reply via email to