diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-05-24 23:58:12 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-05-24 23:58:12 +0200 |
commit | 39a20d8ce774f94f22009d4e571bfa39ba087f3b (patch) | |
tree | c3bf07be95ad69bc1cd15072318a3391d1ff0d46 /common/storage_lmdb.cpp | |
parent | 917e5776fb65c5b9bef680b84ef8769d19088294 (diff) | |
download | sink-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.cpp | 5 |
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; |