Tim Uckun wrote:
Hi.
Sorry for being so dense but...
The document says
The transaction handle is freed. It and its cursors must not be used again after this call, except with mdb_cursor_renew().
I am still very confused about reusing transactions.
Keep reading.
If I commit or abort a read write transaction I can't reuse the transaction but I can re use the cursor? In the cursor documentation it says
Cursors that are only used in read-only transactions may be re-used, to avoid unnecessary malloc/free overhead.
So this indicates only read only cursors can be reused right?
Yes.
So can you confirm my understanding? This is what I get from reading the docs.
A transaction can either be read write or read only.
If a transaction is read only you can commit or abort the transaction and then re-open it again for further use.
No. Once a transaction is committed or aborted it is freed and cannot be reused. Period, end of story. Both the commit() and abort() docs are quite explicit about this.
If a transaction is read write then it can't be used again after you commit or abort the transaction.
On Tue, Nov 22, 2016 at 3:17 PM, Howard Chu <hyc@symas.com mailto:hyc@symas.com> wrote:
Tim Uckun wrote: No. You can perform multiple write operations in a single transaction. But once the commit has been called the next write operation has to be a newly opened transaction right? The write transactions can't be re-opened. http://lmdb.tech/doc/group__mdb.html#ga846fbd6f46105617ac9f4d76476f6597 <http://lmdb.tech/doc/group__mdb.html#ga846fbd6f46105617ac9f4d76476f6597>