https://bugs.openldap.org/show_bug.cgi?id=10138
--- Comment #5 from kero renault.cle@gmail.com --- Thank you very much for your answer.
I found a better and probably safer and easier workaround to implement. I store the pointer and length of the entries I want to fetch in a vector from the original write transaction (cursor).
Then, I reference this vector to all of my threads. The threads use this vector to get references to the entries' values directly without having a cursor to the database. I ensure no updates are performed on the entries to keep the pointers valid until the thread has finished.
I am pretty sure this optimization is valid, but not if I use any special feature (like encryption, which maintains per-txn cache of decrypted pages as you told me).
Do you see anything that could go wrong with this solution? Are there other features that can break it?