From b4df8fdb19fcded7e6d491ecf0b705cac0ec76a1 Mon Sep 17 00:00:00 2001 From: Andrew Chow Date: Tue, 26 May 2020 20:53:57 -0400 Subject: [PATCH] Implement SQLiteDatabase::Rewrite Rewrite uses the VACUUM command which does exactly what we want. A specific advertised use case is to compact a database and ensure that any deleted data is actually deleted. --- src/wallet/sqlite.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/wallet/sqlite.cpp b/src/wallet/sqlite.cpp index 1889313dd59..f9c4dfb2a50 100644 --- a/src/wallet/sqlite.cpp +++ b/src/wallet/sqlite.cpp @@ -181,7 +181,9 @@ void SQLiteDatabase::Open() bool SQLiteDatabase::Rewrite(const char* skip) { - return false; + // Rewrite the database using the VACUUM command: https://sqlite.org/lang_vacuum.html + int ret = sqlite3_exec(m_db, "VACUUM", nullptr, nullptr, nullptr); + return ret == SQLITE_OK; } bool SQLiteDatabase::Backup(const std::string& dest) const