summaryrefslogtreecommitdiffstats
path: root/common/queryrunner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/queryrunner.cpp')
-rw-r--r--common/queryrunner.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/common/queryrunner.cpp b/common/queryrunner.cpp
index ea17176..fd966a9 100644
--- a/common/queryrunner.cpp
+++ b/common/queryrunner.cpp
@@ -408,9 +408,19 @@ QPair<qint64, qint64> QueryWorker<DomainType>::load(const Sink::Query &query, co
408 QTime time; 408 QTime time;
409 time.start(); 409 time.start();
410 410
411 Sink::Storage storage(Sink::storageLocation(), mResourceInstanceIdentifier); 411 Sink::Storage::Transaction transaction;
412 storage.setDefaultErrorHandler([](const Sink::Storage::Error &error) { Warning() << "Error during query: " << error.store << error.message; }); 412 {
413 auto transaction = storage.createTransaction(Sink::Storage::ReadOnly); 413 Sink::Storage storage(Sink::storageLocation(), mResourceInstanceIdentifier);
414 storage.setDefaultErrorHandler([](const Sink::Storage::Error &error) { Warning() << "Error during query: " << error.store << error.message; });
415 transaction = storage.createTransaction(Sink::Storage::ReadOnly);
416 }
417
418 //FIXME this is a temporary measure to recover from a failure to open the named databases correctly.
419 //Once the actual problem is fixed it will be enough to simply crash if we open the wrong database (which we check in openDatabase already).
420 while (!transaction.validateNamedDatabases()) {
421 Sink::Storage storage(Sink::storageLocation(), mResourceInstanceIdentifier);
422 transaction = storage.createTransaction(Sink::Storage::ReadOnly);
423 }
414 auto db = Storage::mainDatabase(transaction, mBufferType); 424 auto db = Storage::mainDatabase(transaction, mBufferType);
415 425
416 QSet<QByteArray> remainingFilters; 426 QSet<QByteArray> remainingFilters;