From fdfd8ce9be182943e73d20ec3bff4d560c5b7503 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Wed, 23 Oct 2019 02:12:49 +0200 Subject: Workaround for MySQL limitation 1093 (#2586) * Workaround for MySQL limitation 1093 https://github.com/FreshRSS/FreshRSS/pull/2335#issuecomment-545194606 including minor Travis fixes --- app/Models/CategoryDAO.php | 2 +- app/Models/EntryDAO.php | 14 +++++++++----- lib/lib_rss.php | 4 ++-- p/themes/base-theme/template.css | 1 + 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/Models/CategoryDAO.php b/app/Models/CategoryDAO.php index 1b8717e83..210830640 100644 --- a/app/Models/CategoryDAO.php +++ b/app/Models/CategoryDAO.php @@ -166,7 +166,7 @@ class FreshRSS_CategoryDAO extends Minz_ModelPdo implements FreshRSS_Searchable } } Minz_Log::error(__method__ . ' error: ' . json_encode($info)); - return false; + yield false; } } diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index 6a8a25b3e..99e99f463 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -560,13 +560,16 @@ SQL; $sql .= ' AND NOT EXISTS (SELECT 1 FROM `_entrytag` WHERE id_entry = id)'; } if (!empty($options['keep_min']) && $options['keep_min'] > 0) { - $sql .= ' AND `lastSeen` < (SELECT e2.`lastSeen` FROM `_entry` e2 WHERE e2.id_feed = :id_feed2' - . ' ORDER BY e2.`lastSeen` DESC LIMIT 1 OFFSET :keep_min)'; + //Double SELECT for MySQL workaround ERROR 1093 (HY000) + $sql .= ' AND `lastSeen` < (SELECT `lastSeen`' + . ' FROM (SELECT e2.`lastSeen` FROM `_entry` e2 WHERE e2.id_feed = :id_feed2' + . ' ORDER BY e2.`lastSeen` DESC LIMIT 1 OFFSET :keep_min) last_seen2)'; $params[':id_feed2'] = $id_feed; $params[':keep_min'] = (int)$options['keep_min']; } //Keep at least the articles seen at the last refresh - $sql .= ' AND `lastSeen` < (SELECT MAX(e3.`lastSeen`) FROM `_entry` e3 WHERE e3.id_feed = :id_feed3)'; + $sql .= ' AND `lastSeen` < (SELECT maxlastseen' + . ' FROM (SELECT MAX(e3.`lastSeen`) AS maxlastseen FROM `_entry` e3 WHERE e3.id_feed = :id_feed3) last_seen3)'; $params[':id_feed3'] = $id_feed; //==Inclusions== @@ -578,8 +581,9 @@ SQL; $params[':max_last_seen'] = $now->format('U'); } if (!empty($options['keep_max']) && $options['keep_max'] > 0) { - $sql .= ' OR `lastSeen` <= (SELECT e4.`lastSeen` FROM `_entry` e4 WHERE e4.id_feed = :id_feed4' - . ' ORDER BY e4.`lastSeen` DESC LIMIT 1 OFFSET :keep_max)'; + $sql .= ' OR `lastSeen` <= (SELECT `lastSeen`' + . ' FROM (SELECT e4.`lastSeen` FROM `_entry` e4 WHERE e4.id_feed = :id_feed4' + . ' ORDER BY e4.`lastSeen` DESC LIMIT 1 OFFSET :keep_max) last_seen4)'; $params[':id_feed4'] = $id_feed; $params[':keep_max'] = (int)$options['keep_max']; } diff --git a/lib/lib_rss.php b/lib/lib_rss.php index 2a230e6f8..f4b5c68e6 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -301,9 +301,9 @@ function invalidateHttpCache($username = '') { $username = Minz_Session::param('currentUser', '_'); } $ok = @touch(DATA_PATH . '/users/' . $username . '/log.txt'); - if (!$ok) { + //if (!$ok) { //TODO: Display notification error on front-end - } + //} return $ok; } diff --git a/p/themes/base-theme/template.css b/p/themes/base-theme/template.css index 2d76c9b4d..ebceea526 100644 --- a/p/themes/base-theme/template.css +++ b/p/themes/base-theme/template.css @@ -101,6 +101,7 @@ label { input { width: 180px; } + input[type=number] { width: 6em; } -- cgit v1.2.3