From: Alex Ingram Date: Sat, 4 Mar 2017 02:34:20 +0000 (-0600) Subject: Port the previous PostgreSQL improvements to SQLite3. X-Git-Tag: travis-deploy-test~335^2 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=10ee60164fb3701b20c439269f170a4f2cb2e2a9 Port the previous PostgreSQL improvements to SQLite3. --- diff --git a/src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql b/src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql index a40bd5a2..881ce5e4 100644 --- a/src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql +++ b/src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql @@ -3,7 +3,6 @@ FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE backlog.messageid >= $1 AND backlog.messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = $1) -AND backlog.messageid <= buffer.lastmsgid AND bufferid = $2 ORDER BY messageid DESC LIMIT $3 diff --git a/src/core/SQL/PostgreSQL/20/update_buffer_lastseen.sql b/src/core/SQL/PostgreSQL/20/update_buffer_lastseen.sql index 55415050..98218a64 100644 --- a/src/core/SQL/PostgreSQL/20/update_buffer_lastseen.sql +++ b/src/core/SQL/PostgreSQL/20/update_buffer_lastseen.sql @@ -1,3 +1,3 @@ UPDATE buffer -SET lastseenmsgid = :lastseenmsgid +SET lastseenmsgid = min(:lastseenmsgid, buffer.lastmsgid) WHERE userid = :userid AND bufferid = :bufferid diff --git a/src/core/SQL/SQLite/20/delete_backlog_by_uid.sql b/src/core/SQL/SQLite/21/delete_backlog_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_backlog_by_uid.sql rename to src/core/SQL/SQLite/21/delete_backlog_by_uid.sql diff --git a/src/core/SQL/SQLite/20/delete_backlog_for_buffer.sql b/src/core/SQL/SQLite/21/delete_backlog_for_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_backlog_for_buffer.sql rename to src/core/SQL/SQLite/21/delete_backlog_for_buffer.sql diff --git a/src/core/SQL/SQLite/20/delete_backlog_for_network.sql b/src/core/SQL/SQLite/21/delete_backlog_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_backlog_for_network.sql rename to src/core/SQL/SQLite/21/delete_backlog_for_network.sql diff --git a/src/core/SQL/SQLite/20/delete_buffer_for_bufferid.sql b/src/core/SQL/SQLite/21/delete_buffer_for_bufferid.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_buffer_for_bufferid.sql rename to src/core/SQL/SQLite/21/delete_buffer_for_bufferid.sql diff --git a/src/core/SQL/SQLite/20/delete_buffers_by_uid.sql b/src/core/SQL/SQLite/21/delete_buffers_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_buffers_by_uid.sql rename to src/core/SQL/SQLite/21/delete_buffers_by_uid.sql diff --git a/src/core/SQL/SQLite/20/delete_buffers_for_network.sql b/src/core/SQL/SQLite/21/delete_buffers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_buffers_for_network.sql rename to src/core/SQL/SQLite/21/delete_buffers_for_network.sql diff --git a/src/core/SQL/SQLite/20/delete_identity.sql b/src/core/SQL/SQLite/21/delete_identity.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_identity.sql rename to src/core/SQL/SQLite/21/delete_identity.sql diff --git a/src/core/SQL/SQLite/20/delete_ircservers_for_network.sql b/src/core/SQL/SQLite/21/delete_ircservers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_ircservers_for_network.sql rename to src/core/SQL/SQLite/21/delete_ircservers_for_network.sql diff --git a/src/core/SQL/SQLite/20/delete_network.sql b/src/core/SQL/SQLite/21/delete_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_network.sql rename to src/core/SQL/SQLite/21/delete_network.sql diff --git a/src/core/SQL/SQLite/20/delete_networks_by_uid.sql b/src/core/SQL/SQLite/21/delete_networks_by_uid.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_networks_by_uid.sql rename to src/core/SQL/SQLite/21/delete_networks_by_uid.sql diff --git a/src/core/SQL/SQLite/20/delete_nicks.sql b/src/core/SQL/SQLite/21/delete_nicks.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_nicks.sql rename to src/core/SQL/SQLite/21/delete_nicks.sql diff --git a/src/core/SQL/SQLite/20/delete_quasseluser.sql b/src/core/SQL/SQLite/21/delete_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/20/delete_quasseluser.sql rename to src/core/SQL/SQLite/21/delete_quasseluser.sql diff --git a/src/core/SQL/SQLite/20/insert_buffer.sql b/src/core/SQL/SQLite/21/insert_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/20/insert_buffer.sql rename to src/core/SQL/SQLite/21/insert_buffer.sql diff --git a/src/core/SQL/SQLite/20/insert_identity.sql b/src/core/SQL/SQLite/21/insert_identity.sql similarity index 100% rename from src/core/SQL/SQLite/20/insert_identity.sql rename to src/core/SQL/SQLite/21/insert_identity.sql diff --git a/src/core/SQL/SQLite/20/insert_message.sql b/src/core/SQL/SQLite/21/insert_message.sql similarity index 100% rename from src/core/SQL/SQLite/20/insert_message.sql rename to src/core/SQL/SQLite/21/insert_message.sql diff --git a/src/core/SQL/SQLite/20/insert_network.sql b/src/core/SQL/SQLite/21/insert_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/insert_network.sql rename to src/core/SQL/SQLite/21/insert_network.sql diff --git a/src/core/SQL/SQLite/20/insert_nick.sql b/src/core/SQL/SQLite/21/insert_nick.sql similarity index 100% rename from src/core/SQL/SQLite/20/insert_nick.sql rename to src/core/SQL/SQLite/21/insert_nick.sql diff --git a/src/core/SQL/SQLite/20/insert_quasseluser.sql b/src/core/SQL/SQLite/21/insert_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/20/insert_quasseluser.sql rename to src/core/SQL/SQLite/21/insert_quasseluser.sql diff --git a/src/core/SQL/SQLite/20/insert_sender.sql b/src/core/SQL/SQLite/21/insert_sender.sql similarity index 100% rename from src/core/SQL/SQLite/20/insert_sender.sql rename to src/core/SQL/SQLite/21/insert_sender.sql diff --git a/src/core/SQL/SQLite/20/insert_server.sql b/src/core/SQL/SQLite/21/insert_server.sql similarity index 100% rename from src/core/SQL/SQLite/20/insert_server.sql rename to src/core/SQL/SQLite/21/insert_server.sql diff --git a/src/core/SQL/SQLite/20/insert_user_setting.sql b/src/core/SQL/SQLite/21/insert_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/20/insert_user_setting.sql rename to src/core/SQL/SQLite/21/insert_user_setting.sql diff --git a/src/core/SQL/SQLite/20/migrate_read_backlog.sql b/src/core/SQL/SQLite/21/migrate_read_backlog.sql similarity index 100% rename from src/core/SQL/SQLite/20/migrate_read_backlog.sql rename to src/core/SQL/SQLite/21/migrate_read_backlog.sql diff --git a/src/core/SQL/SQLite/20/migrate_read_buffer.sql b/src/core/SQL/SQLite/21/migrate_read_buffer.sql similarity index 100% rename from src/core/SQL/SQLite/20/migrate_read_buffer.sql rename to src/core/SQL/SQLite/21/migrate_read_buffer.sql diff --git a/src/core/SQL/SQLite/20/migrate_read_identity.sql b/src/core/SQL/SQLite/21/migrate_read_identity.sql similarity index 100% rename from src/core/SQL/SQLite/20/migrate_read_identity.sql rename to src/core/SQL/SQLite/21/migrate_read_identity.sql diff --git a/src/core/SQL/SQLite/20/migrate_read_identity_nick.sql b/src/core/SQL/SQLite/21/migrate_read_identity_nick.sql similarity index 100% rename from src/core/SQL/SQLite/20/migrate_read_identity_nick.sql rename to src/core/SQL/SQLite/21/migrate_read_identity_nick.sql diff --git a/src/core/SQL/SQLite/20/migrate_read_ircserver.sql b/src/core/SQL/SQLite/21/migrate_read_ircserver.sql similarity index 100% rename from src/core/SQL/SQLite/20/migrate_read_ircserver.sql rename to src/core/SQL/SQLite/21/migrate_read_ircserver.sql diff --git a/src/core/SQL/SQLite/20/migrate_read_network.sql b/src/core/SQL/SQLite/21/migrate_read_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/migrate_read_network.sql rename to src/core/SQL/SQLite/21/migrate_read_network.sql diff --git a/src/core/SQL/SQLite/20/migrate_read_quasseluser.sql b/src/core/SQL/SQLite/21/migrate_read_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/20/migrate_read_quasseluser.sql rename to src/core/SQL/SQLite/21/migrate_read_quasseluser.sql diff --git a/src/core/SQL/SQLite/20/migrate_read_sender.sql b/src/core/SQL/SQLite/21/migrate_read_sender.sql similarity index 100% rename from src/core/SQL/SQLite/20/migrate_read_sender.sql rename to src/core/SQL/SQLite/21/migrate_read_sender.sql diff --git a/src/core/SQL/SQLite/20/migrate_read_usersetting.sql b/src/core/SQL/SQLite/21/migrate_read_usersetting.sql similarity index 100% rename from src/core/SQL/SQLite/20/migrate_read_usersetting.sql rename to src/core/SQL/SQLite/21/migrate_read_usersetting.sql diff --git a/src/core/SQL/SQLite/20/select_authuser.sql b/src/core/SQL/SQLite/21/select_authuser.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_authuser.sql rename to src/core/SQL/SQLite/21/select_authuser.sql diff --git a/src/core/SQL/SQLite/20/select_bufferByName.sql b/src/core/SQL/SQLite/21/select_bufferByName.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_bufferByName.sql rename to src/core/SQL/SQLite/21/select_bufferByName.sql diff --git a/src/core/SQL/SQLite/20/select_bufferExists.sql b/src/core/SQL/SQLite/21/select_bufferExists.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_bufferExists.sql rename to src/core/SQL/SQLite/21/select_bufferExists.sql diff --git a/src/core/SQL/SQLite/20/select_buffer_by_id.sql b/src/core/SQL/SQLite/21/select_buffer_by_id.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_buffer_by_id.sql rename to src/core/SQL/SQLite/21/select_buffer_by_id.sql diff --git a/src/core/SQL/SQLite/20/select_buffer_lastseen_messages.sql b/src/core/SQL/SQLite/21/select_buffer_lastseen_messages.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_buffer_lastseen_messages.sql rename to src/core/SQL/SQLite/21/select_buffer_lastseen_messages.sql diff --git a/src/core/SQL/SQLite/20/select_buffer_markerlinemsgids.sql b/src/core/SQL/SQLite/21/select_buffer_markerlinemsgids.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_buffer_markerlinemsgids.sql rename to src/core/SQL/SQLite/21/select_buffer_markerlinemsgids.sql diff --git a/src/core/SQL/SQLite/20/select_buffers.sql b/src/core/SQL/SQLite/21/select_buffers.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_buffers.sql rename to src/core/SQL/SQLite/21/select_buffers.sql diff --git a/src/core/SQL/SQLite/20/select_buffers_for_merge.sql b/src/core/SQL/SQLite/21/select_buffers_for_merge.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_buffers_for_merge.sql rename to src/core/SQL/SQLite/21/select_buffers_for_merge.sql diff --git a/src/core/SQL/SQLite/20/select_buffers_for_network.sql b/src/core/SQL/SQLite/21/select_buffers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_buffers_for_network.sql rename to src/core/SQL/SQLite/21/select_buffers_for_network.sql diff --git a/src/core/SQL/SQLite/20/select_checkidentity.sql b/src/core/SQL/SQLite/21/select_checkidentity.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_checkidentity.sql rename to src/core/SQL/SQLite/21/select_checkidentity.sql diff --git a/src/core/SQL/SQLite/20/select_connected_networks.sql b/src/core/SQL/SQLite/21/select_connected_networks.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_connected_networks.sql rename to src/core/SQL/SQLite/21/select_connected_networks.sql diff --git a/src/core/SQL/SQLite/20/select_identities.sql b/src/core/SQL/SQLite/21/select_identities.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_identities.sql rename to src/core/SQL/SQLite/21/select_identities.sql diff --git a/src/core/SQL/SQLite/20/select_internaluser.sql b/src/core/SQL/SQLite/21/select_internaluser.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_internaluser.sql rename to src/core/SQL/SQLite/21/select_internaluser.sql diff --git a/src/core/SQL/SQLite/20/select_messages.sql b/src/core/SQL/SQLite/21/select_messages.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_messages.sql rename to src/core/SQL/SQLite/21/select_messages.sql diff --git a/src/core/SQL/SQLite/20/select_messagesAll.sql b/src/core/SQL/SQLite/21/select_messagesAll.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_messagesAll.sql rename to src/core/SQL/SQLite/21/select_messagesAll.sql diff --git a/src/core/SQL/SQLite/20/select_messagesAllNew.sql b/src/core/SQL/SQLite/21/select_messagesAllNew.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_messagesAllNew.sql rename to src/core/SQL/SQLite/21/select_messagesAllNew.sql diff --git a/src/core/SQL/SQLite/20/select_messagesNewerThan.sql b/src/core/SQL/SQLite/21/select_messagesNewerThan.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_messagesNewerThan.sql rename to src/core/SQL/SQLite/21/select_messagesNewerThan.sql diff --git a/src/core/SQL/SQLite/20/select_messagesNewestK.sql b/src/core/SQL/SQLite/21/select_messagesNewestK.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_messagesNewestK.sql rename to src/core/SQL/SQLite/21/select_messagesNewestK.sql diff --git a/src/core/SQL/SQLite/20/select_networkExists.sql b/src/core/SQL/SQLite/21/select_networkExists.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_networkExists.sql rename to src/core/SQL/SQLite/21/select_networkExists.sql diff --git a/src/core/SQL/SQLite/20/select_network_awaymsg.sql b/src/core/SQL/SQLite/21/select_network_awaymsg.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_network_awaymsg.sql rename to src/core/SQL/SQLite/21/select_network_awaymsg.sql diff --git a/src/core/SQL/SQLite/20/select_network_usermode.sql b/src/core/SQL/SQLite/21/select_network_usermode.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_network_usermode.sql rename to src/core/SQL/SQLite/21/select_network_usermode.sql diff --git a/src/core/SQL/SQLite/20/select_networks_for_user.sql b/src/core/SQL/SQLite/21/select_networks_for_user.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_networks_for_user.sql rename to src/core/SQL/SQLite/21/select_networks_for_user.sql diff --git a/src/core/SQL/SQLite/20/select_nicks.sql b/src/core/SQL/SQLite/21/select_nicks.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_nicks.sql rename to src/core/SQL/SQLite/21/select_nicks.sql diff --git a/src/core/SQL/SQLite/20/select_persistent_channels.sql b/src/core/SQL/SQLite/21/select_persistent_channels.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_persistent_channels.sql rename to src/core/SQL/SQLite/21/select_persistent_channels.sql diff --git a/src/core/SQL/SQLite/20/select_servers_for_network.sql b/src/core/SQL/SQLite/21/select_servers_for_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_servers_for_network.sql rename to src/core/SQL/SQLite/21/select_servers_for_network.sql diff --git a/src/core/SQL/SQLite/20/select_user_setting.sql b/src/core/SQL/SQLite/21/select_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_user_setting.sql rename to src/core/SQL/SQLite/21/select_user_setting.sql diff --git a/src/core/SQL/SQLite/20/select_userid.sql b/src/core/SQL/SQLite/21/select_userid.sql similarity index 100% rename from src/core/SQL/SQLite/20/select_userid.sql rename to src/core/SQL/SQLite/21/select_userid.sql diff --git a/src/core/SQL/SQLite/20/setup_000_quasseluser.sql b/src/core/SQL/SQLite/21/setup_000_quasseluser.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_000_quasseluser.sql rename to src/core/SQL/SQLite/21/setup_000_quasseluser.sql diff --git a/src/core/SQL/SQLite/20/setup_010_sender.sql b/src/core/SQL/SQLite/21/setup_010_sender.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_010_sender.sql rename to src/core/SQL/SQLite/21/setup_010_sender.sql diff --git a/src/core/SQL/SQLite/20/setup_020_network.sql b/src/core/SQL/SQLite/21/setup_020_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_020_network.sql rename to src/core/SQL/SQLite/21/setup_020_network.sql diff --git a/src/core/SQL/SQLite/20/setup_030_buffer.sql b/src/core/SQL/SQLite/21/setup_030_buffer.sql similarity index 74% rename from src/core/SQL/SQLite/20/setup_030_buffer.sql rename to src/core/SQL/SQLite/21/setup_030_buffer.sql index facb75cd..53ea5429 100644 --- a/src/core/SQL/SQLite/20/setup_030_buffer.sql +++ b/src/core/SQL/SQLite/21/setup_030_buffer.sql @@ -6,8 +6,10 @@ CREATE TABLE buffer ( buffername TEXT NOT NULL, buffercname TEXT 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 TEXT, - joined INTEGER NOT NULL DEFAULT 0 -- BOOL + joined INTEGER NOT NULL DEFAULT 0, -- BOOL + ALTER TABLE buffer_new RENAME TO buffer; ) diff --git a/src/core/SQL/SQLite/20/setup_040_buffer_idx.sql b/src/core/SQL/SQLite/21/setup_040_buffer_idx.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_040_buffer_idx.sql rename to src/core/SQL/SQLite/21/setup_040_buffer_idx.sql diff --git a/src/core/SQL/SQLite/20/setup_050_buffer_cname_idx.sql b/src/core/SQL/SQLite/21/setup_050_buffer_cname_idx.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_050_buffer_cname_idx.sql rename to src/core/SQL/SQLite/21/setup_050_buffer_cname_idx.sql diff --git a/src/core/SQL/SQLite/20/setup_060_backlog.sql b/src/core/SQL/SQLite/21/setup_060_backlog.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_060_backlog.sql rename to src/core/SQL/SQLite/21/setup_060_backlog.sql diff --git a/src/core/SQL/SQLite/20/setup_070_coreinfo.sql b/src/core/SQL/SQLite/21/setup_070_coreinfo.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_070_coreinfo.sql rename to src/core/SQL/SQLite/21/setup_070_coreinfo.sql diff --git a/src/core/SQL/SQLite/20/setup_080_ircservers.sql b/src/core/SQL/SQLite/21/setup_080_ircservers.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_080_ircservers.sql rename to src/core/SQL/SQLite/21/setup_080_ircservers.sql diff --git a/src/core/SQL/SQLite/20/setup_090_backlog_idx.sql b/src/core/SQL/SQLite/21/setup_090_backlog_idx.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_090_backlog_idx.sql rename to src/core/SQL/SQLite/21/setup_090_backlog_idx.sql diff --git a/src/core/SQL/SQLite/20/setup_100_backlog_idx2.sql b/src/core/SQL/SQLite/21/setup_100_backlog_idx2.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_100_backlog_idx2.sql rename to src/core/SQL/SQLite/21/setup_100_backlog_idx2.sql diff --git a/src/core/SQL/SQLite/20/setup_110_buffer_user_idx.sql b/src/core/SQL/SQLite/21/setup_110_buffer_user_idx.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_110_buffer_user_idx.sql rename to src/core/SQL/SQLite/21/setup_110_buffer_user_idx.sql diff --git a/src/core/SQL/SQLite/20/setup_120_user_setting.sql b/src/core/SQL/SQLite/21/setup_120_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_120_user_setting.sql rename to src/core/SQL/SQLite/21/setup_120_user_setting.sql diff --git a/src/core/SQL/SQLite/20/setup_130_identity.sql b/src/core/SQL/SQLite/21/setup_130_identity.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_130_identity.sql rename to src/core/SQL/SQLite/21/setup_130_identity.sql diff --git a/src/core/SQL/SQLite/20/setup_140_identity_nick.sql b/src/core/SQL/SQLite/21/setup_140_identity_nick.sql similarity index 100% rename from src/core/SQL/SQLite/20/setup_140_identity_nick.sql rename to src/core/SQL/SQLite/21/setup_140_identity_nick.sql diff --git a/src/core/SQL/SQLite/20/update_backlog_bufferid.sql b/src/core/SQL/SQLite/21/update_backlog_bufferid.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_backlog_bufferid.sql rename to src/core/SQL/SQLite/21/update_backlog_bufferid.sql diff --git a/src/core/SQL/SQLite/21/update_buffer_lastmsgid.sql b/src/core/SQL/SQLite/21/update_buffer_lastmsgid.sql new file mode 100644 index 00000000..b0f17116 --- /dev/null +++ b/src/core/SQL/SQLite/21/update_buffer_lastmsgid.sql @@ -0,0 +1,3 @@ +UPDATE buffer +SET lastmsgid = :lastmsgid +WHERE bufferid = :bufferid diff --git a/src/core/SQL/SQLite/20/update_buffer_lastseen.sql b/src/core/SQL/SQLite/21/update_buffer_lastseen.sql similarity index 51% rename from src/core/SQL/SQLite/20/update_buffer_lastseen.sql rename to src/core/SQL/SQLite/21/update_buffer_lastseen.sql index 55415050..98218a64 100644 --- a/src/core/SQL/SQLite/20/update_buffer_lastseen.sql +++ b/src/core/SQL/SQLite/21/update_buffer_lastseen.sql @@ -1,3 +1,3 @@ UPDATE buffer -SET lastseenmsgid = :lastseenmsgid +SET lastseenmsgid = min(:lastseenmsgid, buffer.lastmsgid) WHERE userid = :userid AND bufferid = :bufferid diff --git a/src/core/SQL/SQLite/20/update_buffer_markerlinemsgid.sql b/src/core/SQL/SQLite/21/update_buffer_markerlinemsgid.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_buffer_markerlinemsgid.sql rename to src/core/SQL/SQLite/21/update_buffer_markerlinemsgid.sql diff --git a/src/core/SQL/SQLite/20/update_buffer_name.sql b/src/core/SQL/SQLite/21/update_buffer_name.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_buffer_name.sql rename to src/core/SQL/SQLite/21/update_buffer_name.sql diff --git a/src/core/SQL/SQLite/20/update_buffer_persistent_channel.sql b/src/core/SQL/SQLite/21/update_buffer_persistent_channel.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_buffer_persistent_channel.sql rename to src/core/SQL/SQLite/21/update_buffer_persistent_channel.sql diff --git a/src/core/SQL/SQLite/20/update_buffer_set_channel_key.sql b/src/core/SQL/SQLite/21/update_buffer_set_channel_key.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_buffer_set_channel_key.sql rename to src/core/SQL/SQLite/21/update_buffer_set_channel_key.sql diff --git a/src/core/SQL/SQLite/20/update_identity.sql b/src/core/SQL/SQLite/21/update_identity.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_identity.sql rename to src/core/SQL/SQLite/21/update_identity.sql diff --git a/src/core/SQL/SQLite/20/update_network.sql b/src/core/SQL/SQLite/21/update_network.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_network.sql rename to src/core/SQL/SQLite/21/update_network.sql diff --git a/src/core/SQL/SQLite/20/update_network_connected.sql b/src/core/SQL/SQLite/21/update_network_connected.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_network_connected.sql rename to src/core/SQL/SQLite/21/update_network_connected.sql diff --git a/src/core/SQL/SQLite/20/update_network_set_awaymsg.sql b/src/core/SQL/SQLite/21/update_network_set_awaymsg.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_network_set_awaymsg.sql rename to src/core/SQL/SQLite/21/update_network_set_awaymsg.sql diff --git a/src/core/SQL/SQLite/20/update_network_set_usermode.sql b/src/core/SQL/SQLite/21/update_network_set_usermode.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_network_set_usermode.sql rename to src/core/SQL/SQLite/21/update_network_set_usermode.sql diff --git a/src/core/SQL/SQLite/20/update_user_setting.sql b/src/core/SQL/SQLite/21/update_user_setting.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_user_setting.sql rename to src/core/SQL/SQLite/21/update_user_setting.sql diff --git a/src/core/SQL/SQLite/20/update_username.sql b/src/core/SQL/SQLite/21/update_username.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_username.sql rename to src/core/SQL/SQLite/21/update_username.sql diff --git a/src/core/SQL/SQLite/20/update_userpassword.sql b/src/core/SQL/SQLite/21/update_userpassword.sql similarity index 100% rename from src/core/SQL/SQLite/20/update_userpassword.sql rename to src/core/SQL/SQLite/21/update_userpassword.sql diff --git a/src/core/SQL/SQLite/21/upgrade_000_alter_buffer_add_lastmsgid.sql b/src/core/SQL/SQLite/21/upgrade_000_alter_buffer_add_lastmsgid.sql new file mode 100644 index 00000000..35a9017a --- /dev/null +++ b/src/core/SQL/SQLite/21/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/SQLite/21/upgrade_001_update_buffer_set_lastmsgid.sql b/src/core/SQL/SQLite/21/upgrade_001_update_buffer_set_lastmsgid.sql new file mode 100644 index 00000000..221e814a --- /dev/null +++ b/src/core/SQL/SQLite/21/upgrade_001_update_buffer_set_lastmsgid.sql @@ -0,0 +1,8 @@ +UPDATE buffer +SET lastmsgid = ( + SELECT messageid + FROM backlog + WHERE backlog.bufferid = buffer.bufferid + ORDER BY messageid + DESC LIMIT 1 +); diff --git a/src/core/SQL/SQLite/21/upgrade_002_update_buffer_fix_lastseenmsgid_over_lastmsgid.sql b/src/core/SQL/SQLite/21/upgrade_002_update_buffer_fix_lastseenmsgid_over_lastmsgid.sql new file mode 100644 index 00000000..0b71b699 --- /dev/null +++ b/src/core/SQL/SQLite/21/upgrade_002_update_buffer_fix_lastseenmsgid_over_lastmsgid.sql @@ -0,0 +1,3 @@ +UPDATE buffer +SET lastseenmsgid = buffer.lastmsgid +WHERE buffer.lastseenmsgid > buffer.lastmsgid; diff --git a/src/core/SQL/SQLite/21/upgrade_003_create_table_buffer_new.sql b/src/core/SQL/SQLite/21/upgrade_003_create_table_buffer_new.sql new file mode 100644 index 00000000..d0f54e1b --- /dev/null +++ b/src/core/SQL/SQLite/21/upgrade_003_create_table_buffer_new.sql @@ -0,0 +1,15 @@ +CREATE TABLE buffer_new ( + bufferid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + userid INTEGER NOT NULL, + groupid INTEGER, + networkid INTEGER NOT NULL, + buffername TEXT NOT NULL, + buffercname TEXT 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 TEXT, + joined INTEGER NOT NULL DEFAULT 0, -- BOOL + CHECK (lastseenmsgid <= lastmsgid) +); diff --git a/src/core/SQL/SQLite/21/upgrade_004_insert_into_buffer_new_from_buffer.sql b/src/core/SQL/SQLite/21/upgrade_004_insert_into_buffer_new_from_buffer.sql new file mode 100644 index 00000000..08468c3c --- /dev/null +++ b/src/core/SQL/SQLite/21/upgrade_004_insert_into_buffer_new_from_buffer.sql @@ -0,0 +1,28 @@ +INSERT INTO buffer_new ( + bufferid, + userid, + groupid, + networkid, + buffername, + buffercname, + buffertype, + lastmsgid, + lastseenmsgid, + markerlinemsgid, + key, + joined +) +SELECT + bufferid, + userid, + groupid, + networkid, + buffername, + buffercname, + buffertype, + lastmsgid, + lastseenmsgid, + markerlinemsgid, + key, + joined +FROM buffer; diff --git a/src/core/SQL/SQLite/21/upgrade_005_drop_table_buffer.sql b/src/core/SQL/SQLite/21/upgrade_005_drop_table_buffer.sql new file mode 100644 index 00000000..f99ea6a0 --- /dev/null +++ b/src/core/SQL/SQLite/21/upgrade_005_drop_table_buffer.sql @@ -0,0 +1 @@ +DROP TABLE buffer; diff --git a/src/core/SQL/SQLite/21/upgrade_006_alter_table_buffer_new_rename_to_buffer.sql b/src/core/SQL/SQLite/21/upgrade_006_alter_table_buffer_new_rename_to_buffer.sql new file mode 100644 index 00000000..cda47146 --- /dev/null +++ b/src/core/SQL/SQLite/21/upgrade_006_alter_table_buffer_new_rename_to_buffer.sql @@ -0,0 +1,2 @@ +ALTER TABLE buffer_new RENAME TO buffer; + diff --git a/src/core/sql.qrc b/src/core/sql.qrc index 52e2f4ab..bbf41acb 100644 --- a/src/core/sql.qrc +++ b/src/core/sql.qrc @@ -81,7 +81,6 @@ ./SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql ./SQL/PostgreSQL/20/update_backlog_bufferid.sql ./SQL/PostgreSQL/20/update_buffer_lastmsgid.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 @@ -99,6 +98,7 @@ ./SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql ./SQL/PostgreSQL/20/upgrade_003_correct_bad_lastseenmsgid.sql ./SQL/PostgreSQL/20/upgrade_004_add_lastseenmsgid_constraint.sql + ./SQL/PostgreSQL/20/update_buffer_lastseen.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 @@ -131,92 +131,6 @@ ./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 - ./SQL/SQLite/20/delete_buffer_for_bufferid.sql - ./SQL/SQLite/20/delete_buffers_by_uid.sql - ./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_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 - ./SQL/SQLite/20/insert_identity.sql - ./SQL/SQLite/20/insert_message.sql - ./SQL/SQLite/20/insert_network.sql - ./SQL/SQLite/20/insert_nick.sql - ./SQL/SQLite/20/insert_quasseluser.sql - ./SQL/SQLite/20/insert_sender.sql - ./SQL/SQLite/20/insert_server.sql - ./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.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_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_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_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_networkExists.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_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 - ./SQL/SQLite/20/setup_030_buffer.sql - ./SQL/SQLite/20/setup_040_buffer_idx.sql - ./SQL/SQLite/20/setup_050_buffer_cname_idx.sql - ./SQL/SQLite/20/setup_060_backlog.sql - ./SQL/SQLite/20/setup_070_coreinfo.sql - ./SQL/SQLite/20/setup_080_ircservers.sql - ./SQL/SQLite/20/setup_090_backlog_idx.sql - ./SQL/SQLite/20/setup_100_backlog_idx2.sql - ./SQL/SQLite/20/setup_110_buffer_user_idx.sql - ./SQL/SQLite/20/setup_120_user_setting.sql - ./SQL/SQLite/20/setup_130_identity.sql - ./SQL/SQLite/20/setup_140_identity_nick.sql - ./SQL/SQLite/20/update_backlog_bufferid.sql - ./SQL/SQLite/20/update_buffer_lastseen.sql - ./SQL/SQLite/20/update_buffer_markerlinemsgid.sql - ./SQL/SQLite/20/update_buffer_name.sql - ./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_user_setting.sql - ./SQL/SQLite/20/update_username.sql - ./SQL/SQLite/20/update_userpassword.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 @@ -263,5 +177,99 @@ ./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/21/delete_backlog_by_uid.sql + ./SQL/SQLite/21/delete_backlog_for_buffer.sql + ./SQL/SQLite/21/delete_backlog_for_network.sql + ./SQL/SQLite/21/delete_buffer_for_bufferid.sql + ./SQL/SQLite/21/delete_buffers_by_uid.sql + ./SQL/SQLite/21/delete_buffers_for_network.sql + ./SQL/SQLite/21/delete_identity.sql + ./SQL/SQLite/21/delete_ircservers_for_network.sql + ./SQL/SQLite/21/delete_network.sql + ./SQL/SQLite/21/delete_networks_by_uid.sql + ./SQL/SQLite/21/delete_nicks.sql + ./SQL/SQLite/21/delete_quasseluser.sql + ./SQL/SQLite/21/insert_buffer.sql + ./SQL/SQLite/21/insert_identity.sql + ./SQL/SQLite/21/insert_message.sql + ./SQL/SQLite/21/insert_network.sql + ./SQL/SQLite/21/insert_nick.sql + ./SQL/SQLite/21/insert_quasseluser.sql + ./SQL/SQLite/21/insert_sender.sql + ./SQL/SQLite/21/insert_server.sql + ./SQL/SQLite/21/insert_user_setting.sql + ./SQL/SQLite/21/migrate_read_backlog.sql + ./SQL/SQLite/21/migrate_read_buffer.sql + ./SQL/SQLite/21/migrate_read_identity.sql + ./SQL/SQLite/21/migrate_read_identity_nick.sql + ./SQL/SQLite/21/migrate_read_ircserver.sql + ./SQL/SQLite/21/migrate_read_network.sql + ./SQL/SQLite/21/migrate_read_quasseluser.sql + ./SQL/SQLite/21/migrate_read_sender.sql + ./SQL/SQLite/21/migrate_read_usersetting.sql + ./SQL/SQLite/21/select_authuser.sql + ./SQL/SQLite/21/select_bufferByName.sql + ./SQL/SQLite/21/select_bufferExists.sql + ./SQL/SQLite/21/select_buffer_by_id.sql + ./SQL/SQLite/21/select_buffer_lastseen_messages.sql + ./SQL/SQLite/21/select_buffer_markerlinemsgids.sql + ./SQL/SQLite/21/select_buffers.sql + ./SQL/SQLite/21/select_buffers_for_merge.sql + ./SQL/SQLite/21/select_buffers_for_network.sql + ./SQL/SQLite/21/select_checkidentity.sql + ./SQL/SQLite/21/select_connected_networks.sql + ./SQL/SQLite/21/select_identities.sql + ./SQL/SQLite/21/select_internaluser.sql + ./SQL/SQLite/21/select_messages.sql + ./SQL/SQLite/21/select_messagesAll.sql + ./SQL/SQLite/21/select_messagesAllNew.sql + ./SQL/SQLite/21/select_messagesNewerThan.sql + ./SQL/SQLite/21/select_messagesNewestK.sql + ./SQL/SQLite/21/select_networkExists.sql + ./SQL/SQLite/21/select_network_awaymsg.sql + ./SQL/SQLite/21/select_network_usermode.sql + ./SQL/SQLite/21/select_networks_for_user.sql + ./SQL/SQLite/21/select_nicks.sql + ./SQL/SQLite/21/select_persistent_channels.sql + ./SQL/SQLite/21/select_servers_for_network.sql + ./SQL/SQLite/21/select_user_setting.sql + ./SQL/SQLite/21/select_userid.sql + ./SQL/SQLite/21/setup_000_quasseluser.sql + ./SQL/SQLite/21/setup_010_sender.sql + ./SQL/SQLite/21/setup_020_network.sql + ./SQL/SQLite/21/setup_030_buffer.sql + ./SQL/SQLite/21/setup_040_buffer_idx.sql + ./SQL/SQLite/21/setup_050_buffer_cname_idx.sql + ./SQL/SQLite/21/setup_060_backlog.sql + ./SQL/SQLite/21/setup_070_coreinfo.sql + ./SQL/SQLite/21/setup_080_ircservers.sql + ./SQL/SQLite/21/setup_090_backlog_idx.sql + ./SQL/SQLite/21/setup_100_backlog_idx2.sql + ./SQL/SQLite/21/setup_110_buffer_user_idx.sql + ./SQL/SQLite/21/setup_120_user_setting.sql + ./SQL/SQLite/21/setup_130_identity.sql + ./SQL/SQLite/21/setup_140_identity_nick.sql + ./SQL/SQLite/21/update_backlog_bufferid.sql + ./SQL/SQLite/21/update_buffer_markerlinemsgid.sql + ./SQL/SQLite/21/update_buffer_name.sql + ./SQL/SQLite/21/update_buffer_persistent_channel.sql + ./SQL/SQLite/21/update_buffer_set_channel_key.sql + ./SQL/SQLite/21/update_identity.sql + ./SQL/SQLite/21/update_network.sql + ./SQL/SQLite/21/update_network_connected.sql + ./SQL/SQLite/21/update_network_set_awaymsg.sql + ./SQL/SQLite/21/update_network_set_usermode.sql + ./SQL/SQLite/21/update_user_setting.sql + ./SQL/SQLite/21/update_username.sql + ./SQL/SQLite/21/update_userpassword.sql + ./SQL/SQLite/21/upgrade_000_alter_buffer_add_lastmsgid.sql + ./SQL/SQLite/21/upgrade_001_update_buffer_set_lastmsgid.sql + ./SQL/SQLite/21/upgrade_002_update_buffer_fix_lastseenmsgid_over_lastmsgid.sql + ./SQL/SQLite/21/upgrade_003_create_table_buffer_new.sql + ./SQL/SQLite/21/upgrade_004_insert_into_buffer_new_from_buffer.sql + ./SQL/SQLite/21/upgrade_006_alter_table_buffer_new_rename_to_buffer.sql + ./SQL/SQLite/21/update_buffer_lastmsgid.sql + ./SQL/SQLite/21/update_buffer_lastseen.sql + ./SQL/SQLite/21/upgrade_005_drop_table_buffer.sql diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 53601e0f..022db0e8 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -1475,6 +1475,16 @@ QHash SqliteStorage::bufferMarkerLineMsgIds(UserId user) return markerLineHash; } +void SqliteStorage::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 SqliteStorage::logMessage(Message &msg) { @@ -1514,6 +1524,8 @@ bool SqliteStorage::logMessage(Message &msg) MsgId msgId = logMessageQuery.lastInsertId().toInt(); if (msgId.isValid()) { msg.setMsgId(msgId); + + setBufferLastMsg(msg.bufferInfo().bufferId(), msgId); } else { error = true; diff --git a/src/core/sqlitestorage.h b/src/core/sqlitestorage.h index 9a12fbef..f66e70f5 100644 --- a/src/core/sqlitestorage.h +++ b/src/core/sqlitestorage.h @@ -96,6 +96,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);