diff options
-rw-r--r-- | common/storage.h | 2 | ||||
-rw-r--r-- | common/storage_lmdb.cpp | 46 | ||||
-rw-r--r-- | tests/hawd/dataset.cpp | 2 |
3 files changed, 1 insertions, 49 deletions
diff --git a/common/storage.h b/common/storage.h index 70c5b82..3f14e83 100644 --- a/common/storage.h +++ b/common/storage.h | |||
@@ -42,8 +42,6 @@ public: | |||
42 | void scan(const char *keyData, uint keySize, | 42 | void scan(const char *keyData, uint keySize, |
43 | const std::function<bool(void *keyPtr, int keySize, void *ptr, int size)> &resultHandler, | 43 | const std::function<bool(void *keyPtr, int keySize, void *ptr, int size)> &resultHandler, |
44 | const std::function<void(const Storage::Error &error)> &errorHandler); | 44 | const std::function<void(const Storage::Error &error)> &errorHandler); |
45 | void readAll(const std::function<bool(void *key, int keySize, void *data, int dataSize)> &resultHandler, | ||
46 | const std::function<void(const Storage::Error &error)> &errorHandler); | ||
47 | 45 | ||
48 | static std::function<void(const Storage::Error &error)> basicErrorHandler(); | 46 | static std::function<void(const Storage::Error &error)> basicErrorHandler(); |
49 | qint64 diskUsage() const; | 47 | qint64 diskUsage() const; |
diff --git a/common/storage_lmdb.cpp b/common/storage_lmdb.cpp index d5c70eb..d9a501f 100644 --- a/common/storage_lmdb.cpp +++ b/common/storage_lmdb.cpp | |||
@@ -287,52 +287,6 @@ void Storage::scan(const char *keyData, uint keySize, | |||
287 | } | 287 | } |
288 | */ | 288 | */ |
289 | } | 289 | } |
290 | void Storage::readAll(const std::function<bool(void *key, int keySize, void *data, int dataSize)> &resultHandler, | ||
291 | const std::function<void(const Storage::Error &error)> &errorHandler) | ||
292 | { | ||
293 | int rc; | ||
294 | MDB_val key; | ||
295 | MDB_val data; | ||
296 | MDB_cursor *cursor = 0; | ||
297 | |||
298 | const bool implicitTransaction = !d->transaction; | ||
299 | if (implicitTransaction) { | ||
300 | // TODO: if this fails, still try the write below? | ||
301 | if (!startTransaction(ReadOnly)) { | ||
302 | Error error(d->name.toStdString(), -2, "Could not start transaction"); | ||
303 | errorHandler(error); | ||
304 | return; | ||
305 | } | ||
306 | } | ||
307 | |||
308 | rc = mdb_cursor_open(d->transaction, d->dbi, &cursor); | ||
309 | if (rc) { | ||
310 | Error error(d->name.toStdString(), rc, mdb_strerror(rc)); | ||
311 | errorHandler(error); | ||
312 | return; | ||
313 | } | ||
314 | |||
315 | if ((rc = mdb_cursor_get(cursor, &key, &data, MDB_FIRST) == 0) && | ||
316 | resultHandler(key.mv_data, key.mv_size, data.mv_data, data.mv_size)) { | ||
317 | while ((rc = mdb_cursor_get(cursor, &key, &data, MDB_NEXT)) == 0) { | ||
318 | if (!resultHandler(key.mv_data, key.mv_size, data.mv_data, data.mv_size)) { | ||
319 | break; | ||
320 | } | ||
321 | } | ||
322 | } | ||
323 | |||
324 | //We never find the last value | ||
325 | if (rc == MDB_NOTFOUND) { | ||
326 | rc = 0; | ||
327 | } | ||
328 | |||
329 | mdb_cursor_close(cursor); | ||
330 | |||
331 | if (rc) { | ||
332 | Error error(d->name.toStdString(), rc, mdb_strerror(rc)); | ||
333 | errorHandler(error); | ||
334 | } | ||
335 | } | ||
336 | 290 | ||
337 | qint64 Storage::diskUsage() const | 291 | qint64 Storage::diskUsage() const |
338 | { | 292 | { |
diff --git a/tests/hawd/dataset.cpp b/tests/hawd/dataset.cpp index dcc6b4f..a5328e4 100644 --- a/tests/hawd/dataset.cpp +++ b/tests/hawd/dataset.cpp | |||
@@ -252,7 +252,7 @@ void Dataset::eachRow(const std::function<void(const Row &row)> &resultHandler) | |||
252 | } | 252 | } |
253 | 253 | ||
254 | Row row(*this); | 254 | Row row(*this); |
255 | m_storage.readAll( | 255 | m_storage.scan(nullptr, 0, |
256 | [&](void *key, int keySize, void *data, int dataSize) -> bool { | 256 | [&](void *key, int keySize, void *data, int dataSize) -> bool { |
257 | if (keySize != sizeof(qint64)) { | 257 | if (keySize != sizeof(qint64)) { |
258 | return true; | 258 | return true; |