# HG changeset patch # User Tom Fredrik Blenning Klaussen # Date 1392748883 -3600 # Node ID 6cf5eb5b0be17e0b8dc024c2db13e1d39e185e8c # Parent e9b798e80bad47859a465556fda1480aad733c00 Embed batch operations in BEGIN-END TRANSACTION for speed improvement. diff -r e9b798e80bad -r 6cf5eb5b0be1 SqliteDBLink.cpp --- a/SqliteDBLink.cpp Tue Feb 18 17:08:06 2014 +0100 +++ b/SqliteDBLink.cpp Tue Feb 18 19:41:23 2014 +0100 @@ -49,10 +49,10 @@ preparedBeginQuery = new QSqlQuery(db); - preparedBeginQuery->prepare("BEGIN"); + preparedBeginQuery->prepare("BEGIN TRANSACTION"); preparedEndQuery = new QSqlQuery(db); - preparedEndQuery->prepare("END"); + preparedEndQuery->prepare("END TRANSACTION"); preparedSizePrefixQuery = new QSqlQuery(db); preparedSizePrefixQuery->prepare("SELECT * FROM files WHERE path LIKE :prefix AND size = :size"); @@ -376,7 +376,11 @@ while (operation) { if (operation->type() != last) { + if (!preparedBeginQuery->exec()) + throw SQLException(*preparedBeginQuery); executeOperation(paths, sizes, mtimes, hashes, last); + if (!preparedEndQuery->exec()) + throw SQLException(*preparedEndQuery); } switch (operation->type()) { @@ -406,7 +410,11 @@ foreach(QVariant path, paths) { qDebug() << path.toString(); } + if (!preparedBeginQuery->exec()) + throw SQLException(*preparedBeginQuery); executeOperation(paths, sizes, mtimes, hashes, last); + if (!preparedEndQuery->exec()) + throw SQLException(*preparedEndQuery); qDebug() << "Execute Operation Done"; }