From: Christian Kamm Date: Wed, 23 Jan 2019 08:50:21 +0000 (+0100) Subject: Sqlite: Use FULL synchronous mode with non-WAL journal X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~21^2~468^2~247 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a4f357ee4b20f678347d117a504f5d5b3a662723;p=nextcloud-desktop.git Sqlite: Use FULL synchronous mode with non-WAL journal According to the documentation DELETE+NORMAL isn't safe from corruption on older file systems. --- diff --git a/src/common/syncjournaldb.cpp b/src/common/syncjournaldb.cpp index b22e041ce..c5c6a459a 100644 --- a/src/common/syncjournaldb.cpp +++ b/src/common/syncjournaldb.cpp @@ -333,10 +333,18 @@ bool SyncJournalDb::checkConnect() qCInfo(lcDb) << "sqlite3 with temp_store =" << env_temp_store; } - pragma1.prepare("PRAGMA synchronous = 1;"); + // With WAL journal the NORMAL sync mode is safe from corruption, + // otherwise use the standard FULL mode. + QByteArray synchronousMode = "FULL"; + if (QString::fromUtf8(_journalMode).compare(QStringLiteral("wal"), Qt::CaseInsensitive) == 0) + synchronousMode = "NORMAL"; + pragma1.prepare("PRAGMA synchronous = " + synchronousMode + ";"); if (!pragma1.exec()) { return sqlFail("Set PRAGMA synchronous", pragma1); + } else { + qCInfo(lcDb) << "sqlite3 synchronous=" << synchronousMode; } + pragma1.prepare("PRAGMA case_sensitive_like = ON;"); if (!pragma1.exec()) { return sqlFail("Set PRAGMA case_sensitivity", pragma1);