mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-26 15:56:18 +02:00
* Only do "pragma journal_mode = ..." if the current journal mode
differs from the desired mode. There is an open SQLite ticket `Executing "PRAGMA journal_mode" may delete journal file while it is in use.'
This commit is contained in:
parent
bf0dde9597
commit
e4907411c2
1 changed files with 10 additions and 1 deletions
|
@ -303,7 +303,16 @@ void LocalStore::openDB(bool create)
|
|||
The downside is that it doesn't work over NFS, so allow
|
||||
truncate mode alternatively. */
|
||||
string mode = queryBoolSetting("use-sqlite-wal", true) ? "wal" : "truncate";
|
||||
if (sqlite3_exec(db, ("pragma main.journal_mode = " + mode + ";").c_str(), 0, 0, 0) != SQLITE_OK)
|
||||
string prevMode;
|
||||
{
|
||||
SQLiteStmt stmt;
|
||||
stmt.create(db, "pragma main.journal_mode;");
|
||||
if (sqlite3_step(stmt) != SQLITE_ROW)
|
||||
throw SQLiteError(db, "querying journal mode");
|
||||
prevMode = string((const char *) sqlite3_column_text(stmt, 0));
|
||||
}
|
||||
if (prevMode != mode &&
|
||||
sqlite3_exec(db, ("pragma main.journal_mode = " + mode + ";").c_str(), 0, 0, 0) != SQLITE_OK)
|
||||
throw SQLiteError(db, "setting journal mode");
|
||||
|
||||
/* Increase the auto-checkpoint interval to 8192 pages. This
|
||||
|
|
Loading…
Reference in a new issue