mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-30 02:31:05 +02:00
Implement SQLiteDatabase::Backup
This commit is contained in:
@ -186,8 +186,30 @@ bool SQLiteDatabase::Rewrite(const char* skip)
|
|||||||
|
|
||||||
bool SQLiteDatabase::Backup(const std::string& dest) const
|
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;
|
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()
|
void SQLiteDatabase::Close()
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user