aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/sqlite/sqlitedatabasebackend.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/sqlite/sqlitedatabasebackend.cpp')
-rw-r--r--src/libs/sqlite/sqlitedatabasebackend.cpp21
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);