diff --git a/database/Database.php b/database/Database.php index c067a12d2d4df77810f8f8ea3cd8297b062f988e..bb4698a9762202c256ab73b6419e9cd71904709a 100644 --- a/database/Database.php +++ b/database/Database.php @@ -249,7 +249,7 @@ class Database public function after(int $anchor, int $buffer, int $limit): array { - $truncatedLimit = max(min($limit + 1, 50), 1); + $truncatedLimit = max(min($limit, 50), 0); $stmt = $this->backend->loadAfter(); diff --git a/database/backends/PostgresSmartBackend.php b/database/backends/PostgresSmartBackend.php index e205f6cafa70c3df5f754bd28978a5091c6e7ac6..451c39ba302e1702bb255a2079c6872318c16719 100644 --- a/database/backends/PostgresSmartBackend.php +++ b/database/backends/PostgresSmartBackend.php @@ -218,7 +218,7 @@ class PostgresSmartBackend implements Backend public function loadBefore(): \PDOStatement { return $this->db->prepare(" - SELECT backlog.messageid, + SELECT * FROM (SELECT backlog.messageid, backlog.bufferid, buffer.buffername, sender.sender, @@ -234,7 +234,8 @@ class PostgresSmartBackend implements Backend AND backlog.bufferid = :bufferid AND backlog.messageid < :anchor ORDER BY backlog.messageid DESC - LIMIT :limit; + LIMIT :limit) t + ORDER BY messageid ASC; "); } }