From 76883c546324b1fb80f465421d4e3c7732505852 Mon Sep 17 00:00:00 2001 From: Shane Synan Date: Fri, 10 Jul 2020 17:23:18 -0400 Subject: [PATCH] core: Fix/unify SQL for forward message fetch NOTE: This commit should be squashed into the previous commit from justJanne. It's committed separately just to make it easier to see what I changed. Fixup the SQLite and PostgreSQL queries to treat "<= 0" as any type/flag instead of just "= 0". This matches the function definitions and fixes specifying "-1" instead of "0". Without this change, specifying "-1" will result in missing messages! --- src/core/SQL/PostgreSQL/select_messagesForward.sql | 6 +++--- src/core/SQL/SQLite/select_messagesForward.sql | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/SQL/PostgreSQL/select_messagesForward.sql b/src/core/SQL/PostgreSQL/select_messagesForward.sql index e645e96b..d8e76e8c 100644 --- a/src/core/SQL/PostgreSQL/select_messagesForward.sql +++ b/src/core/SQL/PostgreSQL/select_messagesForward.sql @@ -1,10 +1,10 @@ -SELECT messageid, time, type, flags, sender, senderprefixes, realname, avatarurl, message +SELECT messageid, time, type, flags, sender, senderprefixes, realname, avatarurl, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE backlog.messageid >= $1 AND backlog.messageid < $2 AND bufferid = $3 - AND backlog.type & $4 != 0 - AND ($5 = 0 OR backlog.flags & $5 != 0) + AND ($4 <= 0 OR backlog.type & $4 != 0) + AND ($5 <= 0 OR backlog.flags & $5 != 0) ORDER BY messageid ASC LIMIT $6 diff --git a/src/core/SQL/SQLite/select_messagesForward.sql b/src/core/SQL/SQLite/select_messagesForward.sql index 881bb9f6..e4e78193 100644 --- a/src/core/SQL/SQLite/select_messagesForward.sql +++ b/src/core/SQL/SQLite/select_messagesForward.sql @@ -1,10 +1,10 @@ -SELECT messageid, time, type, flags, sender, senderprefixes, realname, avatarurl, message +SELECT messageid, time, type, flags, sender, senderprefixes, realname, avatarurl, message FROM backlog JOIN sender ON backlog.senderid = sender.senderid WHERE bufferid = :bufferid AND backlog.messageid >= :firstmsg AND backlog.messageid < :lastmsg - AND (:type = 0 OR backlog.type & :type != 0) - AND (:flags = 0 OR backlog.flags & :flags != 0) + AND (:type <= 0 OR backlog.type & :type != 0) + AND (:flags <= 0 OR backlog.flags & :flags != 0) ORDER BY messageid ASC LIMIT :limit -- 2.20.1