changeset 88:6e1d4d2fc49b

Prepare size query only once.
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Thu, 10 Oct 2013 16:53:06 +0200
parents 9e337bd96bd3
children cfd2a417475a
files SqliteDBLink.cpp SqliteDBLink.hpp
diffstat 2 files changed, 14 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/SqliteDBLink.cpp	Thu Oct 10 16:12:41 2013 +0200
+++ b/SqliteDBLink.cpp	Thu Oct 10 16:53:06 2013 +0200
@@ -34,10 +34,19 @@
     throw SQLException("No database");
   }
 
+
+  preparedSizePrefixQuery = new QSqlQuery(db);
+  preparedSizePrefixQuery->prepare("SELECT * FROM files WHERE path LIKE :prefix AND size = :size");
+
+  preparedSizeQuery = new QSqlQuery(db);
+  preparedSizeQuery->prepare("SELECT * FROM files WHERE size = :size");
+
 }
 
 SqliteDBLink::~SqliteDBLink()
 {
+  delete preparedSizePrefixQuery;
+  delete preparedSizeQuery;
   db.close();
 }
 
@@ -201,17 +210,13 @@
 const QList<FileDBLink::dbinf_ptr_t>
 SqliteDBLink::filesWithSize(quint64 size, const QString& prefix) const
 {
-  QList<FileDBLink::dbinf_ptr_t > values;
+  QList<dbinf_ptr_t > values;
 
-  QSqlQuery query(db);
+  QSqlQuery & query = (prefix.size() > 0) ? *preparedSizePrefixQuery : *preparedSizeQuery;
 
   if (prefix.size() > 0) {
-    query.prepare("SELECT * FROM files WHERE path LIKE :prefix AND size = :size");
     query.bindValue(":prefix", QString("%1%").arg(prefix));
   }
-  else {
-    query.prepare("SELECT * FROM files WHERE size = :size");
-  }
   query.bindValue(":size", QString("%1%").arg(size));
 
 
--- a/SqliteDBLink.hpp	Thu Oct 10 16:12:41 2013 +0200
+++ b/SqliteDBLink.hpp	Thu Oct 10 16:53:06 2013 +0200
@@ -32,6 +32,9 @@
 
   QSqlDatabase db;
   static const QString connectionName;
+
+  QSqlQuery* preparedSizePrefixQuery;
+  QSqlQuery* preparedSizeQuery;
 };
 
 #endif //MEMORYDBLINK_HPP