mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-10 20:03:34 -03:00
Implement SQLiteDatabase::Backup
This commit is contained in:
parent
f6f9cd6a64
commit
ac5c1617e7
1 changed files with 23 additions and 1 deletions
|
@ -186,7 +186,29 @@ bool SQLiteDatabase::Rewrite(const char* skip)
|
|||
|
||||
bool SQLiteDatabase::Backup(const std::string& dest) const
|
||||
{
|
||||
sqlite3* db_copy;
|
||||
int res = sqlite3_open(dest.c_str(), &db_copy);
|
||||
if (res != SQLITE_OK) {
|
||||
sqlite3_close(db_copy);
|
||||
return false;
|
||||
}
|
||||
sqlite3_backup* backup = sqlite3_backup_init(db_copy, "main", m_db, "main");
|
||||
if (!backup) {
|
||||
LogPrintf("%s: Unable to begin backup: %s\n", __func__, sqlite3_errmsg(m_db));
|
||||
sqlite3_close(db_copy);
|
||||
return false;
|
||||
}
|
||||
// Specifying -1 will copy all of the pages
|
||||
res = sqlite3_backup_step(backup, -1);
|
||||
if (res != SQLITE_DONE) {
|
||||
LogPrintf("%s: Unable to backup: %s\n", __func__, sqlite3_errstr(res));
|
||||
sqlite3_backup_finish(backup);
|
||||
sqlite3_close(db_copy);
|
||||
return false;
|
||||
}
|
||||
res = sqlite3_backup_finish(backup);
|
||||
sqlite3_close(db_copy);
|
||||
return res == SQLITE_OK;
|
||||
}
|
||||
|
||||
void SQLiteDatabase::Close()
|
||||
|
|
Loading…
Reference in a new issue