Open
Description
Weird output from cursor get: I would get both key and value inside the key variable, then the value inside the value variable :
#include <cstdio>
#include <cstdlib>
#include <lmdb++.h>
using namespace lmdb;
int getsize(const lmdb::env& e){
auto t = lmdb::txn::begin(e.handle(), nullptr, MDB_RDONLY);
auto d = lmdb::dbi::open(t, nullptr);
int r=d.size(t);
t.abort();
return r;
}
int main() {
auto env = lmdb::env::create();
env.set_mapsize(1UL * 1024UL * 1024UL * 1024UL); /* 1 GiB */
env.open("./example.mdb", 0, 0664);
{
auto wtxn = lmdb::txn::begin(env);
auto dbi = lmdb::dbi::open(wtxn, nullptr);
char a[6] = "hello";
dbi.put(wtxn, "email", "hello");
dbi.put(wtxn, "key", "value");
dbi.put(wtxn, "user", "johndoe");
wtxn.commit();
}
{
auto rtxn = lmdb::txn::begin(env);
auto dbi = lmdb::dbi::open(rtxn, nullptr);
auto cursor = lmdb::cursor::open(rtxn, dbi);
lmdb::val k, v;
while(cursor.get(k, v, MDB_NEXT)){
printf("We got '%s'\nValue '%s'\n", k.data(), v.data());
}
}
{
std::printf("size is %d\n", getsize(env));
}
return EXIT_SUCCESS;
}
Expected Output:
We got 'email'
Value 'hello'
We got 'key'
Value 'value'
We got 'user'
Value 'johndoe'
size is 3
Output :
We got 'emailhello'
Value 'hello'
We got 'keyvalue'
Value 'value'
We got 'userjohndoe'
Value 'johndoe'
size is 3
Metadata
Metadata
Assignees
Labels
No labels