From 419a1978b6d8052f88783a4624cd17602422030a Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Mon, 17 Nov 2025 13:46:28 +0100 Subject: Fix MySQL commitNewEntries (#8223) I just realised that `commitNewEntries()` was not sorting articles properly before insertion in database when using MySQL: Articles were not sorted by publication date as expected from the temporary table before insertion in the final table. MySQL was not picking the correct field, so fixed with an explicit alias. Discovered because I did some tests with MySQL in https://github.com/FreshRSS/FreshRSS/pull/6957 At the same time, I did the same change for PostgreSQL and SQLite although those were not affected. --- app/Models/EntryDAO.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'app/Models/EntryDAO.php') diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index 0acc2c510..572c9054d 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -248,18 +248,18 @@ SQL; public function commitNewEntries(): bool { $sql = <<<'SQL' -SET @rank=(SELECT MAX(id) - COUNT(*) FROM `_entrytmp`); - -INSERT IGNORE INTO `_entry` ( - id, guid, title, author, content_bin, link, date, `lastSeen`, - hash, is_read, is_favorite, id_feed, tags, attributes -) -SELECT @rank:=@rank+1 AS id, guid, title, author, content_bin, link, date, `lastSeen`, hash, is_read, is_favorite, id_feed, tags, attributes -FROM `_entrytmp` -ORDER BY date, id; - -DELETE FROM `_entrytmp` WHERE id <= @rank; -SQL; + SET @rank=(SELECT MAX(id) - COUNT(*) FROM `_entrytmp`); + + INSERT IGNORE INTO `_entry` ( + id, guid, title, author, content_bin, link, date, `lastSeen`, + hash, is_read, is_favorite, id_feed, tags, attributes + ) + SELECT @rank:=@rank+1 AS id, guid, title, author, content_bin, link, date, `lastSeen`, hash, is_read, is_favorite, id_feed, tags, attributes + FROM `_entrytmp` etmp + ORDER BY etmp.date, etmp.id; + + DELETE FROM `_entrytmp` WHERE id <= @rank; + SQL; $hadTransaction = $this->pdo->inTransaction(); if (!$hadTransaction) { $this->pdo->beginTransaction(); -- cgit v1.2.3