Sam Dave wrote:
Hello,
1. I create a read-only transaction on an environment with mdb_txn_begin().
2.Then I get a database handle on the same environment (using mdb_dbi_open() within a
separate transaction).
3. Finally I try to create and use a cursor using the database in 2. and transaction in
1. but I get various runtime errors ("Segmentation fault" or "double
free or corruption").
However, if I switch 1. and 2., everything works.
Must a database really be created before a transaction? If so, curious to learn if this
is mentioned anywhere in the docs (I didn't see it)
The docs are quite explicit:
http://www.lmdb.tech/doc/group__mdb.html#gac08cad5b096925642ca359a6d6f0562a
####
The database handle will be private to the current transaction until the transaction is
successfully committed.
After a successful commit the handle will reside in the shared environment, and may be
used by other transactions.
####
--
-- Howard Chu
CTO, Symas Corp.
http://www.symas.com
Director, Highland Sun
http://highlandsun.com/hyc/
Chief Architect, OpenLDAP
http://www.openldap.org/project/