Improve performance of PostgreSQL for large databases.
authorAlex Ingram <reimu@reimuhakurei.net>
Fri, 3 Mar 2017 05:40:23 +0000 (23:40 -0600)
committerAlex Ingram <reimu@reimuhakurei.net>
Fri, 3 Mar 2017 16:14:19 +0000 (10:14 -0600)
This change requires a change to the database schema.

Currently, in cases where buffers exist that have not had any activity for an extended period of time, during initial backlog fetching, Quassel will have to scan backwards through all activity in all buffers until it reaches activity for the buffer in question.

This adds an additional field to the buffer table, "lastmsgid", which is the messageid of the most recent message added for that buffer. This improves performance by allowing Quassel to skip straight to where the most recent activity was, instead of scanning millions of rows (in large databases) in futility.

93 files changed:
src/core/SQL/PostgreSQL/19/select_messages.sql [deleted file]
src/core/SQL/PostgreSQL/20/delete_backlog_by_uid.sql [moved from src/core/SQL/PostgreSQL/19/delete_backlog_by_uid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_backlog_for_buffer.sql [moved from src/core/SQL/PostgreSQL/19/delete_backlog_for_buffer.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_backlog_for_network.sql [moved from src/core/SQL/PostgreSQL/19/delete_backlog_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_buffer_for_bufferid.sql [moved from src/core/SQL/PostgreSQL/19/delete_buffer_for_bufferid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_buffers_by_uid.sql [moved from src/core/SQL/PostgreSQL/19/delete_buffers_by_uid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_buffers_for_network.sql [moved from src/core/SQL/PostgreSQL/19/delete_buffers_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_identity.sql [moved from src/core/SQL/PostgreSQL/19/delete_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_ircservers_for_network.sql [moved from src/core/SQL/PostgreSQL/19/delete_ircservers_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_network.sql [moved from src/core/SQL/PostgreSQL/19/delete_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_networks_by_uid.sql [moved from src/core/SQL/PostgreSQL/19/delete_networks_by_uid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_nicks.sql [moved from src/core/SQL/PostgreSQL/19/delete_nicks.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_quasseluser.sql [moved from src/core/SQL/PostgreSQL/19/delete_quasseluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_buffer.sql [moved from src/core/SQL/PostgreSQL/19/insert_buffer.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_identity.sql [moved from src/core/SQL/PostgreSQL/19/insert_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_message.sql [moved from src/core/SQL/PostgreSQL/19/insert_message.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_network.sql [moved from src/core/SQL/PostgreSQL/19/insert_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_nick.sql [moved from src/core/SQL/PostgreSQL/19/insert_nick.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_quasseluser.sql [moved from src/core/SQL/PostgreSQL/19/insert_quasseluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_sender.sql [moved from src/core/SQL/PostgreSQL/19/insert_sender.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_server.sql [moved from src/core/SQL/PostgreSQL/19/insert_server.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_user_setting.sql [moved from src/core/SQL/PostgreSQL/19/insert_user_setting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_backlog.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_backlog.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_buffer.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_buffer.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_identity.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_identity_nick.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_identity_nick.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_ircserver.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_ircserver.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_network.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_quasseluser.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_quasseluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_sender.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_sender.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_usersetting.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_usersetting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_authuser.sql [moved from src/core/SQL/PostgreSQL/19/select_authuser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_bufferByName.sql [moved from src/core/SQL/PostgreSQL/19/select_bufferByName.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_bufferExists.sql [moved from src/core/SQL/PostgreSQL/19/select_bufferExists.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffer_by_id.sql [moved from src/core/SQL/PostgreSQL/19/select_buffer_by_id.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffer_lastseen_messages.sql [moved from src/core/SQL/PostgreSQL/19/select_buffer_lastseen_messages.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffer_markerlinemsgids.sql [moved from src/core/SQL/PostgreSQL/19/select_buffer_markerlinemsgids.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffers.sql [moved from src/core/SQL/PostgreSQL/19/select_buffers.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffers_for_network.sql [moved from src/core/SQL/PostgreSQL/19/select_buffers_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_checkidentity.sql [moved from src/core/SQL/PostgreSQL/19/select_checkidentity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_connected_networks.sql [moved from src/core/SQL/PostgreSQL/19/select_connected_networks.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_identities.sql [moved from src/core/SQL/PostgreSQL/19/select_identities.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_internaluser.sql [moved from src/core/SQL/PostgreSQL/19/select_internaluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_messages.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/select_messagesAll.sql [moved from src/core/SQL/PostgreSQL/19/select_messagesAll.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_messagesAllNew.sql [moved from src/core/SQL/PostgreSQL/19/select_messagesAllNew.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql [moved from src/core/SQL/PostgreSQL/19/select_messagesNewerThan.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_messagesRange.sql [moved from src/core/SQL/PostgreSQL/19/select_messagesRange.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_networkExists.sql [moved from src/core/SQL/PostgreSQL/19/select_networkExists.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_network_awaymsg.sql [moved from src/core/SQL/PostgreSQL/19/select_network_awaymsg.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_network_usermode.sql [moved from src/core/SQL/PostgreSQL/19/select_network_usermode.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_networks_for_user.sql [moved from src/core/SQL/PostgreSQL/19/select_networks_for_user.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_nicks.sql [moved from src/core/SQL/PostgreSQL/19/select_nicks.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_persistent_channels.sql [moved from src/core/SQL/PostgreSQL/19/select_persistent_channels.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_senderid.sql [moved from src/core/SQL/PostgreSQL/19/select_senderid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_servers_for_network.sql [moved from src/core/SQL/PostgreSQL/19/select_servers_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_user_setting.sql [moved from src/core/SQL/PostgreSQL/19/select_user_setting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_userid.sql [moved from src/core/SQL/PostgreSQL/19/select_userid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_000_quasseluser.sql [moved from src/core/SQL/PostgreSQL/19/setup_000_quasseluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_010_sender.sql [moved from src/core/SQL/PostgreSQL/19/setup_010_sender.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_020_identity.sql [moved from src/core/SQL/PostgreSQL/19/setup_020_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_030_identity_nick.sql [moved from src/core/SQL/PostgreSQL/19/setup_030_identity_nick.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_040_network.sql [moved from src/core/SQL/PostgreSQL/19/setup_040_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_050_buffer.sql [moved from src/core/SQL/PostgreSQL/19/setup_050_buffer.sql with 92% similarity]
src/core/SQL/PostgreSQL/20/setup_060_backlog.sql [moved from src/core/SQL/PostgreSQL/19/setup_060_backlog.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_070_coreinfo.sql [moved from src/core/SQL/PostgreSQL/19/setup_070_coreinfo.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_080_ircservers.sql [moved from src/core/SQL/PostgreSQL/19/setup_080_ircservers.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_090_backlog_idx.sql [moved from src/core/SQL/PostgreSQL/19/setup_090_backlog_idx.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_100_user_setting.sql [moved from src/core/SQL/PostgreSQL/19/setup_100_user_setting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_110_alter_sender_seq.sql [moved from src/core/SQL/PostgreSQL/19/setup_110_alter_sender_seq.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_120_alter_messageid_seq.sql [moved from src/core/SQL/PostgreSQL/19/setup_120_alter_messageid_seq.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/update_backlog_bufferid.sql [moved from src/core/SQL/PostgreSQL/19/update_backlog_bufferid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/update_buffer_lastseen.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_lastseen.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_markerlinemsgid.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_markerlinemsgid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_name.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_name.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_persistent_channel.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_persistent_channel.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_set_channel_key.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_set_channel_key.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_identity.sql [moved from src/core/SQL/PostgreSQL/19/update_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_network.sql [moved from src/core/SQL/PostgreSQL/19/update_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_network_connected.sql [moved from src/core/SQL/PostgreSQL/19/update_network_connected.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_network_set_awaymsg.sql [moved from src/core/SQL/PostgreSQL/19/update_network_set_awaymsg.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_network_set_usermode.sql [moved from src/core/SQL/PostgreSQL/19/update_network_set_usermode.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_user_setting.sql [moved from src/core/SQL/PostgreSQL/19/update_user_setting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_username.sql [moved from src/core/SQL/PostgreSQL/19/update_username.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_userpassword.sql [moved from src/core/SQL/PostgreSQL/19/update_userpassword.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql [new file with mode: 0644]
src/core/postgresqlstorage.cpp
src/core/postgresqlstorage.h
src/core/sql.qrc

diff --git a/src/core/SQL/PostgreSQL/19/select_messages.sql b/src/core/SQL/PostgreSQL/19/select_messages.sql
deleted file mode 100644 (file)
index 1bd2683..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SELECT messageid, time,  type, flags, sender, message
-FROM backlog
-LEFT JOIN sender ON backlog.senderid = sender.senderid
-WHERE bufferid = $1
-ORDER BY messageid DESC
-LIMIT $2
\ No newline at end of file
diff --git a/src/core/SQL/PostgreSQL/20/select_messages.sql b/src/core/SQL/PostgreSQL/20/select_messages.sql
new file mode 100644 (file)
index 0000000..5bf6a24
--- /dev/null
@@ -0,0 +1,7 @@
+SELECT messageid, time,  type, flags, sender, message
+FROM backlog
+JOIN sender ON backlog.senderid = sender.senderid
+WHERE bufferid = $1
+AND messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = $1)
+ORDER BY messageid DESC
+LIMIT $2
@@ -6,6 +6,7 @@ create TABLE buffer (
        buffername varchar(128) NOT NULL,
        buffercname varchar(128) NOT NULL, -- CANONICAL BUFFER NAME (lowercase version)
        buffertype integer NOT NULL DEFAULT 0,
+        lastmsgid integer NOT NULL DEFAULT 0,
        lastseenmsgid integer NOT NULL DEFAULT 0,
        markerlinemsgid integer NOT NULL DEFAULT 0,
        key varchar(128),
diff --git a/src/core/SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql
new file mode 100644 (file)
index 0000000..561422a
--- /dev/null
@@ -0,0 +1,18 @@
+CREATE OR REPLACE FUNCTION populate_lastmsgid() RETURNS void AS $$
+DECLARE
+       i buffer%rowtype;
+BEGIN
+       FOR i IN SELECT * FROM buffer
+       LOOP
+               UPDATE buffer
+                       SET lastmsgid = (
+                               SELECT backlog.messageid
+                               FROM backlog
+                               WHERE backlog.bufferid = i.bufferid
+                               ORDER BY messageid DESC LIMIT 1
+                       )
+                       WHERE buffer.bufferid = i.bufferid;
+       END LOOP;
+       RETURN;
+END
+$$ LANGUAGE plpgsql;
diff --git a/src/core/SQL/PostgreSQL/20/update_buffer_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/update_buffer_lastmsgid.sql
new file mode 100644 (file)
index 0000000..b0f1711
--- /dev/null
@@ -0,0 +1,3 @@
+UPDATE buffer
+SET lastmsgid = :lastmsgid
+WHERE bufferid = :bufferid
diff --git a/src/core/SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql
new file mode 100644 (file)
index 0000000..509dc68
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE buffer
+ADD COLUMN lastmsgid integer NOT NULL DEFAULT 0
diff --git a/src/core/SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql
new file mode 100644 (file)
index 0000000..561422a
--- /dev/null
@@ -0,0 +1,18 @@
+CREATE OR REPLACE FUNCTION populate_lastmsgid() RETURNS void AS $$
+DECLARE
+       i buffer%rowtype;
+BEGIN
+       FOR i IN SELECT * FROM buffer
+       LOOP
+               UPDATE buffer
+                       SET lastmsgid = (
+                               SELECT backlog.messageid
+                               FROM backlog
+                               WHERE backlog.bufferid = i.bufferid
+                               ORDER BY messageid DESC LIMIT 1
+                       )
+                       WHERE buffer.bufferid = i.bufferid;
+       END LOOP;
+       RETURN;
+END
+$$ LANGUAGE plpgsql;
diff --git a/src/core/SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql
new file mode 100644 (file)
index 0000000..a3ba124
--- /dev/null
@@ -0,0 +1 @@
+SELECT populate_lastmsgid()
index d6b8244..05da7a1 100644 (file)
@@ -1370,6 +1370,16 @@ QHash<BufferId, MsgId> 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 {
@@ -2029,5 +2042,9 @@ bool PostgreSqlMigrationWriter::postProcess()
         if (!exec())
             return false;
     }
+
+    newQuery(QString("SELECT populate_lastmsgid()"), db);
+    if (!exec())
+        return false;
     return true;
 }
index c96687e..062aa0a 100644 (file)
@@ -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);
index be7a843..22de48e 100644 (file)
 <!DOCTYPE RCC><RCC version="1.0">
 <qresource>
+    <file>./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql</file>
+    <file>./SQL/PostgreSQL/16/upgrade_000_alter_network_add_sasl.sql</file>
+    <file>./SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql</file>
+    <file>./SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql</file>
+    <file>./SQL/PostgreSQL/19/upgrade_000_alter_network_add_ratelimit_usecustom.sql</file>
+    <file>./SQL/PostgreSQL/19/upgrade_001_alter_network_add_ratelimit_burstsize.sql</file>
+    <file>./SQL/PostgreSQL/19/upgrade_002_alter_network_add_ratelimit_delay.sql</file>
+    <file>./SQL/PostgreSQL/19/upgrade_003_alter_network_add_ratelimit_unlimited.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_backlog_by_uid.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_backlog_for_buffer.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_backlog_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_buffer_for_bufferid.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_buffers_by_uid.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_buffers_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_ircservers_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_network.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_networks_by_uid.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_nicks.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_quasseluser.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_buffer.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_message.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_network.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_nick.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_quasseluser.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_sender.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_server.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_user_setting.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_backlog.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_buffer.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_identity_nick.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_ircserver.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_network.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_quasseluser.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_sender.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_usersetting.sql</file>
+    <file>./SQL/PostgreSQL/20/select_authuser.sql</file>
+    <file>./SQL/PostgreSQL/20/select_bufferByName.sql</file>
+    <file>./SQL/PostgreSQL/20/select_bufferExists.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffer_by_id.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffer_lastseen_messages.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffer_markerlinemsgids.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffers.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffers_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/select_checkidentity.sql</file>
+    <file>./SQL/PostgreSQL/20/select_connected_networks.sql</file>
+    <file>./SQL/PostgreSQL/20/select_identities.sql</file>
+    <file>./SQL/PostgreSQL/20/select_internaluser.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messages.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messagesAll.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messagesAllNew.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messagesNewerThan.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messagesRange.sql</file>
+    <file>./SQL/PostgreSQL/20/select_networkExists.sql</file>
+    <file>./SQL/PostgreSQL/20/select_network_awaymsg.sql</file>
+    <file>./SQL/PostgreSQL/20/select_network_usermode.sql</file>
+    <file>./SQL/PostgreSQL/20/select_networks_for_user.sql</file>
+    <file>./SQL/PostgreSQL/20/select_nicks.sql</file>
+    <file>./SQL/PostgreSQL/20/select_persistent_channels.sql</file>
+    <file>./SQL/PostgreSQL/20/select_senderid.sql</file>
+    <file>./SQL/PostgreSQL/20/select_servers_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/select_user_setting.sql</file>
+    <file>./SQL/PostgreSQL/20/select_userid.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_000_quasseluser.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_010_sender.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_020_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_030_identity_nick.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_040_network.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_050_buffer.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_060_backlog.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_070_coreinfo.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_080_ircservers.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_090_backlog_idx.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_100_user_setting.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_110_alter_sender_seq.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_120_alter_messageid_seq.sql</file>
+    <file>./SQL/PostgreSQL/20/update_backlog_bufferid.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_lastseen.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_markerlinemsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_name.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_persistent_channel.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_set_channel_key.sql</file>
+    <file>./SQL/PostgreSQL/20/update_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/update_network.sql</file>
+    <file>./SQL/PostgreSQL/20/update_network_connected.sql</file>
+    <file>./SQL/PostgreSQL/20/update_network_set_awaymsg.sql</file>
+    <file>./SQL/PostgreSQL/20/update_network_set_usermode.sql</file>
+    <file>./SQL/PostgreSQL/20/update_user_setting.sql</file>
+    <file>./SQL/PostgreSQL/20/update_username.sql</file>
+    <file>./SQL/PostgreSQL/20/update_userpassword.sql</file>
+    <file>./SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_lastmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql</file>
     <file>./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql</file>
     <file>./SQL/SQLite/1/upgrade_010_create_coreinfo.sql</file>
     <file>./SQL/SQLite/1/upgrade_020_update_schemaversion.sql</file>
-    <file>./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql</file>
-    <file>./SQL/SQLite/2/upgrade_010_update_schemaversion.sql</file>
-    <file>./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql</file>
-    <file>./SQL/SQLite/3/upgrade_010_update_schemaversion.sql</file>
-    <file>./SQL/SQLite/4/upgrade_000_rename_buffertable.sql</file>
-    <file>./SQL/SQLite/4/upgrade_010_create_buffertable.sql</file>
-    <file>./SQL/SQLite/4/upgrade_020_copy_buffertable.sql</file>
-    <file>./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql</file>
-    <file>./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql</file>
-    <file>./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql</file>
-    <file>./SQL/SQLite/5/upgrade_000_rename_networktable.sql</file>
-    <file>./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql</file>
-    <file>./SQL/SQLite/5/upgrade_020_copy_networktable.sql</file>
-    <file>./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql</file>
-    <file>./SQL/SQLite/5/upgrade_180_create_ircservers.sql</file>
-    <file>./SQL/SQLite/6/upgrade_000_alter_buffertable.sql</file>
-    <file>./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_030_set_querybuffertype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_040_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_050_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_060_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_070_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_080_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_090_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_100_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_110_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_120_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_130_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_140_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_150_update_msgtype.sql</file>
-    <file>./SQL/SQLite/6/upgrade_160_update_msgtype.sql</file>
-    <file>./SQL/SQLite/7/upgrade_000_rename_networktable.sql</file>
-    <file>./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql</file>
-    <file>./SQL/SQLite/7/upgrade_020_copy_networktable.sql</file>
-    <file>./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql</file>
-    <file>./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql</file>
-    <file>./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql</file>
-    <file>./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql</file>
-    <file>./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql</file>
-    <file>./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql</file>
-    <file>./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql</file>
-    <file>./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql</file>
-    <file>./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql</file>
     <file>./SQL/SQLite/10/upgrade_000_switch_to_msgid.sql</file>
     <file>./SQL/SQLite/10/upgrade_010_rename_buffer_table.sql</file>
     <file>./SQL/SQLite/10/upgrade_020_create_buffer_table.sql</file>
     <file>./SQL/SQLite/17/upgrade_002_alter_network_add_sasl.sql</file>
     <file>./SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql</file>
     <file>./SQL/SQLite/19/upgrade_000_alter_ircserver_add_sslverify.sql</file>
+    <file>./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql</file>
+    <file>./SQL/SQLite/2/upgrade_010_update_schemaversion.sql</file>
     <file>./SQL/SQLite/20/delete_backlog_by_uid.sql</file>
     <file>./SQL/SQLite/20/delete_backlog_for_buffer.sql</file>
     <file>./SQL/SQLite/20/delete_backlog_for_network.sql</file>
     <file>./SQL/SQLite/20/delete_buffers_for_network.sql</file>
     <file>./SQL/SQLite/20/delete_identity.sql</file>
     <file>./SQL/SQLite/20/delete_ircservers_for_network.sql</file>
-    <file>./SQL/SQLite/20/delete_networks_by_uid.sql</file>
     <file>./SQL/SQLite/20/delete_network.sql</file>
+    <file>./SQL/SQLite/20/delete_networks_by_uid.sql</file>
     <file>./SQL/SQLite/20/delete_nicks.sql</file>
     <file>./SQL/SQLite/20/delete_quasseluser.sql</file>
     <file>./SQL/SQLite/20/insert_buffer.sql</file>
     <file>./SQL/SQLite/20/insert_user_setting.sql</file>
     <file>./SQL/SQLite/20/migrate_read_backlog.sql</file>
     <file>./SQL/SQLite/20/migrate_read_buffer.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_identity_nick.sql</file>
     <file>./SQL/SQLite/20/migrate_read_identity.sql</file>
+    <file>./SQL/SQLite/20/migrate_read_identity_nick.sql</file>
     <file>./SQL/SQLite/20/migrate_read_ircserver.sql</file>
     <file>./SQL/SQLite/20/migrate_read_network.sql</file>
     <file>./SQL/SQLite/20/migrate_read_quasseluser.sql</file>
     <file>./SQL/SQLite/20/migrate_read_sender.sql</file>
     <file>./SQL/SQLite/20/migrate_read_usersetting.sql</file>
     <file>./SQL/SQLite/20/select_authuser.sql</file>
-    <file>./SQL/SQLite/20/select_buffer_by_id.sql</file>
     <file>./SQL/SQLite/20/select_bufferByName.sql</file>
     <file>./SQL/SQLite/20/select_bufferExists.sql</file>
+    <file>./SQL/SQLite/20/select_buffer_by_id.sql</file>
     <file>./SQL/SQLite/20/select_buffer_lastseen_messages.sql</file>
     <file>./SQL/SQLite/20/select_buffer_markerlinemsgids.sql</file>
+    <file>./SQL/SQLite/20/select_buffers.sql</file>
     <file>./SQL/SQLite/20/select_buffers_for_merge.sql</file>
     <file>./SQL/SQLite/20/select_buffers_for_network.sql</file>
-    <file>./SQL/SQLite/20/select_buffers.sql</file>
     <file>./SQL/SQLite/20/select_checkidentity.sql</file>
     <file>./SQL/SQLite/20/select_connected_networks.sql</file>
     <file>./SQL/SQLite/20/select_identities.sql</file>
     <file>./SQL/SQLite/20/select_internaluser.sql</file>
-    <file>./SQL/SQLite/20/select_messagesAllNew.sql</file>
+    <file>./SQL/SQLite/20/select_messages.sql</file>
     <file>./SQL/SQLite/20/select_messagesAll.sql</file>
+    <file>./SQL/SQLite/20/select_messagesAllNew.sql</file>
     <file>./SQL/SQLite/20/select_messagesNewerThan.sql</file>
     <file>./SQL/SQLite/20/select_messagesNewestK.sql</file>
-    <file>./SQL/SQLite/20/select_messages.sql</file>
-    <file>./SQL/SQLite/20/select_network_awaymsg.sql</file>
     <file>./SQL/SQLite/20/select_networkExists.sql</file>
-    <file>./SQL/SQLite/20/select_networks_for_user.sql</file>
+    <file>./SQL/SQLite/20/select_network_awaymsg.sql</file>
     <file>./SQL/SQLite/20/select_network_usermode.sql</file>
+    <file>./SQL/SQLite/20/select_networks_for_user.sql</file>
     <file>./SQL/SQLite/20/select_nicks.sql</file>
     <file>./SQL/SQLite/20/select_persistent_channels.sql</file>
     <file>./SQL/SQLite/20/select_servers_for_network.sql</file>
-    <file>./SQL/SQLite/20/select_userid.sql</file>
     <file>./SQL/SQLite/20/select_user_setting.sql</file>
+    <file>./SQL/SQLite/20/select_userid.sql</file>
     <file>./SQL/SQLite/20/setup_000_quasseluser.sql</file>
     <file>./SQL/SQLite/20/setup_010_sender.sql</file>
     <file>./SQL/SQLite/20/setup_020_network.sql</file>
     <file>./SQL/SQLite/20/update_buffer_persistent_channel.sql</file>
     <file>./SQL/SQLite/20/update_buffer_set_channel_key.sql</file>
     <file>./SQL/SQLite/20/update_identity.sql</file>
+    <file>./SQL/SQLite/20/update_network.sql</file>
     <file>./SQL/SQLite/20/update_network_connected.sql</file>
     <file>./SQL/SQLite/20/update_network_set_awaymsg.sql</file>
     <file>./SQL/SQLite/20/update_network_set_usermode.sql</file>
-    <file>./SQL/SQLite/20/update_network.sql</file>
+    <file>./SQL/SQLite/20/update_user_setting.sql</file>
     <file>./SQL/SQLite/20/update_username.sql</file>
     <file>./SQL/SQLite/20/update_userpassword.sql</file>
-    <file>./SQL/SQLite/20/update_user_setting.sql</file>
     <file>./SQL/SQLite/20/upgrade_000_alter_network_add_ratelimit_usecustom.sql</file>
     <file>./SQL/SQLite/20/upgrade_001_alter_network_add_ratelimit_burstsize.sql</file>
     <file>./SQL/SQLite/20/upgrade_002_alter_network_add_ratelimit_delay.sql</file>
     <file>./SQL/SQLite/20/upgrade_003_alter_network_add_ratelimit_unlimited.sql</file>
-    <file>./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql</file>
-    <file>./SQL/PostgreSQL/16/upgrade_000_alter_network_add_sasl.sql</file>
-    <file>./SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql</file>
-    <file>./SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_backlog_by_uid.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_backlog_for_buffer.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_backlog_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_buffer_for_bufferid.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_buffers_by_uid.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_buffers_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_ircservers_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_networks_by_uid.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_network.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_nicks.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_quasseluser.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_buffer.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_message.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_network.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_nick.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_quasseluser.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_sender.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_server.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_user_setting.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_backlog.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_buffer.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_identity_nick.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_ircserver.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_network.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_quasseluser.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_sender.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_usersetting.sql</file>
-    <file>./SQL/PostgreSQL/19/select_authuser.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffer_by_id.sql</file>
-    <file>./SQL/PostgreSQL/19/select_bufferByName.sql</file>
-    <file>./SQL/PostgreSQL/19/select_bufferExists.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffer_lastseen_messages.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffer_markerlinemsgids.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffers_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffers.sql</file>
-    <file>./SQL/PostgreSQL/19/select_checkidentity.sql</file>
-    <file>./SQL/PostgreSQL/19/select_connected_networks.sql</file>
-    <file>./SQL/PostgreSQL/19/select_identities.sql</file>
-    <file>./SQL/PostgreSQL/19/select_internaluser.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messagesAllNew.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messagesAll.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messagesNewerThan.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messagesRange.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messages.sql</file>
-    <file>./SQL/PostgreSQL/19/select_network_awaymsg.sql</file>
-    <file>./SQL/PostgreSQL/19/select_networkExists.sql</file>
-    <file>./SQL/PostgreSQL/19/select_networks_for_user.sql</file>
-    <file>./SQL/PostgreSQL/19/select_network_usermode.sql</file>
-    <file>./SQL/PostgreSQL/19/select_nicks.sql</file>
-    <file>./SQL/PostgreSQL/19/select_persistent_channels.sql</file>
-    <file>./SQL/PostgreSQL/19/select_senderid.sql</file>
-    <file>./SQL/PostgreSQL/19/select_servers_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/select_userid.sql</file>
-    <file>./SQL/PostgreSQL/19/select_user_setting.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_000_quasseluser.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_010_sender.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_020_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_030_identity_nick.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_040_network.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_050_buffer.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_060_backlog.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_070_coreinfo.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_080_ircservers.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_090_backlog_idx.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_100_user_setting.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_110_alter_sender_seq.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_120_alter_messageid_seq.sql</file>
-    <file>./SQL/PostgreSQL/19/update_backlog_bufferid.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_lastseen.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_markerlinemsgid.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_name.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_persistent_channel.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_set_channel_key.sql</file>
-    <file>./SQL/PostgreSQL/19/update_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/update_network_connected.sql</file>
-    <file>./SQL/PostgreSQL/19/update_network_set_awaymsg.sql</file>
-    <file>./SQL/PostgreSQL/19/update_network_set_usermode.sql</file>
-    <file>./SQL/PostgreSQL/19/update_network.sql</file>
-    <file>./SQL/PostgreSQL/19/update_username.sql</file>
-    <file>./SQL/PostgreSQL/19/update_userpassword.sql</file>
-    <file>./SQL/PostgreSQL/19/update_user_setting.sql</file>
-    <file>./SQL/PostgreSQL/19/upgrade_000_alter_network_add_ratelimit_usecustom.sql</file>
-    <file>./SQL/PostgreSQL/19/upgrade_001_alter_network_add_ratelimit_burstsize.sql</file>
-    <file>./SQL/PostgreSQL/19/upgrade_002_alter_network_add_ratelimit_delay.sql</file>
-    <file>./SQL/PostgreSQL/19/upgrade_003_alter_network_add_ratelimit_unlimited.sql</file>
+    <file>./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql</file>
+    <file>./SQL/SQLite/3/upgrade_010_update_schemaversion.sql</file>
+    <file>./SQL/SQLite/4/upgrade_000_rename_buffertable.sql</file>
+    <file>./SQL/SQLite/4/upgrade_010_create_buffertable.sql</file>
+    <file>./SQL/SQLite/4/upgrade_020_copy_buffertable.sql</file>
+    <file>./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql</file>
+    <file>./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql</file>
+    <file>./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql</file>
+    <file>./SQL/SQLite/5/upgrade_000_rename_networktable.sql</file>
+    <file>./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql</file>
+    <file>./SQL/SQLite/5/upgrade_020_copy_networktable.sql</file>
+    <file>./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql</file>
+    <file>./SQL/SQLite/5/upgrade_180_create_ircservers.sql</file>
+    <file>./SQL/SQLite/6/upgrade_000_alter_buffertable.sql</file>
+    <file>./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_030_set_querybuffertype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_040_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_050_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_060_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_070_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_080_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_090_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_100_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_110_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_120_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_130_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_140_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_150_update_msgtype.sql</file>
+    <file>./SQL/SQLite/6/upgrade_160_update_msgtype.sql</file>
+    <file>./SQL/SQLite/7/upgrade_000_rename_networktable.sql</file>
+    <file>./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql</file>
+    <file>./SQL/SQLite/7/upgrade_020_copy_networktable.sql</file>
+    <file>./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql</file>
+    <file>./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql</file>
+    <file>./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql</file>
+    <file>./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql</file>
+    <file>./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql</file>
+    <file>./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql</file>
+    <file>./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql</file>
+    <file>./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql</file>
+    <file>./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql</file>
 </qresource>
 </RCC>