performance boost for inital backlog replay when using fixed-per-buffer
authorMarcus Eggenberger <egs@quassel-irc.org>
Tue, 30 Dec 2008 17:23:34 +0000 (18:23 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Tue, 30 Dec 2008 17:23:34 +0000 (18:23 +0100)
src/core/SQL/SQLite/13/select_messagesNew.sql [deleted file]
src/core/sql.qrc
src/core/sqlitestorage.cpp

diff --git a/src/core/SQL/SQLite/13/select_messagesNew.sql b/src/core/SQL/SQLite/13/select_messagesNew.sql
deleted file mode 100644 (file)
index 69d948d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-SELECT messageid, time,  type, flags, sender, message
-FROM backlog
-JOIN sender ON backlog.senderid = sender.senderid
-WHERE bufferid = :bufferid
-    AND backlog.messageid >= :firstmsg
-ORDER BY messageid DESC
-LIMIT :limit
index 319a568..89295dd 100644 (file)
@@ -53,7 +53,8 @@
     <file>./SQL/SQLite/13/select_messages.sql</file>
     <file>./SQL/SQLite/13/select_messagesAll.sql</file>
     <file>./SQL/SQLite/13/select_messagesAllNew.sql</file>
-    <file>./SQL/SQLite/13/select_messagesNew.sql</file>
+    <file>./SQL/SQLite/13/select_messagesNewerThan.sql</file>
+    <file>./SQL/SQLite/13/select_messagesNewestK.sql</file>
     <file>./SQL/SQLite/13/select_networkExists.sql</file>
     <file>./SQL/SQLite/13/select_networks_for_user.sql</file>
     <file>./SQL/SQLite/13/select_nicks.sql</file>
index cbcacf7..3c58fa3 100644 (file)
@@ -901,15 +901,19 @@ QList<Message> SqliteStorage::requestMsgs(UserId user, BufferId bufferId, MsgId
     return messagelist;
 
   QSqlQuery query(logDb());
-  if(last == -1) {
-    query.prepare(queryString("select_messagesNew"));
+  
+  if(last == -1 && first == -1) {
+    query.prepare(queryString("select_messagesNewestK"));
+  } else if(last == -1) {
+    query.prepare(queryString("select_messagesNewerThan"));
+    query.bindValue(":firstmsg", first.toInt());
   } else {
     query.prepare(queryString("select_messages"));
     query.bindValue(":lastmsg", last.toInt());
+    query.bindValue(":firstmsg", first.toInt());
   }
 
   query.bindValue(":bufferid", bufferId.toInt());
-  query.bindValue(":firstmsg", first.toInt());
   query.bindValue(":limit", limit);
   safeExec(query);