diff options
Diffstat (limited to 'src/libs/sqlite/sqlitedatabasebackend.cpp')
-rw-r--r-- | src/libs/sqlite/sqlitedatabasebackend.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libs/sqlite/sqlitedatabasebackend.cpp b/src/libs/sqlite/sqlitedatabasebackend.cpp index a42564aca5..bf9dfab6fc 100644 --- a/src/libs/sqlite/sqlitedatabasebackend.cpp +++ b/src/libs/sqlite/sqlitedatabasebackend.cpp @@ -406,6 +406,27 @@ void DatabaseBackend::setBusyTimeout(std::chrono::milliseconds timeout) sqlite3_busy_timeout(m_databaseHandle, int(timeout.count())); } +void DatabaseBackend::walCheckpointFull() +{ + int resultCode = sqlite3_wal_checkpoint_v2(m_databaseHandle, + nullptr, + SQLITE_CHECKPOINT_TRUNCATE, + nullptr, + nullptr); + + switch (resultCode) { + case SQLITE_OK: + break; + case SQLITE_BUSY: + throw DatabaseIsBusy("DatabaseBackend::walCheckpointFull: Operation could not concluded " + "because database is busy!"); + case SQLITE_ERROR: + throwException("DatabaseBackend::walCheckpointFull: Error occurred!"); + case SQLITE_MISUSE: + throwExceptionStatic("DatabaseBackend::walCheckpointFull: Misuse of database!"); + } +} + void DatabaseBackend::throwExceptionStatic(const char *whatHasHappens) { throw Exception(whatHasHappens); |