mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-15 12:51:00 +02:00
Merge f4a8269dfc into merged_master (Bitcoin PR bitcoin/bitcoin#27801)
This commit is contained in:
commit
7d1b48c888
1 changed files with 22 additions and 0 deletions
|
|
@ -35,6 +35,21 @@ static void ErrorLogCallback(void* arg, int code, const char* msg)
|
|||
LogPrintf("SQLite Error. Code: %d. Message: %s\n", code, msg);
|
||||
}
|
||||
|
||||
static int TraceSqlCallback(unsigned code, void* context, void* param1, void* param2)
|
||||
{
|
||||
auto* db = static_cast<SQLiteDatabase*>(context);
|
||||
if (code == SQLITE_TRACE_STMT) {
|
||||
auto* stmt = static_cast<sqlite3_stmt*>(param1);
|
||||
// To be conservative and avoid leaking potentially secret information
|
||||
// in the log file, only expand statements that query the database, not
|
||||
// statements that update the database.
|
||||
char* expanded{sqlite3_stmt_readonly(stmt) ? sqlite3_expanded_sql(stmt) : nullptr};
|
||||
LogPrintf("[%s] SQLite Statement: %s\n", db->Filename(), expanded ? expanded : sqlite3_sql(stmt));
|
||||
if (expanded) sqlite3_free(expanded);
|
||||
}
|
||||
return SQLITE_OK;
|
||||
}
|
||||
|
||||
static bool BindBlobToStatement(sqlite3_stmt* stmt,
|
||||
int index,
|
||||
Span<const std::byte> blob,
|
||||
|
|
@ -240,6 +255,13 @@ void SQLiteDatabase::Open()
|
|||
if (ret != SQLITE_OK) {
|
||||
throw std::runtime_error(strprintf("SQLiteDatabase: Failed to enable extended result codes: %s\n", sqlite3_errstr(ret)));
|
||||
}
|
||||
// Trace SQL statements if tracing is enabled with -debug=walletdb -loglevel=walletdb:trace
|
||||
if (LogAcceptCategory(BCLog::WALLETDB, BCLog::Level::Trace)) {
|
||||
ret = sqlite3_trace_v2(m_db, SQLITE_TRACE_STMT, TraceSqlCallback, this);
|
||||
if (ret != SQLITE_OK) {
|
||||
LogPrintf("Failed to enable SQL tracing for %s\n", Filename());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sqlite3_db_readonly(m_db, "main") != 0) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue