diff options
Diffstat (limited to 'common/queryrunner.cpp')
-rw-r--r-- | common/queryrunner.cpp | 16 |
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; |