pub fn database_span<T>(
name: &str,
statement: &str,
db_system: Option<&str>,
f: impl FnOnce() -> T,
) -> TExpand description
Times a database query as a "database" span carrying its SQL, so ForgeOps can show which
statement a slow request spent its time in. Returns what f returned; outside a trace it
just runs f.
let sql = "SELECT id FROM orders WHERE customer_id = $1 AND status = 'open'";
let orders = forge_ops_tracker::database_span("load orders", sql, Some("postgresql"), || load_orders(sql));The statement is masked (every string and number replaced by ?) and cut to 4000 characters
when the span is recorded, then sent as db.statement; db_system ("postgresql", "mysql",
"sqlite", "mssql", "oracle", or any other name) goes out lowercased as db.system. Bind
values are never taken.