dogdata_sqlx/
sqlx_otel_span_macro.rs

1use tracing::Span;
2
3use crate::execute::InstrumentedPool;
4
5#[macro_export]
6macro_rules! query_span_with_metadata {
7    ($sql:expr, $metadata:expr) => {{
8        tracing::span!(
9            tracing::Level::INFO,
10            "query",
11            span.kind = "client",
12            span.type = "sql",
13            operation = "query",
14            db.statement = %$sql,
15            peer.hostname = %$metadata.host,
16            peer.service = %$metadata.database,
17            out.host = %$metadata.host,
18            out.port = %$metadata.port,
19            db.system = %$metadata.system,
20            db.instance = %$metadata.database,
21            db.name = %$metadata.database,
22        )
23    }};
24}
25
26pub(crate) fn query_span_with_metadata<P: InstrumentedPool>(sql: &str, pool: &P) -> Span {
27    let metadata = pool.connection_info();
28    crate::query_span_with_metadata!(sql, metadata)
29}