core: Fix SQL defaults for filtered backlog fetch
authorShane Synan <digitalcircuit36939@gmail.com>
Fri, 10 Jul 2020 21:50:59 +0000 (17:50 -0400)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sun, 4 Oct 2020 15:01:02 +0000 (17:01 +0200)
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.

src/core/SQL/PostgreSQL/select_messagesAllNew_filtered.sql
src/core/SQL/PostgreSQL/select_messagesAll_filtered.sql
src/core/SQL/PostgreSQL/select_messagesNewerThan_filtered.sql
src/core/SQL/PostgreSQL/select_messagesNewestK_filtered.sql
src/core/SQL/PostgreSQL/select_messagesRange_filtered.sql
src/core/SQL/SQLite/select_messagesAllNew_filtered.sql
src/core/SQL/SQLite/select_messagesAll_filtered.sql
src/core/SQL/SQLite/select_messagesNewerThan_filtered.sql
src/core/SQL/SQLite/select_messagesNewestK_filtered.sql
src/core/SQL/SQLite/select_messagesRange_filtered.sql

index 780263f..7ba9e68 100644 (file)
@@ -1,9 +1,9 @@
-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.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..?
index 3e1ce65..2c6e0fc 100644 (file)
@@ -1,10 +1,10 @@
-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
-    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..?
index 46b4d47..9ef356c 100644 (file)
@@ -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 >= :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
index cdb960c..39f107d 100644 (file)
@@ -1,9 +1,9 @@
-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)
-    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
index 6030e53..087f611 100644 (file)
@@ -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 >= :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
index 1a742b8..9238863 100644 (file)
@@ -1,9 +1,9 @@
-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.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
index c09be6b..6fceb2a 100644 (file)
@@ -1,10 +1,10 @@
-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
-    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
index 198df7c..53f26b1 100644 (file)
@@ -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 >= :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
index b4411af..d290c58 100644 (file)
@@ -1,9 +1,9 @@
-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)
-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
index d1e4c0f..223a92c 100644 (file)
@@ -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 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