summaryrefslogtreecommitdiffstats
path: root/common/storage_lmdb.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/storage_lmdb.cpp')
-rw-r--r--common/storage_lmdb.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/common/storage_lmdb.cpp b/common/storage_lmdb.cpp
index 6539eb0..1efffc4 100644
--- a/common/storage_lmdb.cpp
+++ b/common/storage_lmdb.cpp
@@ -156,8 +156,8 @@ void Storage::NamedDatabase::remove(const QByteArray &k, const QByteArray &value
156 const std::function<void(const Storage::Error &error)> &errorHandler) 156 const std::function<void(const Storage::Error &error)> &errorHandler)
157{ 157{
158 if (!d || !d->transaction) { 158 if (!d || !d->transaction) {
159 Error error(d->name.toLatin1() + d->db, ErrorCodes::GenericError, "Not open");
160 if (d) { 159 if (d) {
160 Error error(d->name.toLatin1() + d->db, ErrorCodes::GenericError, "Not open");
161 errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); 161 errorHandler ? errorHandler(error) : d->defaultErrorHandler(error);
162 } 162 }
163 return; 163 return;
@@ -443,8 +443,8 @@ Storage::NamedDatabase Storage::Transaction::openDatabase(const QByteArray &db,
443 d->implicitCommit = true; 443 d->implicitCommit = true;
444 auto p = new Storage::NamedDatabase::Private(db, allowDuplicates, d->defaultErrorHandler, d->name, d->transaction); 444 auto p = new Storage::NamedDatabase::Private(db, allowDuplicates, d->defaultErrorHandler, d->name, d->transaction);
445 if (!p->openDatabase(d->requestedRead, errorHandler)) { 445 if (!p->openDatabase(d->requestedRead, errorHandler)) {
446 return Storage::NamedDatabase();
447 delete p; 446 delete p;
447 return Storage::NamedDatabase();
448 } 448 }
449 return Storage::NamedDatabase(p); 449 return Storage::NamedDatabase(p);
450} 450}
@@ -463,7 +463,7 @@ QList<QByteArray> Storage::Transaction::getDatabaseNames() const
463 MDB_val data; 463 MDB_val data;
464 MDB_cursor *cursor; 464 MDB_cursor *cursor;
465 465
466 rc = mdb_cursor_open(d->transaction, d->dbi, &cursor); 466 mdb_cursor_open(d->transaction, d->dbi, &cursor);
467 if ((rc = mdb_cursor_get(cursor, &key, &data, MDB_FIRST)) == 0) { 467 if ((rc = mdb_cursor_get(cursor, &key, &data, MDB_FIRST)) == 0) {
468 list << QByteArray::fromRawData((char*)key.mv_data, key.mv_size); 468 list << QByteArray::fromRawData((char*)key.mv_data, key.mv_size);
469 while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) { 469 while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) {
@@ -615,4 +615,12 @@ void Storage::removeFromDisk() const
615 mdb_env_close(env); 615 mdb_env_close(env);
616} 616}
617 617
618void Storage::clearEnv()
619{
620 for (auto env : Storage::Private::sEnvironments) {
621 mdb_env_close(env);
622 }
623 Storage::Private::sEnvironments.clear();
624}
625
618} // namespace Sink 626} // namespace Sink