summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/hawd/dataset.cpp29
-rw-r--r--tests/hawd/dataset.h3
2 files changed, 15 insertions, 17 deletions
diff --git a/tests/hawd/dataset.cpp b/tests/hawd/dataset.cpp
index b068b66..96479e0 100644
--- a/tests/hawd/dataset.cpp
+++ b/tests/hawd/dataset.cpp
@@ -94,7 +94,7 @@ qint64 Dataset::Row::key() const
94 return m_key; 94 return m_key;
95} 95}
96 96
97void Dataset::Row::fromBinary(QByteArray &data) 97void Dataset::Row::fromBinary(QByteArray data)
98{ 98{
99 QVariant value; 99 QVariant value;
100 QString key; 100 QString key;
@@ -210,14 +210,14 @@ QString Dataset::Row::toString(const QStringList &cols, int standardCols, const
210Dataset::Dataset(const QString &name, const State &state) 210Dataset::Dataset(const QString &name, const State &state)
211 : m_definition(state.datasetDefinition(name)), 211 : m_definition(state.datasetDefinition(name)),
212 m_storage(state.resultsPath(), name, Akonadi2::Storage::ReadWrite), 212 m_storage(state.resultsPath(), name, Akonadi2::Storage::ReadWrite),
213 m_commitHash(state.commitHash()) 213 m_commitHash(state.commitHash()),
214 m_transaction(std::move(m_storage.createTransaction()))
214{ 215{
215 m_storage.startTransaction();
216} 216}
217 217
218Dataset::~Dataset() 218Dataset::~Dataset()
219{ 219{
220 m_storage.commitTransaction(); 220 m_transaction.commit();
221} 221}
222 222
223bool Dataset::isValid() const 223bool Dataset::isValid() const
@@ -237,8 +237,7 @@ qint64 Dataset::insertRow(const Row &row)
237 } 237 }
238 238
239 qint64 key = row.key(); 239 qint64 key = row.key();
240 QByteArray data = row.toBinary(); 240 m_transaction.write(QByteArray::fromRawData((const char *)&key, sizeof(qint64)), row.toBinary());
241 m_storage.write((const char *)&key, sizeof(qint64), data.constData(), data.size());
242 return key; 241 return key;
243} 242}
244 243
@@ -254,15 +253,14 @@ void Dataset::eachRow(const std::function<void(const Row &row)> &resultHandler)
254 } 253 }
255 254
256 Row row(*this); 255 Row row(*this);
257 m_storage.scan("", 256 m_transaction.scan("",
258 [&](void *key, int keySize, void *data, int dataSize) -> bool { 257 [&](const QByteArray &key, const QByteArray &value) -> bool {
259 if (keySize != sizeof(qint64)) { 258 if (key.size() != sizeof(qint64)) {
260 return true; 259 return true;
261 } 260 }
262 261
263 QByteArray array((const char*)data, dataSize); 262 row.fromBinary(value);
264 row.fromBinary(array); 263 row.m_key = *(qint64 *)key.data();
265 row.m_key = *(qint64 *)key;
266 resultHandler(row); 264 resultHandler(row);
267 return true; 265 return true;
268 }, 266 },
@@ -278,10 +276,9 @@ Dataset::Row Dataset::row(qint64 key)
278 } 276 }
279 277
280 Row row(*this, key); 278 Row row(*this, key);
281 m_storage.scan(QByteArray::fromRawData((const char *)&key, sizeof(qint64)), 279 m_transaction.scan(QByteArray::fromRawData((const char *)&key, sizeof(qint64)),
282 [&row](void *keyPtr, int keyLength, void *valuePtr, int valueSize) -> bool { 280 [&row](const QByteArray &key, const QByteArray &value) -> bool {
283 QByteArray array((const char*)valuePtr, valueSize); 281 row.fromBinary(value);
284 row.fromBinary(array);
285 return true; 282 return true;
286 }, 283 },
287 Akonadi2::Storage::basicErrorHandler() 284 Akonadi2::Storage::basicErrorHandler()
diff --git a/tests/hawd/dataset.h b/tests/hawd/dataset.h
index 9ef162c..b6aa863 100644
--- a/tests/hawd/dataset.h
+++ b/tests/hawd/dataset.h
@@ -57,7 +57,7 @@ public:
57 private: 57 private:
58 Row(); 58 Row();
59 Row(const Dataset &dataset, qint64 key = 0); 59 Row(const Dataset &dataset, qint64 key = 0);
60 void fromBinary(QByteArray &binary); 60 void fromBinary(QByteArray binary);
61 61
62 qint64 m_key; 62 qint64 m_key;
63 QHash<QString, DataDefinition> m_columns; 63 QHash<QString, DataDefinition> m_columns;
@@ -85,6 +85,7 @@ public:
85private: 85private:
86 DatasetDefinition m_definition; 86 DatasetDefinition m_definition;
87 Akonadi2::Storage m_storage; 87 Akonadi2::Storage m_storage;
88 Akonadi2::Storage::Transaction m_transaction;
88 QString m_commitHash; 89 QString m_commitHash;
89}; 90};
90 91