Salvador Ortiz sog@msg.com.mx 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.