Hi there, I am trying to create a nested RW transaction under a RO transaction in LMDB v0.9.33:
int nested_op (MDB_env *env, MDB_txn *th) { MDB_txn *ptxn, *txn; if (th) ptxn = th; else mdb_txn_begin (env, NULL, MDB_RDONLY, &ptxn); return mdb_txn_begin (env, ptxn, 0, &txn); }
(rc checks skipped in example)
th can be NULL or an existing open transaction. It may be RW or RO.
If I run this code, the second mdb_txn_begin call fails with EINVAL. If I set the parent in that call to NULL, it succeeds.
I verified that env is healthy and I can open other transactions in it; in fact, the first mdb_txn_begin succeeds. According to the manual, I should be able to do this. Is the sample code correct?
Thanks, Stefano