Merge pull request #273 from ReimuHakurei/master
authorMarcus Eggenberger <dev@egs.name>
Sat, 4 Mar 2017 14:37:15 +0000 (15:37 +0100)
committerGitHub <noreply@github.com>
Sat, 4 Mar 2017 14:37:15 +0000 (15:37 +0100)
Improve performance of PostgreSQL database in instances where buffers exist with no recent activity

192 files changed:
src/core/SQL/PostgreSQL/19/select_messages.sql [deleted file]
src/core/SQL/PostgreSQL/19/select_messagesNewerThan.sql [deleted file]
src/core/SQL/PostgreSQL/20/delete_backlog_by_uid.sql [moved from src/core/SQL/PostgreSQL/19/delete_backlog_by_uid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_backlog_for_buffer.sql [moved from src/core/SQL/PostgreSQL/19/delete_backlog_for_buffer.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_backlog_for_network.sql [moved from src/core/SQL/PostgreSQL/19/delete_backlog_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_buffer_for_bufferid.sql [moved from src/core/SQL/PostgreSQL/19/delete_buffer_for_bufferid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_buffers_by_uid.sql [moved from src/core/SQL/PostgreSQL/19/delete_buffers_by_uid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_buffers_for_network.sql [moved from src/core/SQL/PostgreSQL/19/delete_buffers_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_identity.sql [moved from src/core/SQL/PostgreSQL/19/delete_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_ircservers_for_network.sql [moved from src/core/SQL/PostgreSQL/19/delete_ircservers_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_network.sql [moved from src/core/SQL/PostgreSQL/19/delete_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_networks_by_uid.sql [moved from src/core/SQL/PostgreSQL/19/delete_networks_by_uid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_nicks.sql [moved from src/core/SQL/PostgreSQL/19/delete_nicks.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/delete_quasseluser.sql [moved from src/core/SQL/PostgreSQL/19/delete_quasseluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_buffer.sql [moved from src/core/SQL/PostgreSQL/19/insert_buffer.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_identity.sql [moved from src/core/SQL/PostgreSQL/19/insert_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_message.sql [moved from src/core/SQL/PostgreSQL/19/insert_message.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_network.sql [moved from src/core/SQL/PostgreSQL/19/insert_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_nick.sql [moved from src/core/SQL/PostgreSQL/19/insert_nick.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_quasseluser.sql [moved from src/core/SQL/PostgreSQL/19/insert_quasseluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_sender.sql [moved from src/core/SQL/PostgreSQL/19/insert_sender.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_server.sql [moved from src/core/SQL/PostgreSQL/19/insert_server.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/insert_user_setting.sql [moved from src/core/SQL/PostgreSQL/19/insert_user_setting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_backlog.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_backlog.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_buffer.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_buffer.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_identity.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_identity_nick.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_identity_nick.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_ircserver.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_ircserver.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_network.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_quasseluser.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_quasseluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_sender.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_sender.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/migrate_write_usersetting.sql [moved from src/core/SQL/PostgreSQL/19/migrate_write_usersetting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_authuser.sql [moved from src/core/SQL/PostgreSQL/19/select_authuser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_bufferByName.sql [moved from src/core/SQL/PostgreSQL/19/select_bufferByName.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_bufferExists.sql [moved from src/core/SQL/PostgreSQL/19/select_bufferExists.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffer_by_id.sql [moved from src/core/SQL/PostgreSQL/19/select_buffer_by_id.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffer_lastseen_messages.sql [moved from src/core/SQL/PostgreSQL/19/select_buffer_lastseen_messages.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffer_markerlinemsgids.sql [moved from src/core/SQL/PostgreSQL/19/select_buffer_markerlinemsgids.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffers.sql [moved from src/core/SQL/PostgreSQL/19/select_buffers.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_buffers_for_network.sql [moved from src/core/SQL/PostgreSQL/19/select_buffers_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_checkidentity.sql [moved from src/core/SQL/PostgreSQL/19/select_checkidentity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_connected_networks.sql [moved from src/core/SQL/PostgreSQL/19/select_connected_networks.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_identities.sql [moved from src/core/SQL/PostgreSQL/19/select_identities.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_internaluser.sql [moved from src/core/SQL/PostgreSQL/19/select_internaluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_messages.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/select_messagesAll.sql [moved from src/core/SQL/PostgreSQL/19/select_messagesAll.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_messagesAllNew.sql [moved from src/core/SQL/PostgreSQL/19/select_messagesAllNew.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/select_messagesRange.sql [moved from src/core/SQL/PostgreSQL/19/select_messagesRange.sql with 73% similarity]
src/core/SQL/PostgreSQL/20/select_networkExists.sql [moved from src/core/SQL/PostgreSQL/19/select_networkExists.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_network_awaymsg.sql [moved from src/core/SQL/PostgreSQL/19/select_network_awaymsg.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_network_usermode.sql [moved from src/core/SQL/PostgreSQL/19/select_network_usermode.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_networks_for_user.sql [moved from src/core/SQL/PostgreSQL/19/select_networks_for_user.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_nicks.sql [moved from src/core/SQL/PostgreSQL/19/select_nicks.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_persistent_channels.sql [moved from src/core/SQL/PostgreSQL/19/select_persistent_channels.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_senderid.sql [moved from src/core/SQL/PostgreSQL/19/select_senderid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_servers_for_network.sql [moved from src/core/SQL/PostgreSQL/19/select_servers_for_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_user_setting.sql [moved from src/core/SQL/PostgreSQL/19/select_user_setting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/select_userid.sql [moved from src/core/SQL/PostgreSQL/19/select_userid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_000_quasseluser.sql [moved from src/core/SQL/PostgreSQL/19/setup_000_quasseluser.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_010_sender.sql [moved from src/core/SQL/PostgreSQL/19/setup_010_sender.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_020_identity.sql [moved from src/core/SQL/PostgreSQL/19/setup_020_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_030_identity_nick.sql [moved from src/core/SQL/PostgreSQL/19/setup_030_identity_nick.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_040_network.sql [moved from src/core/SQL/PostgreSQL/19/setup_040_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_050_buffer.sql [moved from src/core/SQL/PostgreSQL/19/setup_050_buffer.sql with 79% similarity]
src/core/SQL/PostgreSQL/20/setup_060_backlog.sql [moved from src/core/SQL/PostgreSQL/19/setup_060_backlog.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_070_coreinfo.sql [moved from src/core/SQL/PostgreSQL/19/setup_070_coreinfo.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_080_ircservers.sql [moved from src/core/SQL/PostgreSQL/19/setup_080_ircservers.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_090_backlog_idx.sql [moved from src/core/SQL/PostgreSQL/19/setup_090_backlog_idx.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_100_user_setting.sql [moved from src/core/SQL/PostgreSQL/19/setup_100_user_setting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_110_alter_sender_seq.sql [moved from src/core/SQL/PostgreSQL/19/setup_110_alter_sender_seq.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_120_alter_messageid_seq.sql [moved from src/core/SQL/PostgreSQL/19/setup_120_alter_messageid_seq.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/update_backlog_bufferid.sql [moved from src/core/SQL/PostgreSQL/19/update_backlog_bufferid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/update_buffer_lastseen.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_lastseen.sql with 51% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_markerlinemsgid.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_markerlinemsgid.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_name.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_name.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_persistent_channel.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_persistent_channel.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_buffer_set_channel_key.sql [moved from src/core/SQL/PostgreSQL/19/update_buffer_set_channel_key.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_identity.sql [moved from src/core/SQL/PostgreSQL/19/update_identity.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_network.sql [moved from src/core/SQL/PostgreSQL/19/update_network.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_network_connected.sql [moved from src/core/SQL/PostgreSQL/19/update_network_connected.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_network_set_awaymsg.sql [moved from src/core/SQL/PostgreSQL/19/update_network_set_awaymsg.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_network_set_usermode.sql [moved from src/core/SQL/PostgreSQL/19/update_network_set_usermode.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_user_setting.sql [moved from src/core/SQL/PostgreSQL/19/update_user_setting.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_username.sql [moved from src/core/SQL/PostgreSQL/19/update_username.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/update_userpassword.sql [moved from src/core/SQL/PostgreSQL/19/update_userpassword.sql with 100% similarity]
src/core/SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/upgrade_003_correct_bad_lastseenmsgid.sql [new file with mode: 0644]
src/core/SQL/PostgreSQL/20/upgrade_004_add_lastseenmsgid_constraint.sql [new file with mode: 0644]
src/core/SQL/SQLite/21/delete_backlog_by_uid.sql [moved from src/core/SQL/SQLite/20/delete_backlog_by_uid.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_backlog_for_buffer.sql [moved from src/core/SQL/SQLite/20/delete_backlog_for_buffer.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_backlog_for_network.sql [moved from src/core/SQL/SQLite/20/delete_backlog_for_network.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_buffer_for_bufferid.sql [moved from src/core/SQL/SQLite/20/delete_buffer_for_bufferid.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_buffers_by_uid.sql [moved from src/core/SQL/SQLite/20/delete_buffers_by_uid.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_buffers_for_network.sql [moved from src/core/SQL/SQLite/20/delete_buffers_for_network.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_identity.sql [moved from src/core/SQL/SQLite/20/delete_identity.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_ircservers_for_network.sql [moved from src/core/SQL/SQLite/20/delete_ircservers_for_network.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_network.sql [moved from src/core/SQL/SQLite/20/delete_network.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_networks_by_uid.sql [moved from src/core/SQL/SQLite/20/delete_networks_by_uid.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_nicks.sql [moved from src/core/SQL/SQLite/20/delete_nicks.sql with 100% similarity]
src/core/SQL/SQLite/21/delete_quasseluser.sql [moved from src/core/SQL/SQLite/20/delete_quasseluser.sql with 100% similarity]
src/core/SQL/SQLite/21/insert_buffer.sql [moved from src/core/SQL/SQLite/20/insert_buffer.sql with 100% similarity]
src/core/SQL/SQLite/21/insert_identity.sql [moved from src/core/SQL/SQLite/20/insert_identity.sql with 100% similarity]
src/core/SQL/SQLite/21/insert_message.sql [moved from src/core/SQL/SQLite/20/insert_message.sql with 100% similarity]
src/core/SQL/SQLite/21/insert_network.sql [moved from src/core/SQL/SQLite/20/insert_network.sql with 100% similarity]
src/core/SQL/SQLite/21/insert_nick.sql [moved from src/core/SQL/SQLite/20/insert_nick.sql with 100% similarity]
src/core/SQL/SQLite/21/insert_quasseluser.sql [moved from src/core/SQL/SQLite/20/insert_quasseluser.sql with 100% similarity]
src/core/SQL/SQLite/21/insert_sender.sql [moved from src/core/SQL/SQLite/20/insert_sender.sql with 100% similarity]
src/core/SQL/SQLite/21/insert_server.sql [moved from src/core/SQL/SQLite/20/insert_server.sql with 100% similarity]
src/core/SQL/SQLite/21/insert_user_setting.sql [moved from src/core/SQL/SQLite/20/insert_user_setting.sql with 100% similarity]
src/core/SQL/SQLite/21/migrate_read_backlog.sql [moved from src/core/SQL/SQLite/20/migrate_read_backlog.sql with 100% similarity]
src/core/SQL/SQLite/21/migrate_read_buffer.sql [moved from src/core/SQL/SQLite/20/migrate_read_buffer.sql with 100% similarity]
src/core/SQL/SQLite/21/migrate_read_identity.sql [moved from src/core/SQL/SQLite/20/migrate_read_identity.sql with 100% similarity]
src/core/SQL/SQLite/21/migrate_read_identity_nick.sql [moved from src/core/SQL/SQLite/20/migrate_read_identity_nick.sql with 100% similarity]
src/core/SQL/SQLite/21/migrate_read_ircserver.sql [moved from src/core/SQL/SQLite/20/migrate_read_ircserver.sql with 100% similarity]
src/core/SQL/SQLite/21/migrate_read_network.sql [moved from src/core/SQL/SQLite/20/migrate_read_network.sql with 100% similarity]
src/core/SQL/SQLite/21/migrate_read_quasseluser.sql [moved from src/core/SQL/SQLite/20/migrate_read_quasseluser.sql with 100% similarity]
src/core/SQL/SQLite/21/migrate_read_sender.sql [moved from src/core/SQL/SQLite/20/migrate_read_sender.sql with 100% similarity]
src/core/SQL/SQLite/21/migrate_read_usersetting.sql [moved from src/core/SQL/SQLite/20/migrate_read_usersetting.sql with 100% similarity]
src/core/SQL/SQLite/21/select_authuser.sql [moved from src/core/SQL/SQLite/20/select_authuser.sql with 100% similarity]
src/core/SQL/SQLite/21/select_bufferByName.sql [moved from src/core/SQL/SQLite/20/select_bufferByName.sql with 100% similarity]
src/core/SQL/SQLite/21/select_bufferExists.sql [moved from src/core/SQL/SQLite/20/select_bufferExists.sql with 100% similarity]
src/core/SQL/SQLite/21/select_buffer_by_id.sql [moved from src/core/SQL/SQLite/20/select_buffer_by_id.sql with 100% similarity]
src/core/SQL/SQLite/21/select_buffer_lastseen_messages.sql [moved from src/core/SQL/SQLite/20/select_buffer_lastseen_messages.sql with 100% similarity]
src/core/SQL/SQLite/21/select_buffer_markerlinemsgids.sql [moved from src/core/SQL/SQLite/20/select_buffer_markerlinemsgids.sql with 100% similarity]
src/core/SQL/SQLite/21/select_buffers.sql [moved from src/core/SQL/SQLite/20/select_buffers.sql with 100% similarity]
src/core/SQL/SQLite/21/select_buffers_for_merge.sql [moved from src/core/SQL/SQLite/20/select_buffers_for_merge.sql with 100% similarity]
src/core/SQL/SQLite/21/select_buffers_for_network.sql [moved from src/core/SQL/SQLite/20/select_buffers_for_network.sql with 100% similarity]
src/core/SQL/SQLite/21/select_checkidentity.sql [moved from src/core/SQL/SQLite/20/select_checkidentity.sql with 100% similarity]
src/core/SQL/SQLite/21/select_connected_networks.sql [moved from src/core/SQL/SQLite/20/select_connected_networks.sql with 100% similarity]
src/core/SQL/SQLite/21/select_identities.sql [moved from src/core/SQL/SQLite/20/select_identities.sql with 100% similarity]
src/core/SQL/SQLite/21/select_internaluser.sql [moved from src/core/SQL/SQLite/20/select_internaluser.sql with 100% similarity]
src/core/SQL/SQLite/21/select_messages.sql [moved from src/core/SQL/SQLite/20/select_messages.sql with 100% similarity]
src/core/SQL/SQLite/21/select_messagesAll.sql [moved from src/core/SQL/SQLite/20/select_messagesAll.sql with 100% similarity]
src/core/SQL/SQLite/21/select_messagesAllNew.sql [moved from src/core/SQL/SQLite/20/select_messagesAllNew.sql with 100% similarity]
src/core/SQL/SQLite/21/select_messagesNewerThan.sql [moved from src/core/SQL/SQLite/20/select_messagesNewerThan.sql with 100% similarity]
src/core/SQL/SQLite/21/select_messagesNewestK.sql [moved from src/core/SQL/SQLite/20/select_messagesNewestK.sql with 100% similarity]
src/core/SQL/SQLite/21/select_networkExists.sql [moved from src/core/SQL/SQLite/20/select_networkExists.sql with 100% similarity]
src/core/SQL/SQLite/21/select_network_awaymsg.sql [moved from src/core/SQL/SQLite/20/select_network_awaymsg.sql with 100% similarity]
src/core/SQL/SQLite/21/select_network_usermode.sql [moved from src/core/SQL/SQLite/20/select_network_usermode.sql with 100% similarity]
src/core/SQL/SQLite/21/select_networks_for_user.sql [moved from src/core/SQL/SQLite/20/select_networks_for_user.sql with 100% similarity]
src/core/SQL/SQLite/21/select_nicks.sql [moved from src/core/SQL/SQLite/20/select_nicks.sql with 100% similarity]
src/core/SQL/SQLite/21/select_persistent_channels.sql [moved from src/core/SQL/SQLite/20/select_persistent_channels.sql with 100% similarity]
src/core/SQL/SQLite/21/select_servers_for_network.sql [moved from src/core/SQL/SQLite/20/select_servers_for_network.sql with 100% similarity]
src/core/SQL/SQLite/21/select_user_setting.sql [moved from src/core/SQL/SQLite/20/select_user_setting.sql with 100% similarity]
src/core/SQL/SQLite/21/select_userid.sql [moved from src/core/SQL/SQLite/20/select_userid.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_000_quasseluser.sql [moved from src/core/SQL/SQLite/20/setup_000_quasseluser.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_010_sender.sql [moved from src/core/SQL/SQLite/20/setup_010_sender.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_020_network.sql [moved from src/core/SQL/SQLite/20/setup_020_network.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_030_buffer.sql [moved from src/core/SQL/SQLite/20/setup_030_buffer.sql with 74% similarity]
src/core/SQL/SQLite/21/setup_040_buffer_idx.sql [moved from src/core/SQL/SQLite/20/setup_040_buffer_idx.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_050_buffer_cname_idx.sql [moved from src/core/SQL/SQLite/20/setup_050_buffer_cname_idx.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_060_backlog.sql [moved from src/core/SQL/SQLite/20/setup_060_backlog.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_070_coreinfo.sql [moved from src/core/SQL/SQLite/20/setup_070_coreinfo.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_080_ircservers.sql [moved from src/core/SQL/SQLite/20/setup_080_ircservers.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_090_backlog_idx.sql [moved from src/core/SQL/SQLite/20/setup_090_backlog_idx.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_100_backlog_idx2.sql [moved from src/core/SQL/SQLite/20/setup_100_backlog_idx2.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_110_buffer_user_idx.sql [moved from src/core/SQL/SQLite/20/setup_110_buffer_user_idx.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_120_user_setting.sql [moved from src/core/SQL/SQLite/20/setup_120_user_setting.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_130_identity.sql [moved from src/core/SQL/SQLite/20/setup_130_identity.sql with 100% similarity]
src/core/SQL/SQLite/21/setup_140_identity_nick.sql [moved from src/core/SQL/SQLite/20/setup_140_identity_nick.sql with 100% similarity]
src/core/SQL/SQLite/21/update_backlog_bufferid.sql [moved from src/core/SQL/SQLite/20/update_backlog_bufferid.sql with 100% similarity]
src/core/SQL/SQLite/21/update_buffer_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/SQLite/21/update_buffer_lastseen.sql [moved from src/core/SQL/SQLite/20/update_buffer_lastseen.sql with 51% similarity]
src/core/SQL/SQLite/21/update_buffer_markerlinemsgid.sql [moved from src/core/SQL/SQLite/20/update_buffer_markerlinemsgid.sql with 100% similarity]
src/core/SQL/SQLite/21/update_buffer_name.sql [moved from src/core/SQL/SQLite/20/update_buffer_name.sql with 100% similarity]
src/core/SQL/SQLite/21/update_buffer_persistent_channel.sql [moved from src/core/SQL/SQLite/20/update_buffer_persistent_channel.sql with 100% similarity]
src/core/SQL/SQLite/21/update_buffer_set_channel_key.sql [moved from src/core/SQL/SQLite/20/update_buffer_set_channel_key.sql with 100% similarity]
src/core/SQL/SQLite/21/update_identity.sql [moved from src/core/SQL/SQLite/20/update_identity.sql with 100% similarity]
src/core/SQL/SQLite/21/update_network.sql [moved from src/core/SQL/SQLite/20/update_network.sql with 100% similarity]
src/core/SQL/SQLite/21/update_network_connected.sql [moved from src/core/SQL/SQLite/20/update_network_connected.sql with 100% similarity]
src/core/SQL/SQLite/21/update_network_set_awaymsg.sql [moved from src/core/SQL/SQLite/20/update_network_set_awaymsg.sql with 100% similarity]
src/core/SQL/SQLite/21/update_network_set_usermode.sql [moved from src/core/SQL/SQLite/20/update_network_set_usermode.sql with 100% similarity]
src/core/SQL/SQLite/21/update_user_setting.sql [moved from src/core/SQL/SQLite/20/update_user_setting.sql with 100% similarity]
src/core/SQL/SQLite/21/update_username.sql [moved from src/core/SQL/SQLite/20/update_username.sql with 100% similarity]
src/core/SQL/SQLite/21/update_userpassword.sql [moved from src/core/SQL/SQLite/20/update_userpassword.sql with 100% similarity]
src/core/SQL/SQLite/21/upgrade_000_alter_buffer_add_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/SQLite/21/upgrade_001_update_buffer_set_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/SQLite/21/upgrade_002_update_buffer_fix_lastseenmsgid_over_lastmsgid.sql [new file with mode: 0644]
src/core/SQL/SQLite/21/upgrade_003_create_table_buffer_new.sql [new file with mode: 0644]
src/core/SQL/SQLite/21/upgrade_004_insert_into_buffer_new_from_buffer.sql [new file with mode: 0644]
src/core/SQL/SQLite/21/upgrade_005_drop_table_buffer.sql [new file with mode: 0644]
src/core/SQL/SQLite/21/upgrade_006_alter_table_buffer_new_rename_to_buffer.sql [new file with mode: 0644]
src/core/postgresqlstorage.cpp
src/core/postgresqlstorage.h
src/core/sql.qrc
src/core/sqlitestorage.cpp
src/core/sqlitestorage.h

diff --git a/src/core/SQL/PostgreSQL/19/select_messages.sql b/src/core/SQL/PostgreSQL/19/select_messages.sql
deleted file mode 100644 (file)
index 1bd2683..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SELECT messageid, time,  type, flags, sender, message
-FROM backlog
-LEFT JOIN sender ON backlog.senderid = sender.senderid
-WHERE bufferid = $1
-ORDER BY messageid DESC
-LIMIT $2
\ No newline at end of file
diff --git a/src/core/SQL/PostgreSQL/19/select_messagesNewerThan.sql b/src/core/SQL/PostgreSQL/19/select_messagesNewerThan.sql
deleted file mode 100644 (file)
index 393d3cf..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SELECT messageid, time,  type, flags, sender, message
-FROM backlog
-LEFT JOIN sender ON backlog.senderid = sender.senderid
-WHERE backlog.messageid >= $1 AND bufferid = $2
-ORDER BY messageid DESC
-LIMIT $3
\ No newline at end of file
diff --git a/src/core/SQL/PostgreSQL/20/select_messages.sql b/src/core/SQL/PostgreSQL/20/select_messages.sql
new file mode 100644 (file)
index 0000000..50be2e3
--- /dev/null
@@ -0,0 +1,7 @@
+SELECT messageid, time,  type, flags, sender, message
+FROM backlog
+JOIN sender ON backlog.senderid = sender.senderid
+WHERE bufferid = $1
+AND backlog.messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = $1)
+ORDER BY messageid DESC
+LIMIT $2
diff --git a/src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql b/src/core/SQL/PostgreSQL/20/select_messagesNewerThan.sql
new file mode 100644 (file)
index 0000000..881ce5e
--- /dev/null
@@ -0,0 +1,8 @@
+SELECT messageid, time,  type, flags, sender, message
+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 bufferid = $2
+ORDER BY messageid DESC
+LIMIT $3
@@ -1,8 +1,8 @@
 SELECT messageid, time,  type, flags, sender, message
 FROM backlog
-LEFT JOIN sender ON backlog.senderid = sender.senderid
+JOIN sender ON backlog.senderid = sender.senderid
 WHERE backlog.messageid >= $1
     AND backlog.messageid < $2
     AND bufferid = $3
 ORDER BY messageid DESC
-LIMIT $4
\ No newline at end of file
+LIMIT $4
@@ -6,9 +6,11 @@ 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),
        joined boolean NOT NULL DEFAULT FALSE, -- BOOL
-       UNIQUE(userid, networkid, buffercname)
+       UNIQUE(userid, networkid, buffercname),
+       CHECK (buffer.lastseenmsgid <= buffer.lastmsgid)
 )
diff --git a/src/core/SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql
new file mode 100644 (file)
index 0000000..561422a
--- /dev/null
@@ -0,0 +1,18 @@
+CREATE OR REPLACE FUNCTION populate_lastmsgid() RETURNS void AS $$
+DECLARE
+       i buffer%rowtype;
+BEGIN
+       FOR i IN SELECT * FROM buffer
+       LOOP
+               UPDATE buffer
+                       SET lastmsgid = (
+                               SELECT backlog.messageid
+                               FROM backlog
+                               WHERE backlog.bufferid = i.bufferid
+                               ORDER BY messageid DESC LIMIT 1
+                       )
+                       WHERE buffer.bufferid = i.bufferid;
+       END LOOP;
+       RETURN;
+END
+$$ LANGUAGE plpgsql;
diff --git a/src/core/SQL/PostgreSQL/20/update_buffer_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/update_buffer_lastmsgid.sql
new file mode 100644 (file)
index 0000000..b0f1711
--- /dev/null
@@ -0,0 +1,3 @@
+UPDATE buffer
+SET lastmsgid = :lastmsgid
+WHERE bufferid = :bufferid
@@ -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/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql
new file mode 100644 (file)
index 0000000..509dc68
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE buffer
+ADD COLUMN lastmsgid integer NOT NULL DEFAULT 0
diff --git a/src/core/SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql
new file mode 100644 (file)
index 0000000..561422a
--- /dev/null
@@ -0,0 +1,18 @@
+CREATE OR REPLACE FUNCTION populate_lastmsgid() RETURNS void AS $$
+DECLARE
+       i buffer%rowtype;
+BEGIN
+       FOR i IN SELECT * FROM buffer
+       LOOP
+               UPDATE buffer
+                       SET lastmsgid = (
+                               SELECT backlog.messageid
+                               FROM backlog
+                               WHERE backlog.bufferid = i.bufferid
+                               ORDER BY messageid DESC LIMIT 1
+                       )
+                       WHERE buffer.bufferid = i.bufferid;
+       END LOOP;
+       RETURN;
+END
+$$ LANGUAGE plpgsql;
diff --git a/src/core/SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql b/src/core/SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql
new file mode 100644 (file)
index 0000000..a3ba124
--- /dev/null
@@ -0,0 +1 @@
+SELECT populate_lastmsgid()
diff --git a/src/core/SQL/PostgreSQL/20/upgrade_003_correct_bad_lastseenmsgid.sql b/src/core/SQL/PostgreSQL/20/upgrade_003_correct_bad_lastseenmsgid.sql
new file mode 100644 (file)
index 0000000..a09dea1
--- /dev/null
@@ -0,0 +1,3 @@
+UPDATE buffer
+SET lastseenmsgid = buffer.lastmsgid
+WHERE buffer.lastseenmsgid > buffer.lastmsgid
diff --git a/src/core/SQL/PostgreSQL/20/upgrade_004_add_lastseenmsgid_constraint.sql b/src/core/SQL/PostgreSQL/20/upgrade_004_add_lastseenmsgid_constraint.sql
new file mode 100644 (file)
index 0000000..da37927
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE buffer ADD CONSTRAINT badLastSeenMsgId CHECK (buffer.lastseenmsgid <= buffer.lastmsgid)
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 facb75c..53ea542 100644 (file)
@@ -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/21/update_buffer_lastmsgid.sql b/src/core/SQL/SQLite/21/update_buffer_lastmsgid.sql
new file mode 100644 (file)
index 0000000..b0f1711
--- /dev/null
@@ -0,0 +1,3 @@
+UPDATE buffer
+SET lastmsgid = :lastmsgid
+WHERE bufferid = :bufferid
@@ -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/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 (file)
index 0000000..35a9017
--- /dev/null
@@ -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 (file)
index 0000000..221e814
--- /dev/null
@@ -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 (file)
index 0000000..0b71b69
--- /dev/null
@@ -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 (file)
index 0000000..d0f54e1
--- /dev/null
@@ -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 (file)
index 0000000..08468c3
--- /dev/null
@@ -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 (file)
index 0000000..f99ea6a
--- /dev/null
@@ -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 (file)
index 0000000..cda4714
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE buffer_new RENAME TO buffer;
+
index d6b8244..05da7a1 100644 (file)
@@ -1370,6 +1370,16 @@ QHash<BufferId, MsgId> PostgreSqlStorage::bufferMarkerLineMsgIds(UserId user)
     return markerLineHash;
 }
 
+void PostgreSqlStorage::setBufferLastMsg(const BufferId &bufferId, const MsgId &msgId)
+{
+    QSqlQuery query(logDb());
+    query.prepare(queryString("update_buffer_lastmsgid"));
+
+    query.bindValue(":bufferid", bufferId.toInt());
+    query.bindValue(":lastmsgid", msgId.toInt());
+    safeExec(query);
+    watchQuery(query);
+}
 
 bool PostgreSqlStorage::logMessage(Message &msg)
 {
@@ -1424,6 +1434,9 @@ bool PostgreSqlStorage::logMessage(Message &msg)
     db.commit();
     if (msgId.isValid()) {
         msg.setMsgId(msgId);
+
+        setBufferLastMsg(msg.bufferInfo().bufferId(), msgId);
+
         return true;
     }
     else {
@@ -2029,5 +2042,9 @@ bool PostgreSqlMigrationWriter::postProcess()
         if (!exec())
             return false;
     }
+
+    newQuery(QString("SELECT populate_lastmsgid()"), db);
+    if (!exec())
+        return false;
     return true;
 }
index c96687e..062aa0a 100644 (file)
@@ -95,6 +95,7 @@ public slots:
     virtual QHash<BufferId, MsgId> bufferLastSeenMsgIds(UserId user);
     virtual void setBufferMarkerLineMsg(UserId user, const BufferId &bufferId, const MsgId &msgId);
     virtual QHash<BufferId, MsgId> bufferMarkerLineMsgIds(UserId user);
+    virtual void setBufferLastMsg(const BufferId &bufferId, const MsgId &msgId);
 
     /* Message handling */
     virtual bool logMessage(Message &msg);
index be7a843..bbf41ac 100644 (file)
 <!DOCTYPE RCC><RCC version="1.0">
 <qresource>
+    <file>./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql</file>
+    <file>./SQL/PostgreSQL/16/upgrade_000_alter_network_add_sasl.sql</file>
+    <file>./SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql</file>
+    <file>./SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql</file>
+    <file>./SQL/PostgreSQL/19/upgrade_000_alter_network_add_ratelimit_usecustom.sql</file>
+    <file>./SQL/PostgreSQL/19/upgrade_001_alter_network_add_ratelimit_burstsize.sql</file>
+    <file>./SQL/PostgreSQL/19/upgrade_002_alter_network_add_ratelimit_delay.sql</file>
+    <file>./SQL/PostgreSQL/19/upgrade_003_alter_network_add_ratelimit_unlimited.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_backlog_by_uid.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_backlog_for_buffer.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_backlog_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_buffer_for_bufferid.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_buffers_by_uid.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_buffers_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_ircservers_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_network.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_networks_by_uid.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_nicks.sql</file>
+    <file>./SQL/PostgreSQL/20/delete_quasseluser.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_buffer.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_message.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_network.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_nick.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_quasseluser.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_sender.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_server.sql</file>
+    <file>./SQL/PostgreSQL/20/insert_user_setting.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_backlog.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_buffer.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_identity_nick.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_ircserver.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_network.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_quasseluser.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_sender.sql</file>
+    <file>./SQL/PostgreSQL/20/migrate_write_usersetting.sql</file>
+    <file>./SQL/PostgreSQL/20/select_authuser.sql</file>
+    <file>./SQL/PostgreSQL/20/select_bufferByName.sql</file>
+    <file>./SQL/PostgreSQL/20/select_bufferExists.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffer_by_id.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffer_lastseen_messages.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffer_markerlinemsgids.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffers.sql</file>
+    <file>./SQL/PostgreSQL/20/select_buffers_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/select_checkidentity.sql</file>
+    <file>./SQL/PostgreSQL/20/select_connected_networks.sql</file>
+    <file>./SQL/PostgreSQL/20/select_identities.sql</file>
+    <file>./SQL/PostgreSQL/20/select_internaluser.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messages.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messagesAll.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messagesAllNew.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messagesNewerThan.sql</file>
+    <file>./SQL/PostgreSQL/20/select_messagesRange.sql</file>
+    <file>./SQL/PostgreSQL/20/select_networkExists.sql</file>
+    <file>./SQL/PostgreSQL/20/select_network_awaymsg.sql</file>
+    <file>./SQL/PostgreSQL/20/select_network_usermode.sql</file>
+    <file>./SQL/PostgreSQL/20/select_networks_for_user.sql</file>
+    <file>./SQL/PostgreSQL/20/select_nicks.sql</file>
+    <file>./SQL/PostgreSQL/20/select_persistent_channels.sql</file>
+    <file>./SQL/PostgreSQL/20/select_senderid.sql</file>
+    <file>./SQL/PostgreSQL/20/select_servers_for_network.sql</file>
+    <file>./SQL/PostgreSQL/20/select_user_setting.sql</file>
+    <file>./SQL/PostgreSQL/20/select_userid.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_000_quasseluser.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_010_sender.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_020_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_030_identity_nick.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_040_network.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_050_buffer.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_060_backlog.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_070_coreinfo.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_080_ircservers.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_090_backlog_idx.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_100_user_setting.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_110_alter_sender_seq.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_120_alter_messageid_seq.sql</file>
+    <file>./SQL/PostgreSQL/20/setup_130_function_lastmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/update_backlog_bufferid.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_lastmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_markerlinemsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_name.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_persistent_channel.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_set_channel_key.sql</file>
+    <file>./SQL/PostgreSQL/20/update_identity.sql</file>
+    <file>./SQL/PostgreSQL/20/update_network.sql</file>
+    <file>./SQL/PostgreSQL/20/update_network_connected.sql</file>
+    <file>./SQL/PostgreSQL/20/update_network_set_awaymsg.sql</file>
+    <file>./SQL/PostgreSQL/20/update_network_set_usermode.sql</file>
+    <file>./SQL/PostgreSQL/20/update_user_setting.sql</file>
+    <file>./SQL/PostgreSQL/20/update_username.sql</file>
+    <file>./SQL/PostgreSQL/20/update_userpassword.sql</file>
+    <file>./SQL/PostgreSQL/20/upgrade_000_alter_buffer_add_lastmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/upgrade_001_add_function_populate_lastmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/upgrade_002_run_function_populate_lastmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/upgrade_003_correct_bad_lastseenmsgid.sql</file>
+    <file>./SQL/PostgreSQL/20/upgrade_004_add_lastseenmsgid_constraint.sql</file>
+    <file>./SQL/PostgreSQL/20/update_buffer_lastseen.sql</file>
     <file>./SQL/SQLite/1/upgrade_000_drop_coreinfo.sql</file>
     <file>./SQL/SQLite/1/upgrade_010_create_coreinfo.sql</file>
     <file>./SQL/SQLite/1/upgrade_020_update_schemaversion.sql</file>
+    <file>./SQL/SQLite/10/upgrade_000_switch_to_msgid.sql</file>
+    <file>./SQL/SQLite/10/upgrade_010_rename_buffer_table.sql</file>
+    <file>./SQL/SQLite/10/upgrade_020_create_buffer_table.sql</file>
+    <file>./SQL/SQLite/10/upgrade_030_copy_buffer_table.sql</file>
+    <file>./SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql</file>
+    <file>./SQL/SQLite/11/upgrade_000_create_user_setting.sql</file>
+    <file>./SQL/SQLite/12/upgrade_000_create_identity.sql</file>
+    <file>./SQL/SQLite/12/upgrade_010_create_identity_nick.sql</file>
+    <file>./SQL/SQLite/12/upgrade_020_rename_servertable.sql</file>
+    <file>./SQL/SQLite/12/upgrade_030_create_ircserver.sql</file>
+    <file>./SQL/SQLite/12/upgrade_040_copy_ircserver.sql</file>
+    <file>./SQL/SQLite/12/upgrade_050_drop_ircserverold.sql</file>
+    <file>./SQL/SQLite/13/upgrade_000_create_buffer_user_idx.sql</file>
+    <file>./SQL/SQLite/13/upgrade_010_create_buffer_cname_idx.sql</file>
+    <file>./SQL/SQLite/13/upgrade_020_create_buffer_cname_idx.sql</file>
+    <file>./SQL/SQLite/14/upgrade_000_rename_networktable.sql</file>
+    <file>./SQL/SQLite/14/upgrade_010_create_networktable.sql</file>
+    <file>./SQL/SQLite/14/upgrade_030_copy_networktable.sql</file>
+    <file>./SQL/SQLite/14/upgrade_040_drop_networkold.sql</file>
+    <file>./SQL/SQLite/15/upgrade_000_fix_ircservers.sql</file>
+    <file>./SQL/SQLite/15/upgrade_000_fix_network.sql</file>
+    <file>./SQL/SQLite/16/upgrade_000_alter_buffer_add_markerlinemsgid.sql</file>
+    <file>./SQL/SQLite/17/upgrade_000_alter_network_add_sasl.sql</file>
+    <file>./SQL/SQLite/17/upgrade_001_alter_network_add_sasl.sql</file>
+    <file>./SQL/SQLite/17/upgrade_002_alter_network_add_sasl.sql</file>
+    <file>./SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql</file>
+    <file>./SQL/SQLite/19/upgrade_000_alter_ircserver_add_sslverify.sql</file>
     <file>./SQL/SQLite/2/upgrade_000_drop_buffergroup.sql</file>
     <file>./SQL/SQLite/2/upgrade_010_update_schemaversion.sql</file>
+    <file>./SQL/SQLite/20/upgrade_000_alter_network_add_ratelimit_usecustom.sql</file>
+    <file>./SQL/SQLite/20/upgrade_001_alter_network_add_ratelimit_burstsize.sql</file>
+    <file>./SQL/SQLite/20/upgrade_002_alter_network_add_ratelimit_delay.sql</file>
+    <file>./SQL/SQLite/20/upgrade_003_alter_network_add_ratelimit_unlimited.sql</file>
     <file>./SQL/SQLite/3/upgrade_000_update_backlog_flags.sql</file>
     <file>./SQL/SQLite/3/upgrade_010_update_schemaversion.sql</file>
     <file>./SQL/SQLite/4/upgrade_000_rename_buffertable.sql</file>
     <file>./SQL/SQLite/9/upgrade_000_create_backlog_idx.sql</file>
     <file>./SQL/SQLite/9/upgrade_010_create_backlog_idx2.sql</file>
     <file>./SQL/SQLite/9/upgrade_020_create_buffer_idx.sql</file>
-    <file>./SQL/SQLite/10/upgrade_000_switch_to_msgid.sql</file>
-    <file>./SQL/SQLite/10/upgrade_010_rename_buffer_table.sql</file>
-    <file>./SQL/SQLite/10/upgrade_020_create_buffer_table.sql</file>
-    <file>./SQL/SQLite/10/upgrade_030_copy_buffer_table.sql</file>
-    <file>./SQL/SQLite/10/upgrade_040_drop_buffer_old_table.sql</file>
-    <file>./SQL/SQLite/11/upgrade_000_create_user_setting.sql</file>
-    <file>./SQL/SQLite/12/upgrade_000_create_identity.sql</file>
-    <file>./SQL/SQLite/12/upgrade_010_create_identity_nick.sql</file>
-    <file>./SQL/SQLite/12/upgrade_020_rename_servertable.sql</file>
-    <file>./SQL/SQLite/12/upgrade_030_create_ircserver.sql</file>
-    <file>./SQL/SQLite/12/upgrade_040_copy_ircserver.sql</file>
-    <file>./SQL/SQLite/12/upgrade_050_drop_ircserverold.sql</file>
-    <file>./SQL/SQLite/13/upgrade_000_create_buffer_user_idx.sql</file>
-    <file>./SQL/SQLite/13/upgrade_010_create_buffer_cname_idx.sql</file>
-    <file>./SQL/SQLite/13/upgrade_020_create_buffer_cname_idx.sql</file>
-    <file>./SQL/SQLite/14/upgrade_000_rename_networktable.sql</file>
-    <file>./SQL/SQLite/14/upgrade_010_create_networktable.sql</file>
-    <file>./SQL/SQLite/14/upgrade_030_copy_networktable.sql</file>
-    <file>./SQL/SQLite/14/upgrade_040_drop_networkold.sql</file>
-    <file>./SQL/SQLite/15/upgrade_000_fix_ircservers.sql</file>
-    <file>./SQL/SQLite/15/upgrade_000_fix_network.sql</file>
-    <file>./SQL/SQLite/16/upgrade_000_alter_buffer_add_markerlinemsgid.sql</file>
-    <file>./SQL/SQLite/17/upgrade_000_alter_network_add_sasl.sql</file>
-    <file>./SQL/SQLite/17/upgrade_001_alter_network_add_sasl.sql</file>
-    <file>./SQL/SQLite/17/upgrade_002_alter_network_add_sasl.sql</file>
-    <file>./SQL/SQLite/18/upgrade_000_alter_quasseluser_add_passwordversion.sql</file>
-    <file>./SQL/SQLite/19/upgrade_000_alter_ircserver_add_sslverify.sql</file>
-    <file>./SQL/SQLite/20/delete_backlog_by_uid.sql</file>
-    <file>./SQL/SQLite/20/delete_backlog_for_buffer.sql</file>
-    <file>./SQL/SQLite/20/delete_backlog_for_network.sql</file>
-    <file>./SQL/SQLite/20/delete_buffer_for_bufferid.sql</file>
-    <file>./SQL/SQLite/20/delete_buffers_by_uid.sql</file>
-    <file>./SQL/SQLite/20/delete_buffers_for_network.sql</file>
-    <file>./SQL/SQLite/20/delete_identity.sql</file>
-    <file>./SQL/SQLite/20/delete_ircservers_for_network.sql</file>
-    <file>./SQL/SQLite/20/delete_networks_by_uid.sql</file>
-    <file>./SQL/SQLite/20/delete_network.sql</file>
-    <file>./SQL/SQLite/20/delete_nicks.sql</file>
-    <file>./SQL/SQLite/20/delete_quasseluser.sql</file>
-    <file>./SQL/SQLite/20/insert_buffer.sql</file>
-    <file>./SQL/SQLite/20/insert_identity.sql</file>
-    <file>./SQL/SQLite/20/insert_message.sql</file>
-    <file>./SQL/SQLite/20/insert_network.sql</file>
-    <file>./SQL/SQLite/20/insert_nick.sql</file>
-    <file>./SQL/SQLite/20/insert_quasseluser.sql</file>
-    <file>./SQL/SQLite/20/insert_sender.sql</file>
-    <file>./SQL/SQLite/20/insert_server.sql</file>
-    <file>./SQL/SQLite/20/insert_user_setting.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_backlog.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_buffer.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_identity_nick.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_identity.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_ircserver.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_network.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_quasseluser.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_sender.sql</file>
-    <file>./SQL/SQLite/20/migrate_read_usersetting.sql</file>
-    <file>./SQL/SQLite/20/select_authuser.sql</file>
-    <file>./SQL/SQLite/20/select_buffer_by_id.sql</file>
-    <file>./SQL/SQLite/20/select_bufferByName.sql</file>
-    <file>./SQL/SQLite/20/select_bufferExists.sql</file>
-    <file>./SQL/SQLite/20/select_buffer_lastseen_messages.sql</file>
-    <file>./SQL/SQLite/20/select_buffer_markerlinemsgids.sql</file>
-    <file>./SQL/SQLite/20/select_buffers_for_merge.sql</file>
-    <file>./SQL/SQLite/20/select_buffers_for_network.sql</file>
-    <file>./SQL/SQLite/20/select_buffers.sql</file>
-    <file>./SQL/SQLite/20/select_checkidentity.sql</file>
-    <file>./SQL/SQLite/20/select_connected_networks.sql</file>
-    <file>./SQL/SQLite/20/select_identities.sql</file>
-    <file>./SQL/SQLite/20/select_internaluser.sql</file>
-    <file>./SQL/SQLite/20/select_messagesAllNew.sql</file>
-    <file>./SQL/SQLite/20/select_messagesAll.sql</file>
-    <file>./SQL/SQLite/20/select_messagesNewerThan.sql</file>
-    <file>./SQL/SQLite/20/select_messagesNewestK.sql</file>
-    <file>./SQL/SQLite/20/select_messages.sql</file>
-    <file>./SQL/SQLite/20/select_network_awaymsg.sql</file>
-    <file>./SQL/SQLite/20/select_networkExists.sql</file>
-    <file>./SQL/SQLite/20/select_networks_for_user.sql</file>
-    <file>./SQL/SQLite/20/select_network_usermode.sql</file>
-    <file>./SQL/SQLite/20/select_nicks.sql</file>
-    <file>./SQL/SQLite/20/select_persistent_channels.sql</file>
-    <file>./SQL/SQLite/20/select_servers_for_network.sql</file>
-    <file>./SQL/SQLite/20/select_userid.sql</file>
-    <file>./SQL/SQLite/20/select_user_setting.sql</file>
-    <file>./SQL/SQLite/20/setup_000_quasseluser.sql</file>
-    <file>./SQL/SQLite/20/setup_010_sender.sql</file>
-    <file>./SQL/SQLite/20/setup_020_network.sql</file>
-    <file>./SQL/SQLite/20/setup_030_buffer.sql</file>
-    <file>./SQL/SQLite/20/setup_040_buffer_idx.sql</file>
-    <file>./SQL/SQLite/20/setup_050_buffer_cname_idx.sql</file>
-    <file>./SQL/SQLite/20/setup_060_backlog.sql</file>
-    <file>./SQL/SQLite/20/setup_070_coreinfo.sql</file>
-    <file>./SQL/SQLite/20/setup_080_ircservers.sql</file>
-    <file>./SQL/SQLite/20/setup_090_backlog_idx.sql</file>
-    <file>./SQL/SQLite/20/setup_100_backlog_idx2.sql</file>
-    <file>./SQL/SQLite/20/setup_110_buffer_user_idx.sql</file>
-    <file>./SQL/SQLite/20/setup_120_user_setting.sql</file>
-    <file>./SQL/SQLite/20/setup_130_identity.sql</file>
-    <file>./SQL/SQLite/20/setup_140_identity_nick.sql</file>
-    <file>./SQL/SQLite/20/update_backlog_bufferid.sql</file>
-    <file>./SQL/SQLite/20/update_buffer_lastseen.sql</file>
-    <file>./SQL/SQLite/20/update_buffer_markerlinemsgid.sql</file>
-    <file>./SQL/SQLite/20/update_buffer_name.sql</file>
-    <file>./SQL/SQLite/20/update_buffer_persistent_channel.sql</file>
-    <file>./SQL/SQLite/20/update_buffer_set_channel_key.sql</file>
-    <file>./SQL/SQLite/20/update_identity.sql</file>
-    <file>./SQL/SQLite/20/update_network_connected.sql</file>
-    <file>./SQL/SQLite/20/update_network_set_awaymsg.sql</file>
-    <file>./SQL/SQLite/20/update_network_set_usermode.sql</file>
-    <file>./SQL/SQLite/20/update_network.sql</file>
-    <file>./SQL/SQLite/20/update_username.sql</file>
-    <file>./SQL/SQLite/20/update_userpassword.sql</file>
-    <file>./SQL/SQLite/20/update_user_setting.sql</file>
-    <file>./SQL/SQLite/20/upgrade_000_alter_network_add_ratelimit_usecustom.sql</file>
-    <file>./SQL/SQLite/20/upgrade_001_alter_network_add_ratelimit_burstsize.sql</file>
-    <file>./SQL/SQLite/20/upgrade_002_alter_network_add_ratelimit_delay.sql</file>
-    <file>./SQL/SQLite/20/upgrade_003_alter_network_add_ratelimit_unlimited.sql</file>
-    <file>./SQL/PostgreSQL/15/upgrade_000_alter_buffer_add_markerlinemsgid.sql</file>
-    <file>./SQL/PostgreSQL/16/upgrade_000_alter_network_add_sasl.sql</file>
-    <file>./SQL/PostgreSQL/17/upgrade_000_alter_quasseluser_add_passwordversion.sql</file>
-    <file>./SQL/PostgreSQL/18/upgrade_000_alter_ircserver_add_sslverify.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_backlog_by_uid.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_backlog_for_buffer.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_backlog_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_buffer_for_bufferid.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_buffers_by_uid.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_buffers_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_ircservers_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_networks_by_uid.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_network.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_nicks.sql</file>
-    <file>./SQL/PostgreSQL/19/delete_quasseluser.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_buffer.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_message.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_network.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_nick.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_quasseluser.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_sender.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_server.sql</file>
-    <file>./SQL/PostgreSQL/19/insert_user_setting.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_backlog.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_buffer.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_identity_nick.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_ircserver.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_network.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_quasseluser.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_sender.sql</file>
-    <file>./SQL/PostgreSQL/19/migrate_write_usersetting.sql</file>
-    <file>./SQL/PostgreSQL/19/select_authuser.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffer_by_id.sql</file>
-    <file>./SQL/PostgreSQL/19/select_bufferByName.sql</file>
-    <file>./SQL/PostgreSQL/19/select_bufferExists.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffer_lastseen_messages.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffer_markerlinemsgids.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffers_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/select_buffers.sql</file>
-    <file>./SQL/PostgreSQL/19/select_checkidentity.sql</file>
-    <file>./SQL/PostgreSQL/19/select_connected_networks.sql</file>
-    <file>./SQL/PostgreSQL/19/select_identities.sql</file>
-    <file>./SQL/PostgreSQL/19/select_internaluser.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messagesAllNew.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messagesAll.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messagesNewerThan.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messagesRange.sql</file>
-    <file>./SQL/PostgreSQL/19/select_messages.sql</file>
-    <file>./SQL/PostgreSQL/19/select_network_awaymsg.sql</file>
-    <file>./SQL/PostgreSQL/19/select_networkExists.sql</file>
-    <file>./SQL/PostgreSQL/19/select_networks_for_user.sql</file>
-    <file>./SQL/PostgreSQL/19/select_network_usermode.sql</file>
-    <file>./SQL/PostgreSQL/19/select_nicks.sql</file>
-    <file>./SQL/PostgreSQL/19/select_persistent_channels.sql</file>
-    <file>./SQL/PostgreSQL/19/select_senderid.sql</file>
-    <file>./SQL/PostgreSQL/19/select_servers_for_network.sql</file>
-    <file>./SQL/PostgreSQL/19/select_userid.sql</file>
-    <file>./SQL/PostgreSQL/19/select_user_setting.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_000_quasseluser.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_010_sender.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_020_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_030_identity_nick.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_040_network.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_050_buffer.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_060_backlog.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_070_coreinfo.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_080_ircservers.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_090_backlog_idx.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_100_user_setting.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_110_alter_sender_seq.sql</file>
-    <file>./SQL/PostgreSQL/19/setup_120_alter_messageid_seq.sql</file>
-    <file>./SQL/PostgreSQL/19/update_backlog_bufferid.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_lastseen.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_markerlinemsgid.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_name.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_persistent_channel.sql</file>
-    <file>./SQL/PostgreSQL/19/update_buffer_set_channel_key.sql</file>
-    <file>./SQL/PostgreSQL/19/update_identity.sql</file>
-    <file>./SQL/PostgreSQL/19/update_network_connected.sql</file>
-    <file>./SQL/PostgreSQL/19/update_network_set_awaymsg.sql</file>
-    <file>./SQL/PostgreSQL/19/update_network_set_usermode.sql</file>
-    <file>./SQL/PostgreSQL/19/update_network.sql</file>
-    <file>./SQL/PostgreSQL/19/update_username.sql</file>
-    <file>./SQL/PostgreSQL/19/update_userpassword.sql</file>
-    <file>./SQL/PostgreSQL/19/update_user_setting.sql</file>
-    <file>./SQL/PostgreSQL/19/upgrade_000_alter_network_add_ratelimit_usecustom.sql</file>
-    <file>./SQL/PostgreSQL/19/upgrade_001_alter_network_add_ratelimit_burstsize.sql</file>
-    <file>./SQL/PostgreSQL/19/upgrade_002_alter_network_add_ratelimit_delay.sql</file>
-    <file>./SQL/PostgreSQL/19/upgrade_003_alter_network_add_ratelimit_unlimited.sql</file>
+    <file>./SQL/SQLite/21/delete_backlog_by_uid.sql</file>
+    <file>./SQL/SQLite/21/delete_backlog_for_buffer.sql</file>
+    <file>./SQL/SQLite/21/delete_backlog_for_network.sql</file>
+    <file>./SQL/SQLite/21/delete_buffer_for_bufferid.sql</file>
+    <file>./SQL/SQLite/21/delete_buffers_by_uid.sql</file>
+    <file>./SQL/SQLite/21/delete_buffers_for_network.sql</file>
+    <file>./SQL/SQLite/21/delete_identity.sql</file>
+    <file>./SQL/SQLite/21/delete_ircservers_for_network.sql</file>
+    <file>./SQL/SQLite/21/delete_network.sql</file>
+    <file>./SQL/SQLite/21/delete_networks_by_uid.sql</file>
+    <file>./SQL/SQLite/21/delete_nicks.sql</file>
+    <file>./SQL/SQLite/21/delete_quasseluser.sql</file>
+    <file>./SQL/SQLite/21/insert_buffer.sql</file>
+    <file>./SQL/SQLite/21/insert_identity.sql</file>
+    <file>./SQL/SQLite/21/insert_message.sql</file>
+    <file>./SQL/SQLite/21/insert_network.sql</file>
+    <file>./SQL/SQLite/21/insert_nick.sql</file>
+    <file>./SQL/SQLite/21/insert_quasseluser.sql</file>
+    <file>./SQL/SQLite/21/insert_sender.sql</file>
+    <file>./SQL/SQLite/21/insert_server.sql</file>
+    <file>./SQL/SQLite/21/insert_user_setting.sql</file>
+    <file>./SQL/SQLite/21/migrate_read_backlog.sql</file>
+    <file>./SQL/SQLite/21/migrate_read_buffer.sql</file>
+    <file>./SQL/SQLite/21/migrate_read_identity.sql</file>
+    <file>./SQL/SQLite/21/migrate_read_identity_nick.sql</file>
+    <file>./SQL/SQLite/21/migrate_read_ircserver.sql</file>
+    <file>./SQL/SQLite/21/migrate_read_network.sql</file>
+    <file>./SQL/SQLite/21/migrate_read_quasseluser.sql</file>
+    <file>./SQL/SQLite/21/migrate_read_sender.sql</file>
+    <file>./SQL/SQLite/21/migrate_read_usersetting.sql</file>
+    <file>./SQL/SQLite/21/select_authuser.sql</file>
+    <file>./SQL/SQLite/21/select_bufferByName.sql</file>
+    <file>./SQL/SQLite/21/select_bufferExists.sql</file>
+    <file>./SQL/SQLite/21/select_buffer_by_id.sql</file>
+    <file>./SQL/SQLite/21/select_buffer_lastseen_messages.sql</file>
+    <file>./SQL/SQLite/21/select_buffer_markerlinemsgids.sql</file>
+    <file>./SQL/SQLite/21/select_buffers.sql</file>
+    <file>./SQL/SQLite/21/select_buffers_for_merge.sql</file>
+    <file>./SQL/SQLite/21/select_buffers_for_network.sql</file>
+    <file>./SQL/SQLite/21/select_checkidentity.sql</file>
+    <file>./SQL/SQLite/21/select_connected_networks.sql</file>
+    <file>./SQL/SQLite/21/select_identities.sql</file>
+    <file>./SQL/SQLite/21/select_internaluser.sql</file>
+    <file>./SQL/SQLite/21/select_messages.sql</file>
+    <file>./SQL/SQLite/21/select_messagesAll.sql</file>
+    <file>./SQL/SQLite/21/select_messagesAllNew.sql</file>
+    <file>./SQL/SQLite/21/select_messagesNewerThan.sql</file>
+    <file>./SQL/SQLite/21/select_messagesNewestK.sql</file>
+    <file>./SQL/SQLite/21/select_networkExists.sql</file>
+    <file>./SQL/SQLite/21/select_network_awaymsg.sql</file>
+    <file>./SQL/SQLite/21/select_network_usermode.sql</file>
+    <file>./SQL/SQLite/21/select_networks_for_user.sql</file>
+    <file>./SQL/SQLite/21/select_nicks.sql</file>
+    <file>./SQL/SQLite/21/select_persistent_channels.sql</file>
+    <file>./SQL/SQLite/21/select_servers_for_network.sql</file>
+    <file>./SQL/SQLite/21/select_user_setting.sql</file>
+    <file>./SQL/SQLite/21/select_userid.sql</file>
+    <file>./SQL/SQLite/21/setup_000_quasseluser.sql</file>
+    <file>./SQL/SQLite/21/setup_010_sender.sql</file>
+    <file>./SQL/SQLite/21/setup_020_network.sql</file>
+    <file>./SQL/SQLite/21/setup_030_buffer.sql</file>
+    <file>./SQL/SQLite/21/setup_040_buffer_idx.sql</file>
+    <file>./SQL/SQLite/21/setup_050_buffer_cname_idx.sql</file>
+    <file>./SQL/SQLite/21/setup_060_backlog.sql</file>
+    <file>./SQL/SQLite/21/setup_070_coreinfo.sql</file>
+    <file>./SQL/SQLite/21/setup_080_ircservers.sql</file>
+    <file>./SQL/SQLite/21/setup_090_backlog_idx.sql</file>
+    <file>./SQL/SQLite/21/setup_100_backlog_idx2.sql</file>
+    <file>./SQL/SQLite/21/setup_110_buffer_user_idx.sql</file>
+    <file>./SQL/SQLite/21/setup_120_user_setting.sql</file>
+    <file>./SQL/SQLite/21/setup_130_identity.sql</file>
+    <file>./SQL/SQLite/21/setup_140_identity_nick.sql</file>
+    <file>./SQL/SQLite/21/update_backlog_bufferid.sql</file>
+    <file>./SQL/SQLite/21/update_buffer_markerlinemsgid.sql</file>
+    <file>./SQL/SQLite/21/update_buffer_name.sql</file>
+    <file>./SQL/SQLite/21/update_buffer_persistent_channel.sql</file>
+    <file>./SQL/SQLite/21/update_buffer_set_channel_key.sql</file>
+    <file>./SQL/SQLite/21/update_identity.sql</file>
+    <file>./SQL/SQLite/21/update_network.sql</file>
+    <file>./SQL/SQLite/21/update_network_connected.sql</file>
+    <file>./SQL/SQLite/21/update_network_set_awaymsg.sql</file>
+    <file>./SQL/SQLite/21/update_network_set_usermode.sql</file>
+    <file>./SQL/SQLite/21/update_user_setting.sql</file>
+    <file>./SQL/SQLite/21/update_username.sql</file>
+    <file>./SQL/SQLite/21/update_userpassword.sql</file>
+    <file>./SQL/SQLite/21/upgrade_000_alter_buffer_add_lastmsgid.sql</file>
+    <file>./SQL/SQLite/21/upgrade_001_update_buffer_set_lastmsgid.sql</file>
+    <file>./SQL/SQLite/21/upgrade_002_update_buffer_fix_lastseenmsgid_over_lastmsgid.sql</file>
+    <file>./SQL/SQLite/21/upgrade_003_create_table_buffer_new.sql</file>
+    <file>./SQL/SQLite/21/upgrade_004_insert_into_buffer_new_from_buffer.sql</file>
+    <file>./SQL/SQLite/21/upgrade_006_alter_table_buffer_new_rename_to_buffer.sql</file>
+    <file>./SQL/SQLite/21/update_buffer_lastmsgid.sql</file>
+    <file>./SQL/SQLite/21/update_buffer_lastseen.sql</file>
+    <file>./SQL/SQLite/21/upgrade_005_drop_table_buffer.sql</file>
 </qresource>
 </RCC>
index 53601e0..022db0e 100644 (file)
@@ -1475,6 +1475,16 @@ QHash<BufferId, MsgId> 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;
index 9a12fbe..f66e70f 100644 (file)
@@ -96,6 +96,7 @@ public slots:
     virtual QHash<BufferId, MsgId> bufferLastSeenMsgIds(UserId user);
     virtual void setBufferMarkerLineMsg(UserId user, const BufferId &bufferId, const MsgId &msgId);
     virtual QHash<BufferId, MsgId> bufferMarkerLineMsgIds(UserId user);
+    virtual void setBufferLastMsg(const BufferId &bufferId, const MsgId &msgId);
 
     /* Message handling */
     virtual bool logMessage(Message &msg);