diff --git a/lmdb-safe.hh b/lmdb-safe.hh index 3db532f..baebf45 100644 --- a/lmdb-safe.hh +++ b/lmdb-safe.hh @@ -362,6 +362,10 @@ public: { return currentlast(key, data, MDB_LAST); } + int first(MDBOutVal& key, MDBOutVal& data) + { + return currentlast(key, data, MDB_FIRST); + } operator MDB_cursor*&() { diff --git a/multi-example.cc b/multi-example.cc index 0a02d31..045b5e6 100644 --- a/multi-example.cc +++ b/multi-example.cc @@ -3,7 +3,8 @@ using namespace std; int main() { - auto env = getMDBEnv("multi", 0, 0600); + unlink("./multi"); + auto env = getMDBEnv("multi", MDB_NOSUBDIR, 0600); auto dbi = env->openDB("qnames", MDB_DUPSORT | MDB_CREATE); auto txn = env->getRWTransaction(); @@ -33,4 +34,25 @@ int main() for(int rc = cursor.find("lmdb", key, data); !rc; rc = cursor.get(key, data, MDB_NEXT_DUP)) { cout << key.get() << " = " << data.get() <() << " = " << data.get() <() == "lmdb") + cursor.del(); + } + + cout <<"Complete database after deleting 'lmdb' keys: " << endl; + + for(int rc = cursor.first(key, data); !rc; rc = cursor.next(key, data)) { + cout << key.get() << " = " << data.get() <