From d682289cc69fac3a5776ef29059cc1f54d8d37d4 Mon Sep 17 00:00:00 2001 From: Alex Ingram Date: Thu, 2 Mar 2017 23:40:23 -0600 Subject: [PATCH] Improve performance of PostgreSQL for large databases. 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. --- .../SQL/PostgreSQL/19/select_messages.sql | 6 - .../{19 => 20}/delete_backlog_by_uid.sql | 0 .../{19 => 20}/delete_backlog_for_buffer.sql | 0 .../{19 => 20}/delete_backlog_for_network.sql | 0 .../{19 => 20}/delete_buffer_for_bufferid.sql | 0 .../{19 => 20}/delete_buffers_by_uid.sql | 0 .../{19 => 20}/delete_buffers_for_network.sql | 0 .../PostgreSQL/{19 => 20}/delete_identity.sql | 0 .../delete_ircservers_for_network.sql | 0 .../PostgreSQL/{19 => 20}/delete_network.sql | 0 .../{19 => 20}/delete_networks_by_uid.sql | 0 .../PostgreSQL/{19 => 20}/delete_nicks.sql | 0 .../{19 => 20}/delete_quasseluser.sql | 0 .../PostgreSQL/{19 => 20}/insert_buffer.sql | 0 .../PostgreSQL/{19 => 20}/insert_identity.sql | 0 .../PostgreSQL/{19 => 20}/insert_message.sql | 0 .../PostgreSQL/{19 => 20}/insert_network.sql | 0 .../SQL/PostgreSQL/{19 => 20}/insert_nick.sql | 0 .../{19 => 20}/insert_quasseluser.sql | 0 .../PostgreSQL/{19 => 20}/insert_sender.sql | 0 .../PostgreSQL/{19 => 20}/insert_server.sql | 0 .../{19 => 20}/insert_user_setting.sql | 0 .../{19 => 20}/migrate_write_backlog.sql | 0 .../{19 => 20}/migrate_write_buffer.sql | 0 .../{19 => 20}/migrate_write_identity.sql | 0 .../migrate_write_identity_nick.sql | 0 .../{19 => 20}/migrate_write_ircserver.sql | 0 .../{19 => 20}/migrate_write_network.sql | 0 .../{19 => 20}/migrate_write_quasseluser.sql | 0 .../{19 => 20}/migrate_write_sender.sql | 0 .../{19 => 20}/migrate_write_usersetting.sql | 0 .../PostgreSQL/{19 => 20}/select_authuser.sql | 0 .../{19 => 20}/select_bufferByName.sql | 0 .../{19 => 20}/select_bufferExists.sql | 0 .../{19 => 20}/select_buffer_by_id.sql | 0 .../select_buffer_lastseen_messages.sql | 0 .../select_buffer_markerlinemsgids.sql | 0 .../PostgreSQL/{19 => 20}/select_buffers.sql | 0 .../{19 => 20}/select_buffers_for_network.sql | 0 .../{19 => 20}/select_checkidentity.sql | 0 .../{19 => 20}/select_connected_networks.sql | 0 .../{19 => 20}/select_identities.sql | 0 .../{19 => 20}/select_internaluser.sql | 0 .../SQL/PostgreSQL/20/select_messages.sql | 7 + .../{19 => 20}/select_messagesAll.sql | 0 .../{19 => 20}/select_messagesAllNew.sql | 0 .../{19 => 20}/select_messagesNewerThan.sql | 0 .../{19 => 20}/select_messagesRange.sql | 0 .../{19 => 20}/select_networkExists.sql | 0 .../{19 => 20}/select_network_awaymsg.sql | 0 .../{19 => 20}/select_network_usermode.sql | 0 .../{19 => 20}/select_networks_for_user.sql | 0 .../PostgreSQL/{19 => 20}/select_nicks.sql | 0 .../{19 => 20}/select_persistent_channels.sql | 0 .../PostgreSQL/{19 => 20}/select_senderid.sql | 0 .../{19 => 20}/select_servers_for_network.sql | 0 .../{19 => 20}/select_user_setting.sql | 0 .../PostgreSQL/{19 => 20}/select_userid.sql | 0 .../{19 => 20}/setup_000_quasseluser.sql | 0 .../{19 => 20}/setup_010_sender.sql | 0 .../{19 => 20}/setup_020_identity.sql | 0 .../{19 => 20}/setup_030_identity_nick.sql | 0 .../{19 => 20}/setup_040_network.sql | 0 .../{19 => 20}/setup_050_buffer.sql | 1 + .../{19 => 20}/setup_060_backlog.sql | 0 .../{19 => 20}/setup_070_coreinfo.sql | 0 .../{19 => 20}/setup_080_ircservers.sql | 0 .../{19 => 20}/setup_090_backlog_idx.sql | 0 .../{19 => 20}/setup_100_user_setting.sql | 0 .../{19 => 20}/setup_110_alter_sender_seq.sql | 0 .../setup_120_alter_messageid_seq.sql | 0 .../20/setup_130_function_lastmsgid.sql | 18 ++ .../{19 => 20}/update_backlog_bufferid.sql | 0 .../PostgreSQL/20/update_buffer_lastmsgid.sql | 3 + .../{19 => 20}/update_buffer_lastseen.sql | 0 .../update_buffer_markerlinemsgid.sql | 0 .../{19 => 20}/update_buffer_name.sql | 0 .../update_buffer_persistent_channel.sql | 0 .../update_buffer_set_channel_key.sql | 0 .../PostgreSQL/{19 => 20}/update_identity.sql | 0 .../PostgreSQL/{19 => 20}/update_network.sql | 0 .../{19 => 20}/update_network_connected.sql | 0 .../{19 => 20}/update_network_set_awaymsg.sql | 0 .../update_network_set_usermode.sql | 0 .../{19 => 20}/update_user_setting.sql | 0 .../PostgreSQL/{19 => 20}/update_username.sql | 0 .../{19 => 20}/update_userpassword.sql | 0 ...upgrade_000_alter_buffer_add_lastmsgid.sql | 2 + ...de_001_add_function_populate_lastmsgid.sql | 18 ++ ...de_002_run_function_populate_lastmsgid.sql | 1 + src/core/postgresqlstorage.cpp | 17 + src/core/postgresqlstorage.h | 1 + src/core/sql.qrc | 299 +++++++++--------- 93 files changed, 220 insertions(+), 153 deletions(-) delete mode 100644 src/core/SQL/PostgreSQL/19/select_messages.sql rename src/core/SQL/PostgreSQL/{19 => 20}/delete_backlog_by_uid.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_backlog_for_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_backlog_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_buffer_for_bufferid.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_buffers_by_uid.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_buffers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_identity.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_ircservers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_networks_by_uid.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_nicks.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/delete_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/insert_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/insert_identity.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/insert_message.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/insert_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/insert_nick.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/insert_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/insert_sender.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/insert_server.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/insert_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/migrate_write_backlog.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/migrate_write_buffer.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/migrate_write_identity.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/migrate_write_identity_nick.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/migrate_write_ircserver.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/migrate_write_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/migrate_write_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/migrate_write_sender.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/migrate_write_usersetting.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_authuser.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_bufferByName.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_bufferExists.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_buffer_by_id.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_buffer_lastseen_messages.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_buffer_markerlinemsgids.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_buffers.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_buffers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_checkidentity.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_connected_networks.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_identities.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_internaluser.sql (100%) create mode 100644 src/core/SQL/PostgreSQL/20/select_messages.sql rename src/core/SQL/PostgreSQL/{19 => 20}/select_messagesAll.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_messagesAllNew.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_messagesNewerThan.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_messagesRange.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_networkExists.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_network_awaymsg.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_network_usermode.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_networks_for_user.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_nicks.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_persistent_channels.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_senderid.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_servers_for_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/select_userid.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_000_quasseluser.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_010_sender.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_020_identity.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_030_identity_nick.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_040_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_050_buffer.sql (92%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_060_backlog.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_070_coreinfo.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_080_ircservers.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_090_backlog_idx.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_100_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_110_alter_sender_seq.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/setup_120_alter_messageid_seq.sql (100%) create mode 100644 src/core/SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql rename src/core/SQL/PostgreSQL/{19 => 20}/update_backlog_bufferid.sql (100%) create mode 100644 src/core/SQL/PostgreSQL/20/update_buffer_lastmsgid.sql rename src/core/SQL/PostgreSQL/{19 => 20}/update_buffer_lastseen.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_buffer_markerlinemsgid.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_buffer_name.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_buffer_persistent_channel.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_buffer_set_channel_key.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_identity.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_network.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_network_connected.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_network_set_awaymsg.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_network_set_usermode.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_user_setting.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_username.sql (100%) rename src/core/SQL/PostgreSQL/{19 => 20}/update_userpassword.sql (100%) create mode 100644 src/core/SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql create mode 100644 src/core/SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql create mode 100644 src/core/SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql diff --git a/src/core/SQL/PostgreSQL/19/select_messages.sql b/src/core/SQL/PostgreSQL/19/select_messages.sql deleted file mode 100644 index 1bd2683f..00000000 --- a/src/core/SQL/PostgreSQL/19/select_messages.sql +++ /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/19/delete_backlog_by_uid.sql b/src/core/SQL/PostgreSQL/20/delete_backlog_by_uid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_backlog_by_uid.sql rename to src/core/SQL/PostgreSQL/20/delete_backlog_by_uid.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_backlog_for_buffer.sql b/src/core/SQL/PostgreSQL/20/delete_backlog_for_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_backlog_for_buffer.sql rename to src/core/SQL/PostgreSQL/20/delete_backlog_for_buffer.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_backlog_for_network.sql b/src/core/SQL/PostgreSQL/20/delete_backlog_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_backlog_for_network.sql rename to src/core/SQL/PostgreSQL/20/delete_backlog_for_network.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_buffer_for_bufferid.sql b/src/core/SQL/PostgreSQL/20/delete_buffer_for_bufferid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_buffer_for_bufferid.sql rename to src/core/SQL/PostgreSQL/20/delete_buffer_for_bufferid.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_buffers_by_uid.sql b/src/core/SQL/PostgreSQL/20/delete_buffers_by_uid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_buffers_by_uid.sql rename to src/core/SQL/PostgreSQL/20/delete_buffers_by_uid.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_buffers_for_network.sql b/src/core/SQL/PostgreSQL/20/delete_buffers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_buffers_for_network.sql rename to src/core/SQL/PostgreSQL/20/delete_buffers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_identity.sql b/src/core/SQL/PostgreSQL/20/delete_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_identity.sql rename to src/core/SQL/PostgreSQL/20/delete_identity.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_ircservers_for_network.sql b/src/core/SQL/PostgreSQL/20/delete_ircservers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_ircservers_for_network.sql rename to src/core/SQL/PostgreSQL/20/delete_ircservers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_network.sql b/src/core/SQL/PostgreSQL/20/delete_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_network.sql rename to src/core/SQL/PostgreSQL/20/delete_network.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_networks_by_uid.sql b/src/core/SQL/PostgreSQL/20/delete_networks_by_uid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_networks_by_uid.sql rename to src/core/SQL/PostgreSQL/20/delete_networks_by_uid.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_nicks.sql b/src/core/SQL/PostgreSQL/20/delete_nicks.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_nicks.sql rename to src/core/SQL/PostgreSQL/20/delete_nicks.sql diff --git a/src/core/SQL/PostgreSQL/19/delete_quasseluser.sql b/src/core/SQL/PostgreSQL/20/delete_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/delete_quasseluser.sql rename to src/core/SQL/PostgreSQL/20/delete_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/19/insert_buffer.sql b/src/core/SQL/PostgreSQL/20/insert_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/insert_buffer.sql rename to src/core/SQL/PostgreSQL/20/insert_buffer.sql diff --git a/src/core/SQL/PostgreSQL/19/insert_identity.sql b/src/core/SQL/PostgreSQL/20/insert_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/insert_identity.sql rename to src/core/SQL/PostgreSQL/20/insert_identity.sql diff --git a/src/core/SQL/PostgreSQL/19/insert_message.sql b/src/core/SQL/PostgreSQL/20/insert_message.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/insert_message.sql rename to src/core/SQL/PostgreSQL/20/insert_message.sql diff --git a/src/core/SQL/PostgreSQL/19/insert_network.sql b/src/core/SQL/PostgreSQL/20/insert_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/insert_network.sql rename to src/core/SQL/PostgreSQL/20/insert_network.sql diff --git a/src/core/SQL/PostgreSQL/19/insert_nick.sql b/src/core/SQL/PostgreSQL/20/insert_nick.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/insert_nick.sql rename to src/core/SQL/PostgreSQL/20/insert_nick.sql diff --git a/src/core/SQL/PostgreSQL/19/insert_quasseluser.sql b/src/core/SQL/PostgreSQL/20/insert_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/insert_quasseluser.sql rename to src/core/SQL/PostgreSQL/20/insert_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/19/insert_sender.sql b/src/core/SQL/PostgreSQL/20/insert_sender.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/insert_sender.sql rename to src/core/SQL/PostgreSQL/20/insert_sender.sql diff --git a/src/core/SQL/PostgreSQL/19/insert_server.sql b/src/core/SQL/PostgreSQL/20/insert_server.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/insert_server.sql rename to src/core/SQL/PostgreSQL/20/insert_server.sql diff --git a/src/core/SQL/PostgreSQL/19/insert_user_setting.sql b/src/core/SQL/PostgreSQL/20/insert_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/insert_user_setting.sql rename to src/core/SQL/PostgreSQL/20/insert_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/19/migrate_write_backlog.sql b/src/core/SQL/PostgreSQL/20/migrate_write_backlog.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/migrate_write_backlog.sql rename to src/core/SQL/PostgreSQL/20/migrate_write_backlog.sql diff --git a/src/core/SQL/PostgreSQL/19/migrate_write_buffer.sql b/src/core/SQL/PostgreSQL/20/migrate_write_buffer.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/migrate_write_buffer.sql rename to src/core/SQL/PostgreSQL/20/migrate_write_buffer.sql diff --git a/src/core/SQL/PostgreSQL/19/migrate_write_identity.sql b/src/core/SQL/PostgreSQL/20/migrate_write_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/migrate_write_identity.sql rename to src/core/SQL/PostgreSQL/20/migrate_write_identity.sql diff --git a/src/core/SQL/PostgreSQL/19/migrate_write_identity_nick.sql b/src/core/SQL/PostgreSQL/20/migrate_write_identity_nick.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/migrate_write_identity_nick.sql rename to src/core/SQL/PostgreSQL/20/migrate_write_identity_nick.sql diff --git a/src/core/SQL/PostgreSQL/19/migrate_write_ircserver.sql b/src/core/SQL/PostgreSQL/20/migrate_write_ircserver.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/migrate_write_ircserver.sql rename to src/core/SQL/PostgreSQL/20/migrate_write_ircserver.sql diff --git a/src/core/SQL/PostgreSQL/19/migrate_write_network.sql b/src/core/SQL/PostgreSQL/20/migrate_write_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/migrate_write_network.sql rename to src/core/SQL/PostgreSQL/20/migrate_write_network.sql diff --git a/src/core/SQL/PostgreSQL/19/migrate_write_quasseluser.sql b/src/core/SQL/PostgreSQL/20/migrate_write_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/migrate_write_quasseluser.sql rename to src/core/SQL/PostgreSQL/20/migrate_write_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/19/migrate_write_sender.sql b/src/core/SQL/PostgreSQL/20/migrate_write_sender.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/migrate_write_sender.sql rename to src/core/SQL/PostgreSQL/20/migrate_write_sender.sql diff --git a/src/core/SQL/PostgreSQL/19/migrate_write_usersetting.sql b/src/core/SQL/PostgreSQL/20/migrate_write_usersetting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/migrate_write_usersetting.sql rename to src/core/SQL/PostgreSQL/20/migrate_write_usersetting.sql diff --git a/src/core/SQL/PostgreSQL/19/select_authuser.sql b/src/core/SQL/PostgreSQL/20/select_authuser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_authuser.sql rename to src/core/SQL/PostgreSQL/20/select_authuser.sql diff --git a/src/core/SQL/PostgreSQL/19/select_bufferByName.sql b/src/core/SQL/PostgreSQL/20/select_bufferByName.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_bufferByName.sql rename to src/core/SQL/PostgreSQL/20/select_bufferByName.sql diff --git a/src/core/SQL/PostgreSQL/19/select_bufferExists.sql b/src/core/SQL/PostgreSQL/20/select_bufferExists.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_bufferExists.sql rename to src/core/SQL/PostgreSQL/20/select_bufferExists.sql diff --git a/src/core/SQL/PostgreSQL/19/select_buffer_by_id.sql b/src/core/SQL/PostgreSQL/20/select_buffer_by_id.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_buffer_by_id.sql rename to src/core/SQL/PostgreSQL/20/select_buffer_by_id.sql diff --git a/src/core/SQL/PostgreSQL/19/select_buffer_lastseen_messages.sql b/src/core/SQL/PostgreSQL/20/select_buffer_lastseen_messages.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_buffer_lastseen_messages.sql rename to src/core/SQL/PostgreSQL/20/select_buffer_lastseen_messages.sql diff --git a/src/core/SQL/PostgreSQL/19/select_buffer_markerlinemsgids.sql b/src/core/SQL/PostgreSQL/20/select_buffer_markerlinemsgids.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_buffer_markerlinemsgids.sql rename to src/core/SQL/PostgreSQL/20/select_buffer_markerlinemsgids.sql diff --git a/src/core/SQL/PostgreSQL/19/select_buffers.sql b/src/core/SQL/PostgreSQL/20/select_buffers.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_buffers.sql rename to src/core/SQL/PostgreSQL/20/select_buffers.sql diff --git a/src/core/SQL/PostgreSQL/19/select_buffers_for_network.sql b/src/core/SQL/PostgreSQL/20/select_buffers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_buffers_for_network.sql rename to src/core/SQL/PostgreSQL/20/select_buffers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/19/select_checkidentity.sql b/src/core/SQL/PostgreSQL/20/select_checkidentity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_checkidentity.sql rename to src/core/SQL/PostgreSQL/20/select_checkidentity.sql diff --git a/src/core/SQL/PostgreSQL/19/select_connected_networks.sql b/src/core/SQL/PostgreSQL/20/select_connected_networks.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_connected_networks.sql rename to src/core/SQL/PostgreSQL/20/select_connected_networks.sql diff --git a/src/core/SQL/PostgreSQL/19/select_identities.sql b/src/core/SQL/PostgreSQL/20/select_identities.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_identities.sql rename to src/core/SQL/PostgreSQL/20/select_identities.sql diff --git a/src/core/SQL/PostgreSQL/19/select_internaluser.sql b/src/core/SQL/PostgreSQL/20/select_internaluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_internaluser.sql rename to src/core/SQL/PostgreSQL/20/select_internaluser.sql diff --git a/src/core/SQL/PostgreSQL/20/select_messages.sql b/src/core/SQL/PostgreSQL/20/select_messages.sql new file mode 100644 index 00000000..5bf6a249 --- /dev/null +++ b/src/core/SQL/PostgreSQL/20/select_messages.sql @@ -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 diff --git a/src/core/SQL/PostgreSQL/19/select_messagesAll.sql b/src/core/SQL/PostgreSQL/20/select_messagesAll.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_messagesAll.sql rename to src/core/SQL/PostgreSQL/20/select_messagesAll.sql diff --git a/src/core/SQL/PostgreSQL/19/select_messagesAllNew.sql b/src/core/SQL/PostgreSQL/20/select_messagesAllNew.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_messagesAllNew.sql rename to src/core/SQL/PostgreSQL/20/select_messagesAllNew.sql diff --git a/src/core/SQL/PostgreSQL/19/select_messagesNewerThan.sql b/src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_messagesNewerThan.sql rename to src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql diff --git a/src/core/SQL/PostgreSQL/19/select_messagesRange.sql b/src/core/SQL/PostgreSQL/20/select_messagesRange.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_messagesRange.sql rename to src/core/SQL/PostgreSQL/20/select_messagesRange.sql diff --git a/src/core/SQL/PostgreSQL/19/select_networkExists.sql b/src/core/SQL/PostgreSQL/20/select_networkExists.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_networkExists.sql rename to src/core/SQL/PostgreSQL/20/select_networkExists.sql diff --git a/src/core/SQL/PostgreSQL/19/select_network_awaymsg.sql b/src/core/SQL/PostgreSQL/20/select_network_awaymsg.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_network_awaymsg.sql rename to src/core/SQL/PostgreSQL/20/select_network_awaymsg.sql diff --git a/src/core/SQL/PostgreSQL/19/select_network_usermode.sql b/src/core/SQL/PostgreSQL/20/select_network_usermode.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_network_usermode.sql rename to src/core/SQL/PostgreSQL/20/select_network_usermode.sql diff --git a/src/core/SQL/PostgreSQL/19/select_networks_for_user.sql b/src/core/SQL/PostgreSQL/20/select_networks_for_user.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_networks_for_user.sql rename to src/core/SQL/PostgreSQL/20/select_networks_for_user.sql diff --git a/src/core/SQL/PostgreSQL/19/select_nicks.sql b/src/core/SQL/PostgreSQL/20/select_nicks.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_nicks.sql rename to src/core/SQL/PostgreSQL/20/select_nicks.sql diff --git a/src/core/SQL/PostgreSQL/19/select_persistent_channels.sql b/src/core/SQL/PostgreSQL/20/select_persistent_channels.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_persistent_channels.sql rename to src/core/SQL/PostgreSQL/20/select_persistent_channels.sql diff --git a/src/core/SQL/PostgreSQL/19/select_senderid.sql b/src/core/SQL/PostgreSQL/20/select_senderid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_senderid.sql rename to src/core/SQL/PostgreSQL/20/select_senderid.sql diff --git a/src/core/SQL/PostgreSQL/19/select_servers_for_network.sql b/src/core/SQL/PostgreSQL/20/select_servers_for_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_servers_for_network.sql rename to src/core/SQL/PostgreSQL/20/select_servers_for_network.sql diff --git a/src/core/SQL/PostgreSQL/19/select_user_setting.sql b/src/core/SQL/PostgreSQL/20/select_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_user_setting.sql rename to src/core/SQL/PostgreSQL/20/select_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/19/select_userid.sql b/src/core/SQL/PostgreSQL/20/select_userid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/select_userid.sql rename to src/core/SQL/PostgreSQL/20/select_userid.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_000_quasseluser.sql b/src/core/SQL/PostgreSQL/20/setup_000_quasseluser.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_000_quasseluser.sql rename to src/core/SQL/PostgreSQL/20/setup_000_quasseluser.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_010_sender.sql b/src/core/SQL/PostgreSQL/20/setup_010_sender.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_010_sender.sql rename to src/core/SQL/PostgreSQL/20/setup_010_sender.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_020_identity.sql b/src/core/SQL/PostgreSQL/20/setup_020_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_020_identity.sql rename to src/core/SQL/PostgreSQL/20/setup_020_identity.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_030_identity_nick.sql b/src/core/SQL/PostgreSQL/20/setup_030_identity_nick.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_030_identity_nick.sql rename to src/core/SQL/PostgreSQL/20/setup_030_identity_nick.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_040_network.sql b/src/core/SQL/PostgreSQL/20/setup_040_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_040_network.sql rename to src/core/SQL/PostgreSQL/20/setup_040_network.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_050_buffer.sql b/src/core/SQL/PostgreSQL/20/setup_050_buffer.sql similarity index 92% rename from src/core/SQL/PostgreSQL/19/setup_050_buffer.sql rename to src/core/SQL/PostgreSQL/20/setup_050_buffer.sql index a4b0ce56..bbf8ab6f 100644 --- a/src/core/SQL/PostgreSQL/19/setup_050_buffer.sql +++ b/src/core/SQL/PostgreSQL/20/setup_050_buffer.sql @@ -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/19/setup_060_backlog.sql b/src/core/SQL/PostgreSQL/20/setup_060_backlog.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_060_backlog.sql rename to src/core/SQL/PostgreSQL/20/setup_060_backlog.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_070_coreinfo.sql b/src/core/SQL/PostgreSQL/20/setup_070_coreinfo.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_070_coreinfo.sql rename to src/core/SQL/PostgreSQL/20/setup_070_coreinfo.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_080_ircservers.sql b/src/core/SQL/PostgreSQL/20/setup_080_ircservers.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_080_ircservers.sql rename to src/core/SQL/PostgreSQL/20/setup_080_ircservers.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_090_backlog_idx.sql b/src/core/SQL/PostgreSQL/20/setup_090_backlog_idx.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_090_backlog_idx.sql rename to src/core/SQL/PostgreSQL/20/setup_090_backlog_idx.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_100_user_setting.sql b/src/core/SQL/PostgreSQL/20/setup_100_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_100_user_setting.sql rename to src/core/SQL/PostgreSQL/20/setup_100_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_110_alter_sender_seq.sql b/src/core/SQL/PostgreSQL/20/setup_110_alter_sender_seq.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_110_alter_sender_seq.sql rename to src/core/SQL/PostgreSQL/20/setup_110_alter_sender_seq.sql diff --git a/src/core/SQL/PostgreSQL/19/setup_120_alter_messageid_seq.sql b/src/core/SQL/PostgreSQL/20/setup_120_alter_messageid_seq.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/setup_120_alter_messageid_seq.sql rename to src/core/SQL/PostgreSQL/20/setup_120_alter_messageid_seq.sql 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 index 00000000..561422ab --- /dev/null +++ b/src/core/SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql @@ -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/19/update_backlog_bufferid.sql b/src/core/SQL/PostgreSQL/20/update_backlog_bufferid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_backlog_bufferid.sql rename to src/core/SQL/PostgreSQL/20/update_backlog_bufferid.sql 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 index 00000000..b0f17116 --- /dev/null +++ b/src/core/SQL/PostgreSQL/20/update_buffer_lastmsgid.sql @@ -0,0 +1,3 @@ +UPDATE buffer +SET lastmsgid = :lastmsgid +WHERE bufferid = :bufferid diff --git a/src/core/SQL/PostgreSQL/19/update_buffer_lastseen.sql b/src/core/SQL/PostgreSQL/20/update_buffer_lastseen.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_buffer_lastseen.sql rename to src/core/SQL/PostgreSQL/20/update_buffer_lastseen.sql diff --git a/src/core/SQL/PostgreSQL/19/update_buffer_markerlinemsgid.sql b/src/core/SQL/PostgreSQL/20/update_buffer_markerlinemsgid.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_buffer_markerlinemsgid.sql rename to src/core/SQL/PostgreSQL/20/update_buffer_markerlinemsgid.sql diff --git a/src/core/SQL/PostgreSQL/19/update_buffer_name.sql b/src/core/SQL/PostgreSQL/20/update_buffer_name.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_buffer_name.sql rename to src/core/SQL/PostgreSQL/20/update_buffer_name.sql diff --git a/src/core/SQL/PostgreSQL/19/update_buffer_persistent_channel.sql b/src/core/SQL/PostgreSQL/20/update_buffer_persistent_channel.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_buffer_persistent_channel.sql rename to src/core/SQL/PostgreSQL/20/update_buffer_persistent_channel.sql diff --git a/src/core/SQL/PostgreSQL/19/update_buffer_set_channel_key.sql b/src/core/SQL/PostgreSQL/20/update_buffer_set_channel_key.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_buffer_set_channel_key.sql rename to src/core/SQL/PostgreSQL/20/update_buffer_set_channel_key.sql diff --git a/src/core/SQL/PostgreSQL/19/update_identity.sql b/src/core/SQL/PostgreSQL/20/update_identity.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_identity.sql rename to src/core/SQL/PostgreSQL/20/update_identity.sql diff --git a/src/core/SQL/PostgreSQL/19/update_network.sql b/src/core/SQL/PostgreSQL/20/update_network.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_network.sql rename to src/core/SQL/PostgreSQL/20/update_network.sql diff --git a/src/core/SQL/PostgreSQL/19/update_network_connected.sql b/src/core/SQL/PostgreSQL/20/update_network_connected.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_network_connected.sql rename to src/core/SQL/PostgreSQL/20/update_network_connected.sql diff --git a/src/core/SQL/PostgreSQL/19/update_network_set_awaymsg.sql b/src/core/SQL/PostgreSQL/20/update_network_set_awaymsg.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_network_set_awaymsg.sql rename to src/core/SQL/PostgreSQL/20/update_network_set_awaymsg.sql diff --git a/src/core/SQL/PostgreSQL/19/update_network_set_usermode.sql b/src/core/SQL/PostgreSQL/20/update_network_set_usermode.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_network_set_usermode.sql rename to src/core/SQL/PostgreSQL/20/update_network_set_usermode.sql diff --git a/src/core/SQL/PostgreSQL/19/update_user_setting.sql b/src/core/SQL/PostgreSQL/20/update_user_setting.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_user_setting.sql rename to src/core/SQL/PostgreSQL/20/update_user_setting.sql diff --git a/src/core/SQL/PostgreSQL/19/update_username.sql b/src/core/SQL/PostgreSQL/20/update_username.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_username.sql rename to src/core/SQL/PostgreSQL/20/update_username.sql diff --git a/src/core/SQL/PostgreSQL/19/update_userpassword.sql b/src/core/SQL/PostgreSQL/20/update_userpassword.sql similarity index 100% rename from src/core/SQL/PostgreSQL/19/update_userpassword.sql rename to src/core/SQL/PostgreSQL/20/update_userpassword.sql 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 index 00000000..509dc683 --- /dev/null +++ b/src/core/SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql @@ -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 index 00000000..561422ab --- /dev/null +++ b/src/core/SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql @@ -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 index 00000000..a3ba1243 --- /dev/null +++ b/src/core/SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql @@ -0,0 +1 @@ +SELECT populate_lastmsgid() diff --git a/src/core/postgresqlstorage.cpp b/src/core/postgresqlstorage.cpp index d6b82440..05da7a12 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 { @@ -2029,5 +2042,9 @@ bool PostgreSqlMigrationWriter::postProcess() if (!exec()) return false; } + + newQuery(QString("SELECT populate_lastmsgid()"), db); + if (!exec()) + return false; return true; } diff --git a/src/core/postgresqlstorage.h b/src/core/postgresqlstorage.h index c96687e6..062aa0ab 100644 --- a/src/core/postgresqlstorage.h +++ b/src/core/postgresqlstorage.h @@ -95,6 +95,7 @@ public slots: virtual QHash bufferLastSeenMsgIds(UserId user); virtual void setBufferMarkerLineMsg(UserId user, const BufferId &bufferId, const MsgId &msgId); virtual QHash bufferMarkerLineMsgIds(UserId user); + virtual void setBufferLastMsg(const BufferId &bufferId, const MsgId &msgId); /* Message handling */ virtual bool logMessage(Message &msg); diff --git a/src/core/sql.qrc b/src/core/sql.qrc index be7a8437..22de48e6 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -1,52 +1,105 @@ + ./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql + ./SQL/PostgreSQL/16/upgrade_000_alter_network_add_sasl.sql + ./SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql + ./SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql + ./SQL/PostgreSQL/19/upgrade_000_alter_network_add_ratelimit_usecustom.sql + ./SQL/PostgreSQL/19/upgrade_001_alter_network_add_ratelimit_burstsize.sql + ./SQL/PostgreSQL/19/upgrade_002_alter_network_add_ratelimit_delay.sql + ./SQL/PostgreSQL/19/upgrade_003_alter_network_add_ratelimit_unlimited.sql + ./SQL/PostgreSQL/20/delete_backlog_by_uid.sql + ./SQL/PostgreSQL/20/delete_backlog_for_buffer.sql + ./SQL/PostgreSQL/20/delete_backlog_for_network.sql + ./SQL/PostgreSQL/20/delete_buffer_for_bufferid.sql + ./SQL/PostgreSQL/20/delete_buffers_by_uid.sql + ./SQL/PostgreSQL/20/delete_buffers_for_network.sql + ./SQL/PostgreSQL/20/delete_identity.sql + ./SQL/PostgreSQL/20/delete_ircservers_for_network.sql + ./SQL/PostgreSQL/20/delete_network.sql + ./SQL/PostgreSQL/20/delete_networks_by_uid.sql + ./SQL/PostgreSQL/20/delete_nicks.sql + ./SQL/PostgreSQL/20/delete_quasseluser.sql + ./SQL/PostgreSQL/20/insert_buffer.sql + ./SQL/PostgreSQL/20/insert_identity.sql + ./SQL/PostgreSQL/20/insert_message.sql + ./SQL/PostgreSQL/20/insert_network.sql + ./SQL/PostgreSQL/20/insert_nick.sql + ./SQL/PostgreSQL/20/insert_quasseluser.sql + ./SQL/PostgreSQL/20/insert_sender.sql + ./SQL/PostgreSQL/20/insert_server.sql + ./SQL/PostgreSQL/20/insert_user_setting.sql + ./SQL/PostgreSQL/20/migrate_write_backlog.sql + ./SQL/PostgreSQL/20/migrate_write_buffer.sql + ./SQL/PostgreSQL/20/migrate_write_identity.sql + ./SQL/PostgreSQL/20/migrate_write_identity_nick.sql + ./SQL/PostgreSQL/20/migrate_write_ircserver.sql + ./SQL/PostgreSQL/20/migrate_write_network.sql + ./SQL/PostgreSQL/20/migrate_write_quasseluser.sql + ./SQL/PostgreSQL/20/migrate_write_sender.sql + ./SQL/PostgreSQL/20/migrate_write_usersetting.sql + ./SQL/PostgreSQL/20/select_authuser.sql + ./SQL/PostgreSQL/20/select_bufferByName.sql + ./SQL/PostgreSQL/20/select_bufferExists.sql + ./SQL/PostgreSQL/20/select_buffer_by_id.sql + ./SQL/PostgreSQL/20/select_buffer_lastseen_messages.sql + ./SQL/PostgreSQL/20/select_buffer_markerlinemsgids.sql + ./SQL/PostgreSQL/20/select_buffers.sql + ./SQL/PostgreSQL/20/select_buffers_for_network.sql + ./SQL/PostgreSQL/20/select_checkidentity.sql + ./SQL/PostgreSQL/20/select_connected_networks.sql + ./SQL/PostgreSQL/20/select_identities.sql + ./SQL/PostgreSQL/20/select_internaluser.sql + ./SQL/PostgreSQL/20/select_messages.sql + ./SQL/PostgreSQL/20/select_messagesAll.sql + ./SQL/PostgreSQL/20/select_messagesAllNew.sql + ./SQL/PostgreSQL/20/select_messagesNewerThan.sql + ./SQL/PostgreSQL/20/select_messagesRange.sql + ./SQL/PostgreSQL/20/select_networkExists.sql + ./SQL/PostgreSQL/20/select_network_awaymsg.sql + ./SQL/PostgreSQL/20/select_network_usermode.sql + ./SQL/PostgreSQL/20/select_networks_for_user.sql + ./SQL/PostgreSQL/20/select_nicks.sql + ./SQL/PostgreSQL/20/select_persistent_channels.sql + ./SQL/PostgreSQL/20/select_senderid.sql + ./SQL/PostgreSQL/20/select_servers_for_network.sql + ./SQL/PostgreSQL/20/select_user_setting.sql + ./SQL/PostgreSQL/20/select_userid.sql + ./SQL/PostgreSQL/20/setup_000_quasseluser.sql + ./SQL/PostgreSQL/20/setup_010_sender.sql + ./SQL/PostgreSQL/20/setup_020_identity.sql + ./SQL/PostgreSQL/20/setup_030_identity_nick.sql + ./SQL/PostgreSQL/20/setup_040_network.sql + ./SQL/PostgreSQL/20/setup_050_buffer.sql + ./SQL/PostgreSQL/20/setup_060_backlog.sql + ./SQL/PostgreSQL/20/setup_070_coreinfo.sql + ./SQL/PostgreSQL/20/setup_080_ircservers.sql + ./SQL/PostgreSQL/20/setup_090_backlog_idx.sql + ./SQL/PostgreSQL/20/setup_100_user_setting.sql + ./SQL/PostgreSQL/20/setup_110_alter_sender_seq.sql + ./SQL/PostgreSQL/20/setup_120_alter_messageid_seq.sql + ./SQL/PostgreSQL/20/update_backlog_bufferid.sql + ./SQL/PostgreSQL/20/update_buffer_lastseen.sql + ./SQL/PostgreSQL/20/update_buffer_markerlinemsgid.sql + ./SQL/PostgreSQL/20/update_buffer_name.sql + ./SQL/PostgreSQL/20/update_buffer_persistent_channel.sql + ./SQL/PostgreSQL/20/update_buffer_set_channel_key.sql + ./SQL/PostgreSQL/20/update_identity.sql + ./SQL/PostgreSQL/20/update_network.sql + ./SQL/PostgreSQL/20/update_network_connected.sql + ./SQL/PostgreSQL/20/update_network_set_awaymsg.sql + ./SQL/PostgreSQL/20/update_network_set_usermode.sql + ./SQL/PostgreSQL/20/update_user_setting.sql + ./SQL/PostgreSQL/20/update_username.sql + ./SQL/PostgreSQL/20/update_userpassword.sql + ./SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql + ./SQL/PostgreSQL/20/update_buffer_lastmsgid.sql + ./SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql + ./SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql + ./SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql ./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql ./SQL/SQLite/1/upgrade_010_create_coreinfo.sql ./SQL/SQLite/1/upgrade_020_update_schemaversion.sql - ./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql - ./SQL/SQLite/2/upgrade_010_update_schemaversion.sql - ./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql - ./SQL/SQLite/3/upgrade_010_update_schemaversion.sql - ./SQL/SQLite/4/upgrade_000_rename_buffertable.sql - ./SQL/SQLite/4/upgrade_010_create_buffertable.sql - ./SQL/SQLite/4/upgrade_020_copy_buffertable.sql - ./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql - ./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql - ./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql - ./SQL/SQLite/5/upgrade_000_rename_networktable.sql - ./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql - ./SQL/SQLite/5/upgrade_020_copy_networktable.sql - ./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql - ./SQL/SQLite/5/upgrade_180_create_ircservers.sql - ./SQL/SQLite/6/upgrade_000_alter_buffertable.sql - ./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql - ./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql - ./SQL/SQLite/6/upgrade_030_set_querybuffertype.sql - ./SQL/SQLite/6/upgrade_040_update_msgtype.sql - ./SQL/SQLite/6/upgrade_050_update_msgtype.sql - ./SQL/SQLite/6/upgrade_060_update_msgtype.sql - ./SQL/SQLite/6/upgrade_070_update_msgtype.sql - ./SQL/SQLite/6/upgrade_080_update_msgtype.sql - ./SQL/SQLite/6/upgrade_090_update_msgtype.sql - ./SQL/SQLite/6/upgrade_100_update_msgtype.sql - ./SQL/SQLite/6/upgrade_110_update_msgtype.sql - ./SQL/SQLite/6/upgrade_120_update_msgtype.sql - ./SQL/SQLite/6/upgrade_130_update_msgtype.sql - ./SQL/SQLite/6/upgrade_140_update_msgtype.sql - ./SQL/SQLite/6/upgrade_150_update_msgtype.sql - ./SQL/SQLite/6/upgrade_160_update_msgtype.sql - ./SQL/SQLite/7/upgrade_000_rename_networktable.sql - ./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql - ./SQL/SQLite/7/upgrade_020_copy_networktable.sql - ./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql - ./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql - ./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql - ./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql - ./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql - ./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql - ./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql - ./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql - ./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql ./SQL/SQLite/10/upgrade_000_switch_to_msgid.sql ./SQL/SQLite/10/upgrade_010_rename_buffer_table.sql ./SQL/SQLite/10/upgrade_020_create_buffer_table.sql @@ -74,6 +127,8 @@ ./SQL/SQLite/17/upgrade_002_alter_network_add_sasl.sql ./SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql ./SQL/SQLite/19/upgrade_000_alter_ircserver_add_sslverify.sql + ./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql + ./SQL/SQLite/2/upgrade_010_update_schemaversion.sql ./SQL/SQLite/20/delete_backlog_by_uid.sql ./SQL/SQLite/20/delete_backlog_for_buffer.sql ./SQL/SQLite/20/delete_backlog_for_network.sql @@ -82,8 +137,8 @@ ./SQL/SQLite/20/delete_buffers_for_network.sql ./SQL/SQLite/20/delete_identity.sql ./SQL/SQLite/20/delete_ircservers_for_network.sql - ./SQL/SQLite/20/delete_networks_by_uid.sql ./SQL/SQLite/20/delete_network.sql + ./SQL/SQLite/20/delete_networks_by_uid.sql ./SQL/SQLite/20/delete_nicks.sql ./SQL/SQLite/20/delete_quasseluser.sql ./SQL/SQLite/20/insert_buffer.sql @@ -97,40 +152,40 @@ ./SQL/SQLite/20/insert_user_setting.sql ./SQL/SQLite/20/migrate_read_backlog.sql ./SQL/SQLite/20/migrate_read_buffer.sql - ./SQL/SQLite/20/migrate_read_identity_nick.sql ./SQL/SQLite/20/migrate_read_identity.sql + ./SQL/SQLite/20/migrate_read_identity_nick.sql ./SQL/SQLite/20/migrate_read_ircserver.sql ./SQL/SQLite/20/migrate_read_network.sql ./SQL/SQLite/20/migrate_read_quasseluser.sql ./SQL/SQLite/20/migrate_read_sender.sql ./SQL/SQLite/20/migrate_read_usersetting.sql ./SQL/SQLite/20/select_authuser.sql - ./SQL/SQLite/20/select_buffer_by_id.sql ./SQL/SQLite/20/select_bufferByName.sql ./SQL/SQLite/20/select_bufferExists.sql + ./SQL/SQLite/20/select_buffer_by_id.sql ./SQL/SQLite/20/select_buffer_lastseen_messages.sql ./SQL/SQLite/20/select_buffer_markerlinemsgids.sql + ./SQL/SQLite/20/select_buffers.sql ./SQL/SQLite/20/select_buffers_for_merge.sql ./SQL/SQLite/20/select_buffers_for_network.sql - ./SQL/SQLite/20/select_buffers.sql ./SQL/SQLite/20/select_checkidentity.sql ./SQL/SQLite/20/select_connected_networks.sql ./SQL/SQLite/20/select_identities.sql ./SQL/SQLite/20/select_internaluser.sql - ./SQL/SQLite/20/select_messagesAllNew.sql + ./SQL/SQLite/20/select_messages.sql ./SQL/SQLite/20/select_messagesAll.sql + ./SQL/SQLite/20/select_messagesAllNew.sql ./SQL/SQLite/20/select_messagesNewerThan.sql ./SQL/SQLite/20/select_messagesNewestK.sql - ./SQL/SQLite/20/select_messages.sql - ./SQL/SQLite/20/select_network_awaymsg.sql ./SQL/SQLite/20/select_networkExists.sql - ./SQL/SQLite/20/select_networks_for_user.sql + ./SQL/SQLite/20/select_network_awaymsg.sql ./SQL/SQLite/20/select_network_usermode.sql + ./SQL/SQLite/20/select_networks_for_user.sql ./SQL/SQLite/20/select_nicks.sql ./SQL/SQLite/20/select_persistent_channels.sql ./SQL/SQLite/20/select_servers_for_network.sql - ./SQL/SQLite/20/select_userid.sql ./SQL/SQLite/20/select_user_setting.sql + ./SQL/SQLite/20/select_userid.sql ./SQL/SQLite/20/setup_000_quasseluser.sql ./SQL/SQLite/20/setup_010_sender.sql ./SQL/SQLite/20/setup_020_network.sql @@ -153,108 +208,58 @@ ./SQL/SQLite/20/update_buffer_persistent_channel.sql ./SQL/SQLite/20/update_buffer_set_channel_key.sql ./SQL/SQLite/20/update_identity.sql + ./SQL/SQLite/20/update_network.sql ./SQL/SQLite/20/update_network_connected.sql ./SQL/SQLite/20/update_network_set_awaymsg.sql ./SQL/SQLite/20/update_network_set_usermode.sql - ./SQL/SQLite/20/update_network.sql + ./SQL/SQLite/20/update_user_setting.sql ./SQL/SQLite/20/update_username.sql ./SQL/SQLite/20/update_userpassword.sql - ./SQL/SQLite/20/update_user_setting.sql ./SQL/SQLite/20/upgrade_000_alter_network_add_ratelimit_usecustom.sql ./SQL/SQLite/20/upgrade_001_alter_network_add_ratelimit_burstsize.sql ./SQL/SQLite/20/upgrade_002_alter_network_add_ratelimit_delay.sql ./SQL/SQLite/20/upgrade_003_alter_network_add_ratelimit_unlimited.sql - ./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql - ./SQL/PostgreSQL/16/upgrade_000_alter_network_add_sasl.sql - ./SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql - ./SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql - ./SQL/PostgreSQL/19/delete_backlog_by_uid.sql - ./SQL/PostgreSQL/19/delete_backlog_for_buffer.sql - ./SQL/PostgreSQL/19/delete_backlog_for_network.sql - ./SQL/PostgreSQL/19/delete_buffer_for_bufferid.sql - ./SQL/PostgreSQL/19/delete_buffers_by_uid.sql - ./SQL/PostgreSQL/19/delete_buffers_for_network.sql - ./SQL/PostgreSQL/19/delete_identity.sql - ./SQL/PostgreSQL/19/delete_ircservers_for_network.sql - ./SQL/PostgreSQL/19/delete_networks_by_uid.sql - ./SQL/PostgreSQL/19/delete_network.sql - ./SQL/PostgreSQL/19/delete_nicks.sql - ./SQL/PostgreSQL/19/delete_quasseluser.sql - ./SQL/PostgreSQL/19/insert_buffer.sql - ./SQL/PostgreSQL/19/insert_identity.sql - ./SQL/PostgreSQL/19/insert_message.sql - ./SQL/PostgreSQL/19/insert_network.sql - ./SQL/PostgreSQL/19/insert_nick.sql - ./SQL/PostgreSQL/19/insert_quasseluser.sql - ./SQL/PostgreSQL/19/insert_sender.sql - ./SQL/PostgreSQL/19/insert_server.sql - ./SQL/PostgreSQL/19/insert_user_setting.sql - ./SQL/PostgreSQL/19/migrate_write_backlog.sql - ./SQL/PostgreSQL/19/migrate_write_buffer.sql - ./SQL/PostgreSQL/19/migrate_write_identity_nick.sql - ./SQL/PostgreSQL/19/migrate_write_identity.sql - ./SQL/PostgreSQL/19/migrate_write_ircserver.sql - ./SQL/PostgreSQL/19/migrate_write_network.sql - ./SQL/PostgreSQL/19/migrate_write_quasseluser.sql - ./SQL/PostgreSQL/19/migrate_write_sender.sql - ./SQL/PostgreSQL/19/migrate_write_usersetting.sql - ./SQL/PostgreSQL/19/select_authuser.sql - ./SQL/PostgreSQL/19/select_buffer_by_id.sql - ./SQL/PostgreSQL/19/select_bufferByName.sql - ./SQL/PostgreSQL/19/select_bufferExists.sql - ./SQL/PostgreSQL/19/select_buffer_lastseen_messages.sql - ./SQL/PostgreSQL/19/select_buffer_markerlinemsgids.sql - ./SQL/PostgreSQL/19/select_buffers_for_network.sql - ./SQL/PostgreSQL/19/select_buffers.sql - ./SQL/PostgreSQL/19/select_checkidentity.sql - ./SQL/PostgreSQL/19/select_connected_networks.sql - ./SQL/PostgreSQL/19/select_identities.sql - ./SQL/PostgreSQL/19/select_internaluser.sql - ./SQL/PostgreSQL/19/select_messagesAllNew.sql - ./SQL/PostgreSQL/19/select_messagesAll.sql - ./SQL/PostgreSQL/19/select_messagesNewerThan.sql - ./SQL/PostgreSQL/19/select_messagesRange.sql - ./SQL/PostgreSQL/19/select_messages.sql - ./SQL/PostgreSQL/19/select_network_awaymsg.sql - ./SQL/PostgreSQL/19/select_networkExists.sql - ./SQL/PostgreSQL/19/select_networks_for_user.sql - ./SQL/PostgreSQL/19/select_network_usermode.sql - ./SQL/PostgreSQL/19/select_nicks.sql - ./SQL/PostgreSQL/19/select_persistent_channels.sql - ./SQL/PostgreSQL/19/select_senderid.sql - ./SQL/PostgreSQL/19/select_servers_for_network.sql - ./SQL/PostgreSQL/19/select_userid.sql - ./SQL/PostgreSQL/19/select_user_setting.sql - ./SQL/PostgreSQL/19/setup_000_quasseluser.sql - ./SQL/PostgreSQL/19/setup_010_sender.sql - ./SQL/PostgreSQL/19/setup_020_identity.sql - ./SQL/PostgreSQL/19/setup_030_identity_nick.sql - ./SQL/PostgreSQL/19/setup_040_network.sql - ./SQL/PostgreSQL/19/setup_050_buffer.sql - ./SQL/PostgreSQL/19/setup_060_backlog.sql - ./SQL/PostgreSQL/19/setup_070_coreinfo.sql - ./SQL/PostgreSQL/19/setup_080_ircservers.sql - ./SQL/PostgreSQL/19/setup_090_backlog_idx.sql - ./SQL/PostgreSQL/19/setup_100_user_setting.sql - ./SQL/PostgreSQL/19/setup_110_alter_sender_seq.sql - ./SQL/PostgreSQL/19/setup_120_alter_messageid_seq.sql - ./SQL/PostgreSQL/19/update_backlog_bufferid.sql - ./SQL/PostgreSQL/19/update_buffer_lastseen.sql - ./SQL/PostgreSQL/19/update_buffer_markerlinemsgid.sql - ./SQL/PostgreSQL/19/update_buffer_name.sql - ./SQL/PostgreSQL/19/update_buffer_persistent_channel.sql - ./SQL/PostgreSQL/19/update_buffer_set_channel_key.sql - ./SQL/PostgreSQL/19/update_identity.sql - ./SQL/PostgreSQL/19/update_network_connected.sql - ./SQL/PostgreSQL/19/update_network_set_awaymsg.sql - ./SQL/PostgreSQL/19/update_network_set_usermode.sql - ./SQL/PostgreSQL/19/update_network.sql - ./SQL/PostgreSQL/19/update_username.sql - ./SQL/PostgreSQL/19/update_userpassword.sql - ./SQL/PostgreSQL/19/update_user_setting.sql - ./SQL/PostgreSQL/19/upgrade_000_alter_network_add_ratelimit_usecustom.sql - ./SQL/PostgreSQL/19/upgrade_001_alter_network_add_ratelimit_burstsize.sql - ./SQL/PostgreSQL/19/upgrade_002_alter_network_add_ratelimit_delay.sql - ./SQL/PostgreSQL/19/upgrade_003_alter_network_add_ratelimit_unlimited.sql + ./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql + ./SQL/SQLite/3/upgrade_010_update_schemaversion.sql + ./SQL/SQLite/4/upgrade_000_rename_buffertable.sql + ./SQL/SQLite/4/upgrade_010_create_buffertable.sql + ./SQL/SQLite/4/upgrade_020_copy_buffertable.sql + ./SQL/SQLite/4/upgrade_030_drop_oldbuffertable.sql + ./SQL/SQLite/4/upgrade_040_create_buffer_idx.sql + ./SQL/SQLite/4/upgrade_050_create_buffer_cname_idx.sql + ./SQL/SQLite/5/upgrade_000_rename_networktable.sql + ./SQL/SQLite/5/upgrade_010_create_newnetworktable.sql + ./SQL/SQLite/5/upgrade_020_copy_networktable.sql + ./SQL/SQLite/5/upgrade_030_drop_oldnetworktable.sql + ./SQL/SQLite/5/upgrade_180_create_ircservers.sql + ./SQL/SQLite/6/upgrade_000_alter_buffertable.sql + ./SQL/SQLite/6/upgrade_010_set_statusbuffertype.sql + ./SQL/SQLite/6/upgrade_020_set_channelbuffertype.sql + ./SQL/SQLite/6/upgrade_030_set_querybuffertype.sql + ./SQL/SQLite/6/upgrade_040_update_msgtype.sql + ./SQL/SQLite/6/upgrade_050_update_msgtype.sql + ./SQL/SQLite/6/upgrade_060_update_msgtype.sql + ./SQL/SQLite/6/upgrade_070_update_msgtype.sql + ./SQL/SQLite/6/upgrade_080_update_msgtype.sql + ./SQL/SQLite/6/upgrade_090_update_msgtype.sql + ./SQL/SQLite/6/upgrade_100_update_msgtype.sql + ./SQL/SQLite/6/upgrade_110_update_msgtype.sql + ./SQL/SQLite/6/upgrade_120_update_msgtype.sql + ./SQL/SQLite/6/upgrade_130_update_msgtype.sql + ./SQL/SQLite/6/upgrade_140_update_msgtype.sql + ./SQL/SQLite/6/upgrade_150_update_msgtype.sql + ./SQL/SQLite/6/upgrade_160_update_msgtype.sql + ./SQL/SQLite/7/upgrade_000_rename_networktable.sql + ./SQL/SQLite/7/upgrade_010_create_newnetworktable.sql + ./SQL/SQLite/7/upgrade_020_copy_networktable.sql + ./SQL/SQLite/7/upgrade_030_drop_oldnetworktable.sql + ./SQL/SQLite/7/upgrade_040_alter_buffer_add_lastseen.sql + ./SQL/SQLite/8/upgrade_000_alter_network_add_connected.sql + ./SQL/SQLite/8/upgrade_010_alter_buffer_add_key.sql + ./SQL/SQLite/8/upgrade_020_alter_buffer_add_joined.sql + ./SQL/SQLite/8/upgrade_030_update_buffer_set_joined_for_channels.sql + ./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql + ./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql + ./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql -- 2.20.1