make everything compile again
This commit is contained in:
parent
0a22c24024
commit
f15076bc2b
|
@ -226,8 +226,4 @@ MDBROCursor MDBROTransaction::getCursor(const MDBDbi& dbi)
|
|||
return MDBROCursor(this, dbi);
|
||||
}
|
||||
|
||||
void MDBRWTransaction::put(MDB_dbi dbi, string_view key, string_view val, int flags)
|
||||
{
|
||||
put(dbi, MDB_val{key.size(), (void*)&key[0]}, MDB_val{val.size(), (void*)&val[0]}, flags);
|
||||
}
|
||||
|
||||
|
|
27
lmdb-safe.hh
27
lmdb-safe.hh
|
@ -169,6 +169,13 @@ public:
|
|||
d_mdbval.mv_data = (void*)&v[0];
|
||||
}
|
||||
|
||||
MDBInVal(const string& v)
|
||||
{
|
||||
d_mdbval.mv_size = v.size();
|
||||
d_mdbval.mv_data = (void*)&v[0];
|
||||
}
|
||||
|
||||
|
||||
template<typename T>
|
||||
static MDBInVal fromStruct(const T& t)
|
||||
{
|
||||
|
@ -376,17 +383,23 @@ public:
|
|||
|
||||
void clear(MDB_dbi dbi);
|
||||
|
||||
void put(MDB_dbi dbi, const MDB_val& key, const MDB_val& val, int flags=0)
|
||||
void put(MDB_dbi dbi, const MDBInVal& key, const MDBInVal& val, int flags=0)
|
||||
{
|
||||
if(!d_txn)
|
||||
throw std::runtime_error("Attempt to use a closed RW transaction for put");
|
||||
int rc;
|
||||
if((rc=mdb_put(d_txn, dbi, (MDB_val*)&key, (MDB_val*)&val, flags)))
|
||||
if((rc=mdb_put(d_txn, dbi,
|
||||
const_cast<MDB_val*>(&key.d_mdbval),
|
||||
const_cast<MDB_val*>(&val.d_mdbval), flags)))
|
||||
throw std::runtime_error("putting data: " + std::string(mdb_strerror(rc)));
|
||||
}
|
||||
|
||||
void put(MDB_dbi dbi, string_view key, string_view val, int flags=0);
|
||||
|
||||
/*
|
||||
void put(MDB_dbi dbi, string_view key, string_view val, int flags=0)
|
||||
{
|
||||
put(dbi, MDBInVal(key), MDBInVal(val), flags);
|
||||
}
|
||||
*/
|
||||
|
||||
int del(MDB_dbi dbi, const MDB_val& key)
|
||||
{
|
||||
|
@ -498,9 +511,11 @@ public:
|
|||
return rc;
|
||||
}
|
||||
|
||||
int put(MDB_val& key, MDB_val& data, int flags=0)
|
||||
int put(const MDBOutVal& key, const MDBOutVal& data, int flags=0)
|
||||
{
|
||||
return mdb_cursor_put(d_cursor, &key, &data, flags);
|
||||
return mdb_cursor_put(d_cursor,
|
||||
const_cast<MDB_val*>(&key.d_mdbval),
|
||||
const_cast<MDB_val*>(&data.d_mdbval), flags);
|
||||
}
|
||||
|
||||
int del(MDB_val& key, int flags)
|
||||
|
|
|
@ -40,8 +40,7 @@ try
|
|||
for(int n=0; n < 15; ++n) {
|
||||
auto txn = env->getRWTransaction();
|
||||
int val = n + 1000*tid;
|
||||
txn.put(dbi, {sizeof(val), (char*)&val},
|
||||
{sizeof(val), (char*)&val});
|
||||
txn.put(dbi, val, val);
|
||||
txn.commit();
|
||||
cout << "Done with transaction "<<n<<" in thread " << tid<<endl;
|
||||
}
|
||||
|
|
|
@ -25,28 +25,6 @@ struct Record
|
|||
|
||||
};
|
||||
|
||||
struct MDBVal
|
||||
{
|
||||
MDBVal(unsigned int v) : d_v(v)
|
||||
{
|
||||
d_mdbval.mv_size = sizeof(d_v);
|
||||
d_mdbval.mv_data = &d_v;
|
||||
}
|
||||
|
||||
MDBVal(const std::string& str) : d_str(str)
|
||||
{
|
||||
d_mdbval.mv_size = str.size();
|
||||
d_mdbval.mv_data = (void*)str.c_str();
|
||||
}
|
||||
operator MDB_val&()
|
||||
{
|
||||
return d_mdbval;
|
||||
}
|
||||
unsigned int d_v;
|
||||
std::string d_str;
|
||||
MDB_val d_mdbval;
|
||||
};
|
||||
|
||||
static unsigned int getMaxID(MDBRWTransaction& txn, MDBDbi& dbi)
|
||||
{
|
||||
auto cursor = txn.getCursor(dbi);
|
||||
|
@ -64,9 +42,9 @@ static void store(MDBRWTransaction& txn, MDBDbi& records, MDBDbi& domainidx, MDB
|
|||
boost::archive::binary_oarchive oa(oss,boost::archive::no_header );
|
||||
oa << r;
|
||||
|
||||
txn.put(records, MDBVal(r.id), MDBVal(oss.str()), MDB_APPEND);
|
||||
txn.put(domainidx, MDBVal(r.domain_id), MDBVal(r.id));
|
||||
txn.put(nameidx, MDBVal(r.name), MDBVal(r.id));
|
||||
txn.put(records, r.id, oss.str(), MDB_APPEND);
|
||||
txn.put(domainidx, r.domain_id, r.id);
|
||||
txn.put(nameidx, r.name, r.id);
|
||||
}
|
||||
|
||||
|
||||
|
@ -154,8 +132,12 @@ int main(int argc, char** argv)
|
|||
MDBOutVal data;
|
||||
int count = 0;
|
||||
MDBOutVal key;
|
||||
|
||||
MDBInVal tmp("www.powerdns.com");
|
||||
key.d_mdbval = tmp.d_mdbval;
|
||||
|
||||
// ugh
|
||||
|
||||
while(!rocursor.get(key, data, count ? MDB_NEXT_DUP : MDB_SET)) {
|
||||
unsigned int id = data.get<unsigned int>();
|
||||
cout<<"Got something: id="<<id<<endl;
|
||||
|
|
|
@ -42,7 +42,7 @@ int main(int argc, char** argv)
|
|||
|
||||
cout << "Adding "<<limit<<" values .. "; cout.flush();
|
||||
for(unsigned int n = 0 ; n < limit; ++n) {
|
||||
txn.put(dbi, MDBVal(n), MDBVal(n), MDB_APPEND);
|
||||
txn.put(dbi, n, n, MDB_APPEND);
|
||||
}
|
||||
cout <<"Done!"<<endl;
|
||||
cout <<"Calling commit.. "; cout.flush();
|
||||
|
|
Loading…
Reference in New Issue