From 9833d8197686d9614fc5cbd300e0761a520e2e6d Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Fri, 24 Oct 2025 12:49:29 +0200 Subject: Better SQL auto-update f.kind (#8148) Add a little help to make sure that feed.kind gets added during the first call. Tested that replacing the DB with a backup from Febuary 2020 just works, automatically adding new columns since FreshRSS 1.20.0. --- app/Models/CategoryDAOSQLite.php | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'app/Models/CategoryDAOSQLite.php') diff --git a/app/Models/CategoryDAOSQLite.php b/app/Models/CategoryDAOSQLite.php index ee59d0754..575656e67 100644 --- a/app/Models/CategoryDAOSQLite.php +++ b/app/Models/CategoryDAOSQLite.php @@ -11,6 +11,15 @@ class FreshRSS_CategoryDAOSQLite extends FreshRSS_CategoryDAO { /** @param array{0:string,1:int,2:string} $errorInfo */ #[\Override] protected function autoUpdateDb(array $errorInfo): bool { + if (isset($errorInfo[0])) { + $errorLines = explode("\n", $errorInfo[2], 2); // The relevant column name is on the first line, other lines are noise + if (str_contains($errorLines[0], 'f.')) { // Coming from a feed sub-query + $feedDao = FreshRSS_Factory::createFeedDao(); + if ($feedDao->autoUpdateDb($errorInfo)) { + return true; + } + } + } if (($tableInfo = $this->pdo->query("PRAGMA table_info('category')")) !== false) { $columns = $tableInfo->fetchAll(PDO::FETCH_COLUMN, 1); foreach (['kind', 'lastUpdate', 'error', 'attributes'] as $column) { -- cgit v1.2.3