in src/plugin/plugin_pdo.rs [87:115]
fn hook_pdo_construct(&self) -> (Box<BeforeExecuteHook>, Box<AfterExecuteHook>) {
(
Box::new(|request_id, execute_data| {
validate_num_args(execute_data, 1)?;
let this = get_this_mut(execute_data)?;
let handle = this.handle();
hack_dtor(this, Some(pdo_dtor));
let dsn = execute_data.get_parameter(0);
let dsn = dsn.as_z_str().context("dsn isn't str")?.to_str()?;
debug!(dsn, handle, "construct PDO");
let dsn: Dsn = dsn.parse()?;
debug!(?dsn, "parse PDO dsn");
let span = create_exit_span_with_dsn(request_id, "PDO", "__construct", &dsn)?;
DSN_MAP.insert(handle, dsn);
Ok(Box::new(span))
}),
Box::new(move |_, span, _, _| {
let mut span = span.downcast::<Span>().unwrap();
log_exception(&mut *span);
Ok(())
}),
)
}