summaryrefslogtreecommitdiffstats
path: root/common/storage_lmdb.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-05-24 23:58:12 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-05-24 23:58:12 +0200
commit39a20d8ce774f94f22009d4e571bfa39ba087f3b (patch)
treec3bf07be95ad69bc1cd15072318a3391d1ff0d46 /common/storage_lmdb.cpp
parent917e5776fb65c5b9bef680b84ef8769d19088294 (diff)
downloadsink-39a20d8ce774f94f22009d4e571bfa39ba087f3b.tar.gz
sink-39a20d8ce774f94f22009d4e571bfa39ba087f3b.zip
It's an error if we tried to read the latest value but didn't find any.
Diffstat (limited to 'common/storage_lmdb.cpp')
-rw-r--r--common/storage_lmdb.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/common/storage_lmdb.cpp b/common/storage_lmdb.cpp
index 878a5d9..6a84c72 100644
--- a/common/storage_lmdb.cpp
+++ b/common/storage_lmdb.cpp
@@ -275,6 +275,7 @@ void Storage::NamedDatabase::findLatest(const QByteArray &k, const std::function
275 return; 275 return;
276 } 276 }
277 277
278 bool foundValue = false;
278 MDB_cursor_op op = MDB_SET_RANGE; 279 MDB_cursor_op op = MDB_SET_RANGE;
279 if ((rc = mdb_cursor_get(cursor, &key, &data, op)) == 0) { 280 if ((rc = mdb_cursor_get(cursor, &key, &data, op)) == 0) {
280 // The first lookup will find a key that is equal or greather than our key 281 // The first lookup will find a key that is equal or greather than our key
@@ -295,6 +296,7 @@ void Storage::NamedDatabase::findLatest(const QByteArray &k, const std::function
295 prefOp = MDB_LAST; 296 prefOp = MDB_LAST;
296 } 297 }
297 rc = mdb_cursor_get(cursor, &key, &data, prefOp); 298 rc = mdb_cursor_get(cursor, &key, &data, prefOp);
299 foundValue = true;
298 resultHandler(QByteArray::fromRawData((char *)key.mv_data, key.mv_size), QByteArray::fromRawData((char *)data.mv_data, data.mv_size)); 300 resultHandler(QByteArray::fromRawData((char *)key.mv_data, key.mv_size), QByteArray::fromRawData((char *)data.mv_data, data.mv_size));
299 } 301 }
300 } 302 }
@@ -310,6 +312,9 @@ void Storage::NamedDatabase::findLatest(const QByteArray &k, const std::function
310 if (rc) { 312 if (rc) {
311 Error error(d->name.toLatin1(), getErrorCode(rc), QByteArray("Key: ") + k + " : " + QByteArray(mdb_strerror(rc))); 313 Error error(d->name.toLatin1(), getErrorCode(rc), QByteArray("Key: ") + k + " : " + QByteArray(mdb_strerror(rc)));
312 errorHandler ? errorHandler(error) : d->defaultErrorHandler(error); 314 errorHandler ? errorHandler(error) : d->defaultErrorHandler(error);
315 } else if (!foundValue) {
316 Error error(d->name.toLatin1(), 1, QByteArray("Key: ") + k + " : No value found");
317 errorHandler ? errorHandler(error) : d->defaultErrorHandler(error);
313 } 318 }
314 319
315 return; 320 return;