Modify the SQL queries for *_filtered.sql backlog fetching to allow
specifying an invalid type of "0" or "-1" to match any message type.
This allows filtering backlog fetching by flag without restricting by
type.
Also modify the "= 0" check for :flag to "<= 0". This matches the
function definitions and fixes specifying "-1" instead of "0".
Without this change, specifying "-1" will result in missing messages!
Committed separately from the new forward backlog fetching in case
issues are found, making reverting easier.
-SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, realname, avatarurl, message
+SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, realname, avatarurl, message
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid)
AND backlog.messageid >= :firstmsg
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid)
AND backlog.messageid >= :firstmsg
- AND 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 DESC
-- Unlike SQLite, no LIMIT clause, mimicking the unfiltered version - investigate later..?
ORDER BY messageid DESC
-- Unlike SQLite, no LIMIT clause, mimicking the unfiltered version - investigate later..?
-SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, realname, avatarurl, message
+SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, realname, avatarurl, message
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid)
AND backlog.messageid >= :firstmsg
AND backlog.messageid < :lastmsg
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid)
AND backlog.messageid >= :firstmsg
AND backlog.messageid < :lastmsg
- AND 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 DESC
-- Unlike SQLite, no LIMIT clause, mimicking the unfiltered version - investigate later..?
ORDER BY messageid DESC
-- Unlike SQLite, no LIMIT clause, mimicking the unfiltered version - investigate later..?
-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 >= :first
AND backlog.messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = :buffer)
AND bufferid = :buffer
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.messageid >= :first
AND backlog.messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = :buffer)
AND bufferid = :buffer
- AND 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 DESC
LIMIT :limit
ORDER BY messageid DESC
LIMIT :limit
-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 = :buffer
AND backlog.messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = :buffer)
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE bufferid = :buffer
AND backlog.messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = :buffer)
- AND 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 DESC
LIMIT :limit
ORDER BY messageid DESC
LIMIT :limit
-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 >= :first
AND backlog.messageid < :last
AND bufferid = :buffer
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.messageid >= :first
AND backlog.messageid < :last
AND bufferid = :buffer
- AND 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 DESC
LIMIT :limit
ORDER BY messageid DESC
LIMIT :limit
-SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, realname, avatarurl, message
+SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, realname, avatarurl, message
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid)
AND backlog.messageid >= :firstmsg
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid)
AND backlog.messageid >= :firstmsg
- AND 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 DESC
LIMIT :limit
ORDER BY messageid DESC
LIMIT :limit
-SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, realname, avatarurl, message
+SELECT messageid, bufferid, time, type, flags, sender, senderprefixes, realname, avatarurl, message
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid)
AND backlog.messageid >= :firstmsg
AND backlog.messageid < :lastmsg
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.bufferid IN (SELECT bufferid FROM buffer WHERE userid = :userid)
AND backlog.messageid >= :firstmsg
AND backlog.messageid < :lastmsg
- AND 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 DESC
LIMIT :limit
ORDER BY messageid DESC
LIMIT :limit
-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 >= :firstmsg
AND backlog.messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = :bufferid)
AND bufferid = :bufferid
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE backlog.messageid >= :firstmsg
AND backlog.messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = :bufferid)
AND bufferid = :bufferid
- AND 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 DESC
LIMIT :limit
ORDER BY messageid DESC
LIMIT :limit
-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 <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = :bufferid)
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE bufferid = :bufferid
AND backlog.messageid <= (SELECT buffer.lastmsgid FROM buffer WHERE buffer.bufferid = :bufferid)
-AND 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 DESC
LIMIT :limit
ORDER BY messageid DESC
LIMIT :limit
-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
FROM backlog
JOIN sender ON backlog.senderid = sender.senderid
WHERE bufferid = :bufferid
AND backlog.messageid >= :firstmsg
AND backlog.messageid < :lastmsg
- AND 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 DESC
LIMIT :limit
ORDER BY messageid DESC
LIMIT :limit