diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-08-23 18:56:43 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-08-23 18:56:43 +0200 |
commit | 1acf9f3c486813df807ff6931e56cc13eb26eeaf (patch) | |
tree | 559ead2e95986515b4a5f93b6f143b8f1d429bd3 /common/domain/event.cpp | |
parent | 62e7084dcd6f53275fcb21ba17e880e41b40094d (diff) | |
download | sink-1acf9f3c486813df807ff6931e56cc13eb26eeaf.tar.gz sink-1acf9f3c486813df807ff6931e56cc13eb26eeaf.zip |
Store indexes as named databases in the same db.
Because we also keep using the same transactions this finally makes
the resource somewhat performant. On my system genericresourcebenchmark
now processes ~4200 messages per second instead of ~280.
Diffstat (limited to 'common/domain/event.cpp')
-rw-r--r-- | common/domain/event.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/common/domain/event.cpp b/common/domain/event.cpp index 15f5d11..e107441 100644 --- a/common/domain/event.cpp +++ b/common/domain/event.cpp | |||
@@ -34,11 +34,11 @@ | |||
34 | 34 | ||
35 | using namespace Akonadi2::ApplicationDomain; | 35 | using namespace Akonadi2::ApplicationDomain; |
36 | 36 | ||
37 | ResultSet TypeImplementation<Event>::queryIndexes(const Akonadi2::Query &query, const QByteArray &resourceInstanceIdentifier, QSet<QByteArray> &appliedFilters) | 37 | ResultSet TypeImplementation<Event>::queryIndexes(const Akonadi2::Query &query, const QByteArray &resourceInstanceIdentifier, QSet<QByteArray> &appliedFilters, Akonadi2::Storage::Transaction &transaction) |
38 | { | 38 | { |
39 | QVector<QByteArray> keys; | 39 | QVector<QByteArray> keys; |
40 | if (query.propertyFilter.contains("uid")) { | 40 | if (query.propertyFilter.contains("uid")) { |
41 | Index uidIndex(Akonadi2::storageLocation(), resourceInstanceIdentifier + ".index.uid", Akonadi2::Storage::ReadOnly); | 41 | Index uidIndex("index.uid", transaction); |
42 | uidIndex.lookup(query.propertyFilter.value("uid").toByteArray(), [&](const QByteArray &value) { | 42 | uidIndex.lookup(query.propertyFilter.value("uid").toByteArray(), [&](const QByteArray &value) { |
43 | keys << value; | 43 | keys << value; |
44 | }, | 44 | }, |
@@ -50,11 +50,11 @@ ResultSet TypeImplementation<Event>::queryIndexes(const Akonadi2::Query &query, | |||
50 | return ResultSet(keys); | 50 | return ResultSet(keys); |
51 | } | 51 | } |
52 | 52 | ||
53 | void TypeImplementation<Event>::index(const Event &type) | 53 | void TypeImplementation<Event>::index(const Event &type, Akonadi2::Storage::Transaction &transaction) |
54 | { | 54 | { |
55 | Index uidIndex(Akonadi2::storageLocation(), type.resourceInstanceIdentifier() + ".index.uid", Akonadi2::Storage::ReadWrite); | ||
56 | const auto uid = type.getProperty("uid"); | 55 | const auto uid = type.getProperty("uid"); |
57 | if (uid.isValid()) { | 56 | if (uid.isValid()) { |
57 | Index uidIndex("index.uid", transaction); | ||
58 | uidIndex.add(uid.toByteArray(), type.identifier()); | 58 | uidIndex.add(uid.toByteArray(), type.identifier()); |
59 | } | 59 | } |
60 | } | 60 | } |