From 43d6dbb0f29058370594a9d75afcc3da6f531b07 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 29 Jan 2015 10:10:09 +0100 Subject: [PATCH] SQL: Add debugging options. #2693 OWNCLOUD_SQLITE_JOURNAL_MODE: To use something else than WAL OWNCLOUD_SQLITE_TEMP_STORE: To test with storing temporaries in memory. --- csync/src/csync_update.c | 3 ++- src/gui/folder.cpp | 1 + src/libsync/syncjournaldb.cpp | 20 ++++++++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/csync/src/csync_update.c b/csync/src/csync_update.c index b6346efdb..2a68bb895 100644 --- a/csync/src/csync_update.c +++ b/csync/src/csync_update.c @@ -692,7 +692,8 @@ int csync_ftw(CSYNC *ctx, const char *uri, csync_walker_fn fn, || c_streq(path, ".csync_journal.db.ctmp-journal") || c_streq(path, ".csync-progressdatabase") || c_streq(path, ".csync_journal.db-shm") - || c_streq(path, ".csync_journal.db-wal")) { + || c_streq(path, ".csync_journal.db-wal") + || c_streq(path, ".csync_journal.db-journal")) { csync_vio_file_stat_destroy(dirent); dirent = NULL; SAFE_FREE(filename); diff --git a/src/gui/folder.cpp b/src/gui/folder.cpp index e60600c3d..7b1ab6d8e 100644 --- a/src/gui/folder.cpp +++ b/src/gui/folder.cpp @@ -706,6 +706,7 @@ void Folder::wipe() QFile::remove( stateDbFile + ".ctmp" ); QFile::remove( stateDbFile + "-shm" ); QFile::remove( stateDbFile + "-wal" ); + QFile::remove( stateDbFile + "-journal" ); } bool Folder::setIgnoredFiles() diff --git a/src/libsync/syncjournaldb.cpp b/src/libsync/syncjournaldb.cpp index 93e1f1a93..e0c595cc8 100644 --- a/src/libsync/syncjournaldb.cpp +++ b/src/libsync/syncjournaldb.cpp @@ -140,13 +140,28 @@ bool SyncJournalDb::checkConnect() qDebug() << "sqlite3 version" << pragma1.stringValue(0); } - pragma1.prepare("PRAGMA journal_mode=WAL;"); + // Enable WAL by default but allow switching the journal mode for debugging + static QString env_journal_mode = QString::fromLocal8Bit(qgetenv("OWNCLOUD_SQLITE_JOURNAL_MODE")); + QString journal_mode = env_journal_mode; + if (journal_mode.isEmpty()) { + journal_mode = "WAL"; + } + pragma1.prepare(QString("PRAGMA journal_mode=%1;").arg(journal_mode)); if (!pragma1.exec()) { - return sqlFail("Set PRAGMA synchronous", pragma1); + return sqlFail("Set PRAGMA journal_mode", pragma1); } else { pragma1.next(); qDebug() << "sqlite3 journal_mode=" << pragma1.stringValue(0); + } + // For debugging purposes, allow temp_store to be set + static QString env_temp_store = QString::fromLocal8Bit(qgetenv("OWNCLOUD_SQLITE_TEMP_STORE")); + if (!env_temp_store.isEmpty()) { + pragma1.prepare(QString("PRAGMA temp_store = %1;").arg(env_temp_store)); + if (!pragma1.exec()) { + return sqlFail("Set PRAGMA temp_store", pragma1); + } + qDebug() << "sqlite3 with temp_store =" << env_temp_store; } pragma1.prepare("PRAGMA synchronous = 1;"); @@ -348,6 +363,7 @@ bool SyncJournalDb::checkConnect() FileSystem::setFileHidden(databaseFilePath(), true); FileSystem::setFileHidden(databaseFilePath() + "-wal", true); FileSystem::setFileHidden(databaseFilePath() + "-shm", true); + FileSystem::setFileHidden(databaseFilePath() + "-journal", true); return rc; }