X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fpostgresqlstorage.cpp;h=2877ae0fc0f38b77d5cd5b24528ecc0830d85c15;hb=e4fc79c07f5301ce2c7888e709ada0945b675c4f;hp=d6b82440581e6b7f6e59c57a4fad29ad751079a8;hpb=7d30b18136eecbdf2089e5d5877c7e41c6f4bcb6;p=quassel.git diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index d6b82440..2877ae0f 100644 --- a/src/core/postgresqlstorage.cpp +++ b/src/core/postgresqlstorage.cpp @@ -1370,6 +1370,16 @@ QHash PostgreSqlStorage::bufferMarkerLineMsgIds(UserId user) return markerLineHash; } +void PostgreSqlStorage::setBufferLastMsg(const BufferId &bufferId, const MsgId &msgId) +{ + QSqlQuery query(logDb()); + query.prepare(queryString("update_buffer_lastmsgid")); + + query.bindValue(":bufferid", bufferId.toInt()); + query.bindValue(":lastmsgid", msgId.toInt()); + safeExec(query); + watchQuery(query); +} bool PostgreSqlStorage::logMessage(Message &msg) { @@ -1424,6 +1434,9 @@ bool PostgreSqlStorage::logMessage(Message &msg) db.commit(); if (msgId.isValid()) { msg.setMsgId(msgId); + + setBufferLastMsg(msg.bufferInfo().bufferId(), msgId); + return true; } else { @@ -1534,7 +1547,7 @@ QList PostgreSqlStorage::requestMsgs(UserId user, BufferId bufferId, Ms QString queryName; QVariantList params; if (last == -1 && first == -1) { - queryName = "select_messages"; + queryName = "select_messagesNewestK"; } else if (last == -1) { queryName = "select_messagesNewerThan"; @@ -1956,10 +1969,11 @@ bool PostgreSqlMigrationWriter::writeMo(const BufferMO &buffer) bindValue(4, buffer.buffername); bindValue(5, buffer.buffercname); bindValue(6, (int)buffer.buffertype); - bindValue(7, buffer.lastseenmsgid); - bindValue(8, buffer.markerlinemsgid); - bindValue(9, buffer.key); - bindValue(10, buffer.joined); + bindValue(7, buffer.lastmsgid); + bindValue(8, buffer.lastseenmsgid); + bindValue(9, buffer.markerlinemsgid); + bindValue(10, buffer.key); + bindValue(11, buffer.joined); return exec(); } @@ -2029,5 +2043,11 @@ bool PostgreSqlMigrationWriter::postProcess() if (!exec()) return false; } + + // Update the lastmsgid for all existing buffers. + resetQuery(); + newQuery(QString("SELECT populate_lastmsgid()"), db); + if (!exec()) + return false; return true; }