Bitcoin Core
27.99.0
P2P Digital Currency
|
An instance of this class represents one SQLite3 database. More...
#include <sqlite.h>
Public Member Functions | |
SQLiteDatabase ()=delete | |
SQLiteDatabase (const fs::path &dir_path, const fs::path &file_path, const DatabaseOptions &options, bool mock=false) | |
Create DB handle to real database. More... | |
~SQLiteDatabase () | |
bool | Verify (bilingual_str &error) |
void | Open () override |
Open the database if it is not already opened. More... | |
void | Close () override |
Close the database. More... | |
void | AddRef () override |
Indicate the a new database user has began using the database. More... | |
void | RemoveRef () override |
Indicate that database user has stopped using the database and that it could be flushed or closed. More... | |
bool | Rewrite (const char *skip=nullptr) override |
Rewrite the entire database on disk. More... | |
bool | Backup (const std::string &dest) const override |
Back up the entire database to a file. More... | |
void | Flush () override |
No-ops. More... | |
bool | PeriodicFlush () override |
void | ReloadDbEnv () override |
void | IncrementUpdateCounter () override |
std::string | Filename () override |
Return path to main database file for logs and error messages. More... | |
std::string | Format () override |
std::unique_ptr< DatabaseBatch > | MakeBatch (bool flush_on_close=true) override |
Make a SQLiteBatch connected to this database. More... | |
bool | HasActiveTxn () |
Return true if there is an on-going txn in this connection. More... | |
Public Member Functions inherited from wallet::WalletDatabase | |
WalletDatabase () | |
Create dummy DB handle. More... | |
virtual | ~WalletDatabase () |
Public Attributes | |
CSemaphore | m_write_semaphore |
sqlite3 * | m_db {nullptr} |
bool | m_use_unsafe_sync |
Public Attributes inherited from wallet::WalletDatabase | |
std::atomic< int > | m_refcount {0} |
Counts the number of active database users to be sure that the database is not closed while someone is using it. More... | |
std::atomic< unsigned int > | nUpdateCounter |
unsigned int | nLastSeen {0} |
unsigned int | nLastFlushed {0} |
int64_t | nLastWalletUpdate {0} |
Private Member Functions | |
void | Cleanup () noexcept EXCLUSIVE_LOCKS_REQUIRED(!g_sqlite_mutex) |
Static Private Member Functions | |
static int g_sqlite_count | GUARDED_BY (g_sqlite_mutex) |
Private Attributes | |
const bool | m_mock {false} |
const std::string | m_dir_path |
const std::string | m_file_path |
Static Private Attributes | |
static Mutex | g_sqlite_mutex |
This mutex protects SQLite initialization and shutdown. More... | |
|
delete |
wallet::SQLiteDatabase::SQLiteDatabase | ( | const fs::path & | dir_path, |
const fs::path & | file_path, | ||
const DatabaseOptions & | options, | ||
bool | mock = false |
||
) |
Create DB handle to real database.
Definition at line 116 of file sqlite.cpp.
wallet::SQLiteDatabase::~SQLiteDatabase | ( | ) |
|
inlineoverridevirtual |
Indicate the a new database user has began using the database.
Increments m_refcount
Implements wallet::WalletDatabase.
Definition at line 143 of file sqlite.h.
|
overridevirtual |
Back up the entire database to a file.
Implements wallet::WalletDatabase.
Definition at line 348 of file sqlite.cpp.
|
privatenoexcept |
Definition at line 177 of file sqlite.cpp.
|
overridevirtual |
Close the database.
Implements wallet::WalletDatabase.
Definition at line 375 of file sqlite.cpp.
|
inlineoverridevirtual |
Return path to main database file for logs and error messages.
Implements wallet::WalletDatabase.
Definition at line 167 of file sqlite.h.
|
inlineoverridevirtual |
No-ops.
SQLite always flushes everything to the database file after each transaction (each Read/Write/Erase that we do is its own transaction unless we called TxnBegin) so there is no need to have Flush or Periodic Flush.
There is no DB env to reload, so ReloadDbEnv has nothing to do
Implements wallet::WalletDatabase.
|
inlineoverridevirtual |
Implements wallet::WalletDatabase.
|
staticprivate |
bool wallet::SQLiteDatabase::HasActiveTxn | ( | ) |
Return true if there is an on-going txn in this connection.
Definition at line 384 of file sqlite.cpp.
|
inlineoverridevirtual |
Implements wallet::WalletDatabase.
|
overridevirtual |
Make a SQLiteBatch connected to this database.
Implements wallet::WalletDatabase.
Definition at line 395 of file sqlite.cpp.
|
overridevirtual |
Open the database if it is not already opened.
Implements wallet::WalletDatabase.
Definition at line 249 of file sqlite.cpp.
|
inlineoverridevirtual |
Implements wallet::WalletDatabase.
|
inlineoverridevirtual |
Implements wallet::WalletDatabase.
|
inlineoverridevirtual |
Indicate that database user has stopped using the database and that it could be flushed or closed.
Decrement m_refcount
Implements wallet::WalletDatabase.
Definition at line 144 of file sqlite.h.
|
overridevirtual |
Rewrite the entire database on disk.
Implements wallet::WalletDatabase.
Definition at line 341 of file sqlite.cpp.
bool wallet::SQLiteDatabase::Verify | ( | bilingual_str & | error | ) |
|
staticprivate |
This mutex protects SQLite initialization and shutdown.
sqlite3_config() and sqlite3_shutdown() are not thread-safe (sqlite3_initialize() is). Concurrent threads that execute SQLiteDatabase::SQLiteDatabase() should have just one of them do the init and the rest wait for it to complete before all can proceed.
|
private |
|
private |
CSemaphore wallet::SQLiteDatabase::m_write_semaphore |