From de860ce15b0921a37c0f3a21dbebe4311b9414a8 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 12 Aug 2015 00:58:28 +0200 Subject: Support for nested transactions --- common/storage_lmdb.cpp | 2 +- tests/storagetest.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/common/storage_lmdb.cpp b/common/storage_lmdb.cpp index 23df0fc..983d0e2 100644 --- a/common/storage_lmdb.cpp +++ b/common/storage_lmdb.cpp @@ -317,7 +317,7 @@ Storage::Private::Private(const QString &s, const QString &n, AccessMode m, bool // TODO: handle error std::cerr << "mdb_env_create: " << rc << " " << mdb_strerror(rc) << std::endl; } else { - if ((rc = mdb_env_open(env, fullPath.toStdString().data(), mode == ReadOnly ? MDB_RDONLY : 0 , 0664))) { + if ((rc = mdb_env_open(env, fullPath.toStdString().data(), mode == ReadOnly ? MDB_RDONLY : 0 | MDB_NOTLS, 0664))) { std::cerr << "mdb_env_open: " << rc << " " << mdb_strerror(rc) << std::endl; mdb_env_close(env); env = 0; diff --git a/tests/storagetest.cpp b/tests/storagetest.cpp index b71a767..55ec888 100644 --- a/tests/storagetest.cpp +++ b/tests/storagetest.cpp @@ -142,6 +142,18 @@ private Q_SLOTS: }); } + void testNestedTransactions() + { + populate(3); + Akonadi2::Storage store(testDataPath, dbName, Akonadi2::Storage::ReadWrite); + store.createTransaction(Akonadi2::Storage::ReadOnly).scan("key1", [&](const QByteArray &key, const QByteArray &value) -> bool { + store.createTransaction(Akonadi2::Storage::ReadWrite).remove(key, [](const Akonadi2::Storage::Error &) { + QVERIFY(false); + }); + return false; + }); + } + void testReadEmptyDb() { bool gotResult = false; -- cgit v1.2.3