Improve performance of PostgreSQL for large databases.
[quassel.git] / src / core / postgresqlstorage.h
index 0d172ec..062aa0a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2014 by the Quassel Project                        *
+ *   Copyright (C) 2005-2016 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -95,6 +95,7 @@ public slots:
     virtual QHash<BufferId, MsgId> bufferLastSeenMsgIds(UserId user);
     virtual void setBufferMarkerLineMsg(UserId user, const BufferId &bufferId, const MsgId &msgId);
     virtual QHash<BufferId, MsgId> bufferMarkerLineMsgIds(UserId user);
+    virtual void setBufferLastMsg(const BufferId &bufferId, const MsgId &msgId);
 
     /* Message handling */
     virtual bool logMessage(Message &msg);
@@ -116,10 +117,11 @@ protected:
     virtual bool setupSchemaVersion(int version);
     void safeExec(QSqlQuery &query);
 
+    bool beginTransaction(QSqlDatabase &db);
     bool beginReadOnlyTransaction(QSqlDatabase &db);
 
-    QSqlQuery executePreparedQuery(const QString &queryname, const QVariantList &params, const QSqlDatabase &db);
-    QSqlQuery executePreparedQuery(const QString &queryname, const QVariant &param, const QSqlDatabase &db);
+    QSqlQuery executePreparedQuery(const QString &queryname, const QVariantList &params, QSqlDatabase &db);
+    QSqlQuery executePreparedQuery(const QString &queryname, const QVariant &param, QSqlDatabase &db);
     void deallocateQuery(const QString &queryname, const QSqlDatabase &db);
 
     inline void savePoint(const QString &handle, const QSqlDatabase &db) { db.exec(QString("SAVEPOINT %1").arg(handle)); }
@@ -129,8 +131,8 @@ protected:
 private:
     void bindNetworkInfo(QSqlQuery &query, const NetworkInfo &info);
     void bindServerInfo(QSqlQuery &query, const Network::Server &server);
-    QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QString &paramstring, const QSqlDatabase &db);
-    inline QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QSqlDatabase &db) { return prepareAndExecuteQuery(queryname, QString(), db); }
+    QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QString &paramstring, QSqlDatabase &db);
+    inline QSqlQuery prepareAndExecuteQuery(const QString &queryname, QSqlDatabase &db) { return prepareAndExecuteQuery(queryname, QString(), db); }
 
     QString _hostName;
     int _port;
@@ -140,8 +142,6 @@ private:
 };
 
 
-inline void PostgreSqlStorage::safeExec(QSqlQuery &query) { query.exec(); }
-
 // ========================================
 //  PostgreSqlMigration
 // ========================================