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)
{
db.commit();
if (msgId.isValid()) {
msg.setMsgId(msgId);
+
+ setBufferLastMsg(msg.bufferInfo().bufferId(), msgId);
+
return true;
}
else {
QString queryName;
QVariantList params;
if (last == -1 && first == -1) {
- queryName = "select_messages";
+ queryName = "select_messagesNewestK";
}
else if (last == -1) {
queryName = "select_messagesNewerThan";
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();
}
if (!exec())
return false;
}
+
+ // Update the lastmsgid for all existing buffers.
+ resetQuery();
+ newQuery(QString("SELECT populate_lastmsgid()"), db);
+ if (!exec())
+ return false;
return true;
}