From 3a24ea6f65166cffb0122befe08743d5223d158d Mon Sep 17 00:00:00 2001 From: Bart De Vries Date: Sun, 27 Jun 2021 10:32:48 +0200 Subject: [PATCH] Avoid RENAME COLUMN to make db migration more robust RENAME COLUMN was only introduced in sqlite 3.25. So it's probably better to avoid it for the time being to increase compatibility with older versions. --- src/database.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/database.cpp b/src/database.cpp index 46f0be32..03da9bdf 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -80,9 +80,11 @@ bool Database::migrateTo2() bool Database::migrateTo3() { qDebug() << "Migrating database to version 3"; - TRUE_OR_RETURN(execute(QStringLiteral("ALTER TABLE Enclosures RENAME COLUMN downloaded TO downloaded_temp;"))); + TRUE_OR_RETURN(execute(QStringLiteral("ALTER TABLE Enclosures ADD COLUMN downloaded_temp BOOL DEFAULT 0;"))); + TRUE_OR_RETURN(execute(QStringLiteral("UPDATE Enclosures SET downloaded_temp=1 WHERE downloaded=1;"))); + TRUE_OR_RETURN(execute(QStringLiteral("ALTER TABLE Enclosures DROP COLUMN downloaded;"))); TRUE_OR_RETURN(execute(QStringLiteral("ALTER TABLE Enclosures ADD COLUMN downloaded INTEGER DEFAULT 0;"))); - TRUE_OR_RETURN(execute(QStringLiteral("UPDATE Enclosures SET downloaded=3 where downloaded_temp=1;"))); + TRUE_OR_RETURN(execute(QStringLiteral("UPDATE Enclosures SET downloaded=3 WHERE downloaded_temp=1;"))); TRUE_OR_RETURN(execute(QStringLiteral("ALTER TABLE Enclosures DROP COLUMN downloaded_temp;"))); TRUE_OR_RETURN(execute(QStringLiteral("PRAGMA user_version = 3;"))); return true;