From 78f72e29bdc5fdd6bd2cb1bb8ca438600c36d9b4 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sat, 3 Mar 2018 14:51:45 +0100
Subject: [PATCH] Fixed ordering issue

---
 database/Database.php                      | 2 +-
 database/backends/PostgresSmartBackend.php | 5 +++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/database/Database.php b/database/Database.php
index c067a12..bb4698a 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 e205f6c..451c39b 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;
         ");
     }
 }
-- 
GitLab