changeset 109:6cf5eb5b0be1

Embed batch operations in BEGIN-END TRANSACTION for speed improvement.
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Tue, 18 Feb 2014 19:41:23 +0100
parents e9b798e80bad
children bae09ef524cb
files SqliteDBLink.cpp
diffstat 1 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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";
   }